numpy标准差与scipy stats标准差的结果不同

czq61nw1  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(162)

标准差法和标准差法给予的结果略有不同。我不明白为什么。有人能给我解释一下吗?
这里有一个例子。

import numpy as np
import scipy.stats
ar = np.arange(20)
print(np.std(ar))
print(scipy.stats.tstd(ar))

返回

5.766281297335398
5.916079783099616
voase2hg

voase2hg1#

它在我的脑海里一段时间前..得到同样的价值观

import numpy as np
import scipy.stats
ar = np.arange(20)
print(np.std(ar, ddof=1))
print(scipy.stats.tstd(ar))

输出编号

5.916079783099616
5.916079783099616

我的导师常说
--〉ddof=1,如果您正在计算取自完整数据集的样本的np.std()
---〉ddof=0如果计算的是全部人口

bnlyeluc

bnlyeluc2#

使用np.std()计算标准差:

x = np.abs(ar - ar.mean())**2
std = np.sqrt(np.sum(x) / len(ar)) # 5.766281297335398

但是,对于scipy.stats.tstd,您计算的是修剪后的标准差:

x = np.abs(ar - ar.mean())**2
std = np.sqrt(np.sum(x) / (len(ar) - 1)) # 5.916079783099616

请注意,当使用np.std()时,计算的是x的平均值的平方根(x的平均值是x的和除以x的长度)。当计算修剪后的版本时,计算的是除以n-1n是数组的长度。

相关问题