再现OLS预测Python statsmodel

时间:2018-06-08 19:19:01

标签: python linear-regression statsmodels predict

我使用statsmodels OLS在Python中训练了一个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

我错过了什么?

N.b。使用sklearn中的LinearRegression得到相同的0.699值。所以我明显遗漏了一些东西。但我无法理解它。

1 个答案:

答案 0 :(得分:0)

我所缺少的确非常简单和令人尴尬。 我切换了两个变量名,导致手动错误的预测。 所以,公式是正确的:

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

在发现它之前,我只是通过保存模型并导入它来执行预测来解决这个问题。