Scipy.stats.sem标准误差的计算

时间:2019-03-03 11:19:54

标签: python scipy standard-error

为什么我得到不同的结果?

from scipy.stats import sem
import numpy as np
l = [0,2,4,5,6,7]
print(sem(l))
print(np.std(l)/np.sqrt(len(l)))
  

1.0645812948447542

     

0.9718253158075502

1 个答案:

答案 0 :(得分:1)

scipy.stats.sem函数的自由度参数使用默认值ddof=1,而numpy.std默认使用ddof=0docs中也突出显示了此内容:

  

ddof的默认值不同于其他包含ddof的例程(例如np.std和np.nanstd)使用的默认值(0)。

因此,您得到:

>>> print(sem(l))
1.06458129484
>>> print(sem(l, ddof=0))
0.971825315808
>>> print(sem(l, ddof=1))
1.06458129484

>>> print(np.std(l)/np.sqrt(len(l)))
0.971825315808
>>> print(np.std(l, ddof=0)/np.sqrt(len(l)))
0.971825315808
>>> print(np.std(l, ddof=1)/np.sqrt(len(l)))
1.06458129484