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

为什么numpy std()与matlab std()给出不同的结果?,第1张

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

NumPy函数

np.std
采用一个可选参数
ddof
:“自由度增量”。默认情况下是
0
。对其进行设置
1
以获取MATLAB结果:

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

要添加更多上下文,在计算方差(标准偏差为平方根)时,通常将其除以我们拥有的值的数量。

但是,如果我们

N
从较大的分布中选择元素的随机样本并计算方差,则除以
N
可能导致实际方差的低估。为了解决这个问题,我们可以将除以(自由度)的数字降低为小于
N
(通常为
N-1
)的数字。该
ddof
参数允许我们按指定的数量更改除数。

除非另有说明,否则NumPy将计算方差(,除以)的 有偏
估计量。如果要使用整个分布(而不是从较大的分布中随机选择的值的子集),这就是您想要的。如果给定参数,则NumPy除以。

ddof=0``N``ddof``N- ddof

MATLAB的默认行为

std
是通过除以校正样本方差的偏差
N-1
。这消除了标准偏差中的某些(但可能不是全部)偏差。如果您在较大分布的随机样本上使用该函数,则可能正是您想要的。

@hbaderts的不错回答给出了进一步的数学细节。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5644181.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存