簡體   English   中英

在 python 中執行 statsmodels OLS 回歸時將 nan 保留在結果中

[英]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、 residfittedvalues是具有適當索引的 pandas 系列。 然后可以使用它來將這些添加到原始索引或 DataFrame。這就是predict方法的作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM