Почему все коэффициенты, кроме первого (пересечение), получают значение, очень близкое к нулю (e ^ -17 или низкое) в модели регрессии OLS? - PullRequest
0 голосов
/ 04 января 2019

Я написал следующий код на python, используя пакет statsmodels , для создания OLS регрессионной модели.Я попробовал код с различными наборами данных и получил модель со всеми значениями коэффициентов, близкими к нулю, кроме первого (перехвата) коэффициента.Что может быть не так с кодом?

data1 = pandas.concat([Y, X], axis = 1)
dta = lagmat2ds(data1, mxlg, trim='both', dropex=1)
dtaown = sm.add_constant(dta[:, 0:(mxlg + 1)], prepend = False)
dtajoint = sm.add_constant(dta[:, 0:], prepend = False)
res2down = sm.OLS(dta[:, 0], dtaown).fit()
res2djoint = sm.OLS(dta[:, 0], dtajoint).fit()

Здесь sm - это statsmodels.api как sm , и для примера тестирования вы можете рассмотретьнабор данных sm.datasets.spector .

1 Ответ

0 голосов
/ 04 января 2019

Структура ваших данных - вы моделируете Y против Y|lag Y|constant.Обратите внимание, что в документации OLS (https://www.statsmodels.org/dev/generated/statsmodels.regression.linear_model.OLS.html) указано, что -

Никакая константа не добавляется моделью, если вы не используете формулы.

Так чтопервое значение, которое вы видите, это не перехват, а коэффициент подгонки Y против Y - который будет 1.0.

То, что вы можете проверить, чтобы получить ощутимые результаты, это исключитьY от таких предсказателей -

res2down = sm.OLS(dta[:, 0], dtaown[:, 1:]).fit()
...