python – 不同的标准在大熊猫vs numpy

大熊猫和麻木之间的标准偏差不同.为什么和哪一个是正确的? (相对差别是3.5%,不应该来自四舍五入,这在我看来很高).

import numpy as np
import pandas as pd
from StringIO import StringIO

a='''0.057411
0.024367
 0.021247
-0.001809
-0.010874
-0.035845
0.001663
0.043282
0.004433
-0.007242
0.029294
0.023699
0.049654
0.034422
-0.005380'''


df = pd.read_csv(StringIO(a.strip()),delim_whitespace=True,header=None)

df.std()==np.std(df) # False
df.std() # 0.025801
np.std(df) # 0.024926

(0.024926 - 0.025801) / 0.024926 # 3.5% relative difference

我使用这些版本:

熊猫:
‘0.14.0’
numpy的:
‘1.8.1’

解决方法

简而言之,既不是“不正确的”.熊猫使用
unbiased estimator(N-1分母),而Numpy默认不使用.

为了使它们的行为相同,将ddof = 1传递给numpy.std().

有关进一步讨论,请参阅

> Can someone explain biased/unbiased population/sample standard deviation?
> Population variance and sample variance.
> Why divide by n-1?

dawei

【声明】:丽水站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。