统计模型中获取回归中使用的最终观测值的任何方式



很多时候,回归会丢弃一些观测值,因为它们缺少一个或多个回归器字段。例如:

In [30]: len(df)  #df is our dataframe
Out[30]: 39243
In [31]: model = sm.OLS(df[var_name_y], df[var_names_x], missing="drop")
         result = model.fit()
In [32]: len(result.fittedvalues)
Out[32]: 38013

在这里,我们删除了 1230 个观测值,每个观测值都缺少一个或多个回归因子。

有没有办法访问在注册中实际使用的DataFrame - 即回归丢弃丢失的观测值后剩余的大小为 38013 的较小一个?例如,这在各种 SAS 回归例程中可用。我一直在梳理 API,但找不到任何东西。我需要这些数据来根据回归中使用的实际数据生成各种诊断。

当然,我可以在回归之前自己删除正确的行,如下所示:

In [58]: len(df)
Out[58]: 39243
In [59]: df2 = df.dropna(subset=var_name_y + var_names_x)
In [60]: len(df2)
Out[60]: 38013
In [64]: model = sm.OLS(df2[var_name_y], df2[var_names_x],missing="drop")
         result = model.fit()
In [65]: len(result.fittedvalues)
Out[65]: 38013

然后,我提供给回归的DataFrame已经是删除了所有缺失观测值的。但我希望避免这种情况,特别是如果我正在使用更大的数据集。有没有更好的方法来做到这一点,特别是通过OLS模型类或拟合的RegressionResultsWrapper输出以编程方式访问回归后DataFrame

正如 user333700 在评论中建议的那样,获得您要求的内容的最干净方法似乎依赖于 model.data。与user333700所说的不同,model.data似乎故意被statsmodels开发人员公开为公共接口。

特别是,model.data.missing_row_idx提供了自2012年以来您所要求的内容......因此,尽管没有记录,但它似乎相对稳定。

例:

In [3]: model = OLS(pd.DataFrame([[1, 2], [3, 4], [5, float('nan')]]), [2, 5, 4], missing='drop')
In [4]: model.data.missing_row_idx
Out[4]: [2]

相关内容

  • 没有找到相关文章

最新更新