我在Windows 10上用statsmodels.formula.api
(ver 0.9.0)进行多元线性回归。在对模型进行拟合并得到以下行的摘要之后,我得到了摘要对象格式的摘要。
X_opt = X[:, [0,1,2,3]]
regressor_OLS = sm.OLS(endog= y, exog= X_opt).fit()
regressor_OLS.summary()
OLS Regression Results
==============================================================================
Dep. Variable: y R-squared: 0.951
Model: OLS Adj. R-squared: 0.948
Method: Least Squares F-statistic: 296.0
Date: Wed, 08 Aug 2018 Prob (F-statistic): 4.53e-30
Time: 00:46:48 Log-Likelihood: -525.39
No. Observations: 50 AIC: 1059.
Df Residuals: 46 BIC: 1066.
Df Model: 3
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
const 5.012e+04 6572.353 7.626 0.000 3.69e+04 6.34e+04
x1 0.8057 0.045 17.846 0.000 0.715 0.897
x2 -0.0268 0.051 -0.526 0.602 -0.130 0.076
x3 0.0272 0.016 1.655 0.105 -0.006 0.060
==============================================================================
Omnibus: 14.838 Durbin-Watson: 1.282
Prob(Omnibus): 0.001 Jarque-Bera (JB): 21.442
Skew: -0.949 Prob(JB): 2.21e-05
Kurtosis: 5.586 Cond. No. 1.40e+06
==============================================================================
我想对显著性水平为0.05的p值进行反向消除。为此,我需要删除P值最高的预测器并再次运行代码。
我想知道是否有方法从summary对象中提取p值,这样我就可以使用条件语句运行循环,并在不手动重复这些步骤的情况下找到有意义的变量。
谢谢你。
来自@Michael B的答案很好,但是需要“重新创建”这个表。表本身实际上可以直接从summary().tables属性中获得。此属性中的每个表(表的列表)都是一个SimpleTable,其中有用于输出不同格式的方法。然后我们可以将这些格式中的任何一种读回pd.DataFrame:
一个简单的解决方案只是一行代码:
这将为您提供一个dataframe对象:
熊猫.core.frame.DataFrame
要获取有效变量并再次运行测试:
将模型拟合存储为变量
results
,如下所示:然后创建如下函数:
您可以使用dir()来打印
results
对象的所有属性,然后将它们相应地添加到函数和df中。相关问题 更多 >
编程相关推荐