[英]How to properly set start/end params of statsmodels.predict function
[英]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.