Scipy.stats.sem вычислить стандартную ошибку - PullRequest
0 голосов
/ 03 марта 2019

Почему я получаю разные результаты?

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 голосов
/ 03 марта 2019

Функция scipy.stats.sem использует значение по умолчанию ddof=1 для параметра количества степеней свободы, в то время как numpy.std использует ddof=0 по умолчанию.Это также выделено в документах :

Значение по умолчанию для ddof отличается от значения по умолчанию (0), используемого другими подпрограммами, содержащими ddof, такими как np.std и np.nanstd.

Следовательно, вы получите:

>>> 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
...