[英]Keep nan in result when perform statsmodels OLS regression in python
我想使用 python 的 statsmodels package 執行 OLS 回歸。但是我的數據集中有 nans。 目前,我知道我可以在執行 OLS 回歸時使用 missing='drop' 選項,但一些結果(擬合值或殘差)將具有與原始 y 變量不同的長度。
我以以下代碼為例:
import numpy as np
import statsmodels.api as sm
yvars = np.array([1.0, 6.0, 3.0, 2.0, 8.0, 4.0, 5.0, 2.0, np.nan, 3.0])
xvars = np.array(
[
[1.0, 8.0],
[8.0, np.nan],
[np.nan, 3.0],
[3.0, 6.0],
[5.0, 3.0],
[2.0, 7.0],
[1.0, 3.0],
[2.0, 2.0],
[7.0, 9.0],
[3.0, 1.0],
]
)
res = sm.OLS(yvar, sm.add_constant(xvars), missing='drop').fit()
res.resid
結果如下:
array([-0.71907958, -1.9012464 , 1.78811122, 1.18983701, 2.63854267,
-1.45254075, -1.54362416])
我的問題是結果是一個長度為 7 的數組(在刪除 nans 之后),但 yvar 的長度為 10。那么,如果我想返回與 yvar 長度相同的殘差,並且只是 output nan 在任何 position 中怎么辦yvar 或 xvars 中至少有 1 個 nan?
基本上,我想要得到的結果是:
array([-0.71907958, nan , nan , -1.9012464 , 1.78811122, 1.18983701, 2.63854267,
-1.45254075, nan , -1.54362416])
這在 statsmodels 中很難實現。 所以用戶需要自己處理。
結果屬性(如 fittedvalues 和 resid)適用於實際使用的樣本。
結果實例的predict
方法在提供的預測數據exog
數組中保留了 nans,但其他方法和屬性則沒有。
results.predict(xvars_all)
一種解決方法:
使用 pandas DataFrame 作為數據。
然后,結果實例的 AFAIR、 resid
和fittedvalues
是具有適當索引的 pandas 系列。 然后可以使用它來將這些添加到原始索引或 DataFrame。這就是predict
方法的作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.