scipy linregress функционируют ошибочный возврат стандартной погрешности?

У меня есть странная ситуация с scipy.stats.linregress, кажется, возвращает неправильную стандартную погрешность:

from scipy import stats
x = [5.05, 6.75, 3.21, 2.66]
y = [1.65, 26.5, -5.93, 7.96]
gradient, intercept, r_value, p_value, std_err = stats.linregress(x,y)
>>> gradient
5.3935773611970186
>>> intercept
-16.281127993087829
>>> r_value
0.72443514211849758
>>> r_value**2
0.52480627513624778
>>> std_err
3.6290901222878866

Принимая во внимание, что Excel возвращает следующее:

 slope: 5.394

 intercept: -16.281

 rsq: 0.525

 steyX: 11.696

steyX является функцией стандартной погрешности Excel, возвращаясь 11.696 по сравнению с 3.63 scipy. Кто-либо знает то, что продолжается здесь? Какой-либо альтернативный способ получить стандартную погрешность регрессии в Python, не идя в Rpy?

7
задан Gabriel 16 July 2015 в 13:17
поделиться

2 ответа

Вы можете попробовать пакет StatsModels :

In [37]: import statsmodels.api as sm

In [38]: x = [5.05, 6.75, 3.21, 2.66]

In [39]: y = [1.65, 26.5, -5.93, 7.96]

In [40]: X = sm.add_constant(x) # intercept

In [41]: model = sm.OLS(y, X)

In [42]: fit = model.fit()

In [43]: fit.params
Out[43]: array([  5.39357736, -16.28112799])

In [44]: fit.rsquared
Out[44]: 0.52480627513624789

In [45]: np.sqrt(fit.mse_resid)
Out[45]: 11.696414461570097
6
ответ дан 6 December 2019 в 12:51
поделиться

Мне только что было проинформировано со стороны Scipy пользовательской группы, что STD_ERR здесь представляет стандартную ошибку градиента линии, а не стандартную ошибку прогнозируемых y, согласно Excel. Тем не менее, пользователи этой функции должны быть осторожны, потому что это не всегда было не всегда поведение этой библиотеки - он использовался для вывода точно так же, как Excel, а замена, по-видимому, произошло за последние несколько месяцев.

В любом случае все еще ищет эквивалент Стейк в Python.

8
ответ дан 6 December 2019 в 12:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: