Вопрос:

scipy linregress function ошибочная стандартная ошибка возврата?

python scipy regression

3408 просмотра

4 ответа

7008 Репутация автора

У меня странная ситуация с 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 у Сципи. Кто-нибудь знает, что здесь происходит? Любой альтернативный способ получить стандартную ошибку регрессии в Python, не переходя на Rpy ?

Автор: Thomas Browne Источник Размещён: 10.01.2010 09:19

Ответы (4)


8 плюса

7008 Репутация автора

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

Во всяком случае все еще ищет эквивалент STEYX в Python.

Автор: Thomas Browne Размещён: 10.01.2010 10:15

5 плюса

83439 Репутация автора

Решение

Вы можете попробовать пакет 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
Автор: ars Размещён: 11.01.2010 05:36

2 плюса

43 Репутация автора

да, это правда - стандартная оценка градиента - это то, что возвращает linregress; стандартная оценка оценки (Y) связана, тем не менее, и вы можете вернуться обратно в SEE, умножив стандартную ошибку градиента (SEG), которую дает вам линейное отклонение: SEG = SEE / sqrt (сумма (X - среднее значение) X) ** 2)

Stack Exchange не обрабатывает латекс, но математика здесь, если вам интересно, под заголовком «Анализировать данные образца».

Автор: M.R Размещён: 06.02.2018 06:34

0 плюса

1 Репутация автора

Вычисление "std err on y" в excel на самом деле является стандартным отклонением значений y. То же самое для std err на x. Число 2 на последнем этапе - это степень свободы приведенного вами примера. Это процесс, и результат находится в хорошем согласии с тем, что дает нам Excel

Автор: Claude Mao Размещён: 22.02.2019 04:48
Вопросы из категории :
32x32