繁体   English   中英

使用statsmodels预测置信区间

[英]Predicting confidence interval with statsmodels

我正在建立一个线性模型,如下所示:

import statsmodels.api as sm
from statsmodels.stats.outliers_influence import summary_table
import numpy as np
import random

x = np.arange(1,101, 1)
y = random.sample(range(1,1000), 100)

X = sm.add_constant(x)
regr = sm.OLS(y, X)
fit = regr.fit()

st, data, ss2 = summary_table(fit, alpha=0.05)

我可以根据data确定标准误差和置信区间。

现在,我想预测新数据的置信区间,如下所示:

new_data = [102, 103, 104, 105]

fit.get_prediction(new_data)

但这返回:

Traceback (most recent call last):

  File "<ipython-input-168-372d2610946d>", line 14, in <module>
    fit.get_prediction(new)

  File "/Users/spotter/anaconda3/lib/python3.6/site-packages/statsmodels/regression/linear_model.py", line 2138, in get_prediction
    weights=weights, row_labels=row_labels, **kwds)

  File "/Users/user/anaconda3/lib/python3.6/site-packages/statsmodels/regression/_prediction.py", line 163, in get_prediction
    predicted_mean = self.model.predict(self.params, exog, **pred_kwds)

  File "/Users/user/anaconda3/lib/python3.6/site-packages/statsmodels/regression/linear_model.py", line 261, in predict
    return np.dot(exog, params)

ValueError: shapes (1,4) and (2,) not aligned: 4 (dim 1) != 2 (dim 0

由于使用截距训练了模型,因此在创建new_data (=添加1的列)时,还需要将其包括在内。

new_data = sm.add_constant([102, 103, 104, 105])
result = fit.get_prediction(new_data)
result.conf_int()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM