大熊猫和麻木之间的标准偏差不同.为什么和哪一个是正确的? (相对差别是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?