数学计算 本地计算 开箱即用 内置示例 不留痕迹

标准差与方差计算器

输入任意一组数据(逗号、空格或换行分隔),得到总体与样本两套方差与标准差,并列出四分位数、四分位距、极差、众数、标准误与变异系数。

两组成绩平均分相同,波动可能天差地别——平均数只回答「整体在哪」,标准差才回答「散得开不开」。这页把一组数据(逗号空格换行随便粘)一口气算完:两套口径的标准差和方差、四分位与极差、变异系数等十来个统计量一次给全;最常踩的坑是 Excel 里 STDEV.P 和 STDEV.S 用错,下面有专门说明。

总体 vs 样本是最大口径坑:总体方差除以 n,样本方差除以 n−1(贝塞尔校正,补偿用样本估计总体的偏差)——n=1 时样本标准差无定义。Excel 的 STDEV.P 是总体、STDEV.S 是样本;numpy 默认 ddof=0(总体),pandas 默认 ddof=1(样本),跨工具对数先对齐口径。

使用步骤

  1. 粘贴一组数据(逗号、空格或换行分隔均可)。
  2. 看总体与样本两套方差、标准差,按场景取用。
  3. 看四分位数与 IQR(箱线图口径)、众数、变异系数。
  4. 复制结果;写报告注明 n 与口径(总体/样本)。

计算原理与示例

标准差是怎么一步步算出来的

先求平均数,再求每个数与平均数的差(离差),把每个离差平方后相加得到离差平方和,最后除以个数再开方。以 2, 4, 4, 4, 5, 5, 7, 9 为例:平均数 5、离差平方和 32,总体方差 32 ÷ 8 = 4,总体标准差 2;样本口径为 32 ÷ 7 ≈ 4.5714,样本标准差约 2.1381。

总体除以 n、样本除以 n−1:该用哪个

数据本身就是全部研究对象(全班 40 人的成绩、全年 12 个月的销量)时用总体口径除以 n;数据只是更大总体中抽出的一个样本时用样本口径除以 n−1。因为样本平均数是用同一批数据算出来的,离差会系统性偏小,除以自由度 n−1 做无偏校正。n = 10 时两种口径相差约 5.4%,n = 100 时只差约 0.5%,数据越多差别越小。

四分位数为什么和 Excel 算的不一样

本工具的四分位采用中位数法:排序后用中位数把数据分成两半,两半各自再取中位数;数据个数为奇数时,中位数本身不参与任何一半。Excel 的 QUARTILE.INC 用的是位置 (n−1) 的线性插值,所以 1~11 这组数据它给出 Q1 = 3.5、Q3 = 8.5,本工具给出 3 和 9。两种都是通行口径,写报告时注明用哪一种即可。

计算依据:总体方差 σ² = Σ(xᵢ−μ)²/n、样本方差 s² = Σ(xᵢ−x̄)²/(n−1),标准差取各自平方根;四分位数采用中位数法(奇数个时中位数不参与两半),与 Excel QUARTILE.INC 的线性插值口径不同;标准误 = s/√n,变异系数 = s/均值。

代码示例

JavaScript 总体与样本两套口径

function stats(xs) {
  const n = xs.length;
  const mean = xs.reduce((a, b) => a + b, 0) / n;
  const ss = xs.reduce((a, x) => a + (x - mean) ** 2, 0);
  return {
    mean,
    varPop: ss / n,                    // 总体(除以 n)
    varSample: n > 1 ? ss / (n - 1) : NaN   // 样本(除以 n−1)
  };
}

stats([2, 4, 4, 4, 5, 5, 7, 9]);   // varPop: 4, varSample: 4.571

Python statistics 与 numpy 口径

import statistics as st
import numpy as np

xs = [2, 4, 4, 4, 5, 5, 7, 9]

st.pstdev(xs)      # 2.0(总体)
st.stdev(xs)       # 2.138(样本,n−1)
np.std(xs)         # 2.0(numpy 默认 ddof=0 总体)
np.std(xs, ddof=1) # 2.138(样本)

# pandas 的 .std() 默认 ddof=1,与 numpy 相反,注意

常见问题

标准差和方差到底有什么区别?

方差是离差平方的平均数,单位是原数据的平方(成绩的方差单位是「分²」);标准差是方差的算术平方根,单位与原数据一致。所以描述波动大小时通常报标准差,做方差分析、看平方和时才用方差。上面例题:方差 4、标准差 2。

总体标准差和样本标准差该选哪一个?

数据就是全部研究对象(全班 40 人、全部 12 个月)用除以 n;数据只是从更大总体里抽出来的一部分(从全校抽 30 人)用除以 n−1。同一组数据两者只差一个系数 √(n/(n−1)):n = 10 时样本口径比总体大约 5.4%,n = 100 时只大约 0.5%。

为什么样本标准差要除以 n−1 而不是 n?

样本平均数是拿样本自己算出来的,数据会天然「贴近」这个平均数,离差平方和偏小,除以 n 会系统性低估真实波动。除以自由度 n−1 可以把这个偏差校正回来(无偏估计)。只有一个数据时 n−1 = 0,样本标准差无定义,本工具会提示至少需要 2 个数据。

四分位数为什么和 Excel 算的不一样?

四分位有两套通行口径。本工具用中位数法(奇数个时中位数不参与两半),Excel 的 QUARTILE.INC 用 (n−1) 位置线性插值。以 1 到 11 为例:本工具 Q1 = 3、Q3 = 9,Excel 得 3.5 与 8.5。两种都正确,关键是注明口径、别混用。

标准差多大才算波动大?

不能只看绝对值,要看变异系数(标准差 ÷ 平均数)。例题均值 5、标准差 2,变异系数 40%,属于波动很大。经验上变异系数低于 15% 比较稳定。同样是 80 分的平均分:标准差 4(5%)说明水平整齐,标准差 16(20%)说明两极分化严重。

数据里有极端值,标准差还可靠吗?

标准差先把离差平方,极端值会被放大,所以对离群点很敏感。1, 2, 3, 4, 100 这组数:均值 22、总体标准差约 39.0,看起来「波动巨大」,但前四个数其实只差 3。这种数据更适合报告五数概括(最小值、Q1、中位数、Q3、最大值)与四分位距。

只有一个数据能算标准差吗?

不能。一个数据谈不上波动:总体方差按定义是 0(所有离差都是 0),样本方差因为要除以 n−1 = 0 而无定义。本工具在样本口径下会显示「—」并提示至少需要 2 个数据,切成总体口径则输出 0。

一组数全都一样,标准差是多少?

是 0。例如 7, 7, 7, 7:每个离差都是 0,离差平方和 0,方差与标准差都是 0,变异系数也是 0。此时众数为 7。标准差为 0 说明数据完全没有波动,但在统计上通常意味着样本区分度为 0。

延伸阅读

来自本站原创文章,讲清这个工具背后的算法与口径。