【问题标题】:Reproducing OLS prediction Python statsmodel重现 OLS 预测 Python statsmodel
【发布时间】:2018-06-08 19:19:00
【问题描述】:

我使用 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

我错过了什么?

注意使用 sklearn 中的 LinearRegression 我得到相同的值 0.699。所以我显然错过了一些东西。但我无法理解它。

【问题讨论】:

    标签: python linear-regression statsmodels predict


    【解决方案1】:

    我所缺少的确实很简单和尴尬。 我切换了 2 个变量名称,导致手动预测错误。 所以,公式是正确的:

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

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

    【讨论】:

      猜你喜欢
      • 2020-09-10
      • 1970-01-01
      • 1970-01-01
      • 2015-12-12
      • 2015-06-29
      • 1970-01-01
      • 2017-06-05
      • 2018-06-23
      • 2021-10-14
      相关资源
      最近更新 更多