如何在statsmodels中修复.predict()函数?

时间:2016-03-16 14:49:36

标签: python python-2.7 python-3.x linear-regression least-squares

我试图预测明天12 UTC的温度在1个位置。为了预测,我使用了statmodels模块的基本线性回归模型。我的代码如下:

x = ds_main
X = sm.add_constant(x)
y = ds_target_t
model = sm.OLS(y,X,missing='drop')
results = model.fit()

摘要显示适合度为" good":

enter image description here

但是当我尝试使用我认为是我的testset的新数据集来预测值时,会出现问题。后者具有相同的列号和相同的变量名称,但.predict()函数返回NaN数组,尽管我的testset具有值......

xnew = ts_main
Xnew = sm.add_constant(xnew)
ynewpred = results.predict(Xnew)

我真的不明白问题出在哪里......

更新:我想我有一个解释:我的Xnew数据帧包含NaN值。 Statmodels函数.fit()允许删除缺失值(NaN)但不允许删除.predict()函数。因此,它返回一个NaN值数组...

但这是"为什么",但我仍然没有得到"怎么"理由解决它...

1 个答案:

答案 0 :(得分:0)

statsmodels.api.OLS默认不接受带NA值的数据。因此,如果您使用此功能,则需要先删除NA值。

但是,如果您使用statsmodels.formula.api.ols,那么它会自动删除NA值以运行回归并为您做出预测。

所以你可以试试这个:

import statsmodels.formula.api as smf
lm = smf.ols(formula = "y~X", pd.concat([y, X], axis = 1)).fit()
lm.predict(Xnew)