我试图预测明天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":
但是当我尝试使用我认为是我的testset的新数据集来预测值时,会出现问题。后者具有相同的列号和相同的变量名称,但.predict()函数返回NaN数组,尽管我的testset具有值......
xnew = ts_main
Xnew = sm.add_constant(xnew)
ynewpred = results.predict(Xnew)
我真的不明白问题出在哪里......
更新:我想我有一个解释:我的Xnew数据帧包含NaN值。 Statmodels函数.fit()允许删除缺失值(NaN)但不允许删除.predict()函数。因此,它返回一个NaN值数组...
但这是"为什么",但我仍然没有得到"怎么"理由解决它...
答案 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)