为什么numpy std()给出了与matlab std()不同的结果?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (55)

我尝试将MATLAB代码转换为numpy,并指出numpy与std函数有不同的结果。

在MATLAB中

std([1,3,4,6])
ans =  2.0817

在裸体

np.std([1,3,4,6])
1.8027756377319946

这正常吗?我该怎么处理呢?

提问于
用户回答回答于

NumPy函数np.std接受可选参数ddof*“自由度”。默认情况下,这是0...。把它设置为1为了得到MATLAB的结果:

>>> np.std([1,3,4,6], ddof=1)
2.0816659994661326

用户回答回答于

标准差是方差的平方根。随机变量的方差X定义为

因此,方差的估计量是

其中

表示样本平均值。随机选择

,可以看出,该估计量不是收敛于实际方差,而是收敛到

如果随机选择样本并估计样本均值和方差,则必须使用校正(无偏)估计量。

它将汇聚到

修正项

扫码关注云+社区