用数据数组中的样本计算值的标准差时,只取一部分数据?例如,我有一个包含数据的表,其中有一列 - 差异,它有一百行数据。有了这样的条目 - sigma = ms['difference'].std(ddof=1),系统会只取一部分数据进行计算还是全部一百行?
用数据数组中的样本计算值的标准差时,只取一部分数据?例如,我有一个包含数据的表,其中有一列 - 差异,它有一百行数据。有了这样的条目 - sigma = ms['difference'].std(ddof=1),系统会只取一部分数据进行计算还是全部一百行?
简而言之:获取所有数据。
更多: 根据文档*:“在计算中,使用除数 N - ddof,其中 N 表示元素的数量。” 即抽取的数据量保持不变(这是合乎逻辑的,为什么要按照未知的标准“抽取”一部分样本?)。
但结果将取决于这个增量。
通常,标准偏差计算为
x.sum() / N 其中 N = len(x)
x 本身 = abs(a - a.mean())**2。
但是对于 ddof = 0 是这样。当 ddof 发生变化时,除数也会发生变化,例如,当 ddof = 1 时,除数将变为 N-1。
从实际的角度来看,增加 ddof 会导致标准偏差的增加。
例如,对于从 0 到 9 的 10 个数字的数组,标准差的变化如下:
2.87->3.03->3.12 分别增加 ddof 0->1->1.5。
这也是合乎逻辑的。由于自由度的数量是统计量的最终计算中可以变化的值的数量,通过增加 delta(这是这些自由度的减少),我们实际上固定了一个参数,减少样本的“自由度”,从而增加了方差。
* https://numpy.org/doc/stable/reference/generated/numpy.std.html#:~:text=Means%20Delta%20Degrees%20of%20Freedom,By%20default%20ddof%20is%20zero。