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()
...
Это одинаково для всех моделей, за исключением некоторых моделей временных рядов, в которых есть возможность добавить константу или тренд.
В интерфейсе формулы константа добавляется по умолчанию.