Python statsmodels возвращаемых значений отсутствует

Я пытаюсь использовать надежные линейные модели из statsmodels на простом тестовом наборе данных xy. Однако в качестве возвращаемых значений с model.params я получаю только одно значение. Как я могу получить наклон и перехват посадки? Минимальный пример (в котором я пытаюсь исключить выбросы из соответствия, следовательно, rlm):

import statsmodels.api as sm
a = np.array([1,2,3,4,5,6,7,8,9])
b = 2. * np.array([1,2,9,4,5,6,7,13,9])
model = sm.RLM(b, a, M=sm.robust.norms.HuberT()).fit()
model.params

Последняя строка только возвращает array([2.]), Я попробовал то же самое с ols из того же пакета, который дает мне перехват и наклон в ответ.

1 ответ

Решение

statsmodels не добавляет автоматически константу или перехват, если вы используете массивы. Существует вспомогательная функция add_constant для добавления константы.

>>> import statsmodels.api as sm
>>> a = np.array([1,2,3,4,5,6,7,8,9])
>>> b = 2. * np.array([1,2,9,4,5,6,7,13,9])
>>> model = sm.RLM(b, a, M=sm.robust.norms.HuberT()).fit()
>>> model.params
array([ 2.])

с постоянной

>>> a2 = sm.add_constant(a)
>>> model = sm.RLM(b, a2, M=sm.robust.norms.HuberT()).fit()
>>> model.params
array([  2.85893087e-10,   2.00000000e+00])
>>> print model.summary()
...

Это одинаково для всех моделей, за исключением некоторых моделей временных рядов, в которых есть возможность добавить константу или тренд.

В интерфейсе формулы константа добавляется по умолчанию.

Другие вопросы по тегам