繁体   English   中英

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

[英]How to fix .predict() function in statsmodels?

我正在尝试预测明天1点在UTC的温度。 为了进行预测,我将基本线性回归模型与statmodels模块一起使用。 我的代码如下:

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

摘要显示拟合度为“良好”:

在此处输入图片说明

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

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

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

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

但这是“为什么”,但是我仍然不知道“如何”解决它的原因...

默认情况下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)

暂无
暂无

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

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