【问题标题】:numpy standard deviation does not give the same result as scipy stats standard deviationnumpy 标准差与 scipy stats 标准差的结果不同
【发布时间】:2022-11-01 22:02:23
【问题描述】:
Scipy 和 numpy 标准差方法给出的结果略有不同。我不明白为什么。谁能给我解释一下?
这是一个例子。
import numpy as np
import scipy.stats
ar = np.arange(20)
print(np.std(ar))
print(scipy.stats.tstd(ar))
返回
5.766281297335398
5.916079783099616
【问题讨论】:
标签:
python
numpy
scipy
statistics
【解决方案1】:
前段时间在我的脑海中..为了获得相同的价值观
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
【解决方案2】:
使用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