statsmodels 中有什么方法可以获得回归中使用的最终观察结果?
Any way in statsmodels to obtain final observations used in a regression?
回归经常会丢失一些观测值,因为它们缺少一个或多个回归量字段。例如:
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
模型 class 或拟合的 RegressionResultsWrapper
输出以编程方式访问 post-回归 DataFrame
?
获得您所问内容的最简洁方法似乎依赖于 model.data
,正如 user333700 在评论中所建议的那样。与 user333700 所说的不同,model.data
seems to have deliberately exposed as public interface 由 statsmodels 开发人员提供。
特别是,model.data.missing_row_idx
提供了你所要求的since 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]
回归经常会丢失一些观测值,因为它们缺少一个或多个回归量字段。例如:
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
模型 class 或拟合的 RegressionResultsWrapper
输出以编程方式访问 post-回归 DataFrame
?
获得您所问内容的最简洁方法似乎依赖于 model.data
,正如 user333700 在评论中所建议的那样。与 user333700 所说的不同,model.data
seems to have deliberately exposed as public interface 由 statsmodels 开发人员提供。
特别是,model.data.missing_row_idx
提供了你所要求的since 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]