Воспроизведение предсказания OLS Python statsmodel - PullRequest
0 голосов
/ 08 июня 2018

Я обучил модель OLS на Python, используя statsmodels OLS.С помощью приведенного ниже кода я обучил модель:

import statsmodels.api as sm
X2 = sm.add_constant(lin_x_train)
est = sm.OLS(lin_y_train, X2)
est2 = est.fit()

Используя est2.params, я получаю следующие параметры:

const       -0.394654
pow2         0.920915
eth_36hr    -0.028754
eth_24dhr   -0.068346
eth_16hr     0.064768
eth_72hr     0.001774
eth_48hr     0.001239
eth_24hr     0.026940
eth_2hr     -0.163568
eth_3hr     -0.042497
eth_4hr      0.033180
eth_5hr     -0.029850
eth_6hr     -0.040417

Теперь я хочу предсказать следующий случай:

pow2         0
eth_36hr    2.91
eth_24dhr   1.34
eth_16hr    1.13
eth_72hr    13
eth_48hr    6.66
eth_24hr    -9.89
eth_2hr     -3.7
eth_3hr     2.37
eth_4hr     2.36
eth_5hr     -2.28
eth_6hr     -5.27

Поскольку я обучил модель OLS, я предполагал, что она просто:

y = a + B1 * X1 + B2 *X2 + .... Bn*Xn

Когда я сам вычисляю это, я получаю значение Y, равное 0,132, однако используя:

Xnew = newcase
Xnew = sm.add_constant(Xnew)
est2.predict(Xnew) 

Я получаю значение 0,699

Чего мне не хватает?

Nb с помощью LinearRegression от sklearn Я получаю то же значение 0,699.Так что я явно что-то упускаю.Но я не могу разобраться с этим.

1 Ответ

0 голосов
/ 15 июня 2018

То, чего мне не хватало, было действительно довольно простым и смущающим.Я переключил 2 названия переменных, что привело к неправильным прогнозам вручную.Итак, формула была правильной:

y = a + B1 * X1 + B2 *X2 + .... Bn*Xn

Прежде чем обнаружить ее, я просто обошел вокруг, сохранив модель и импортировав ее для выполнения прогнозов.

...