簡體   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