我意识到这个话题在例如here之前已经出现过多次,但我仍然不确定如何最好地解释我的回归输出。
我有一个非常简单的数据集,由一列x 值和一列y 值组成,根据位置(loc)分为两组。点看起来像这样
一位同事假设我们应该对每个组进行单独的简单线性回归,我已经使用y ~ x * C(loc)
. 输出如下所示。
OLS Regression Results
==============================================================================
Dep. Variable: y R-squared: 0.873
Model: OLS Adj. R-squared: 0.866
Method: Least Squares F-statistic: 139.2
Date: Mon, 13 Jun 2016 Prob (F-statistic): 3.05e-27
Time: 14:18:50 Log-Likelihood: -27.981
No. Observations: 65 AIC: 63.96
Df Residuals: 61 BIC: 72.66
Df Model: 3
Covariance Type: nonrobust
=================================================================================
coef std err t P>|t| [95.0% Conf. Int.]
---------------------------------------------------------------------------------
Intercept 3.8000 1.784 2.129 0.037 0.232 7.368
C(loc)[T.N] -0.4921 1.948 -0.253 0.801 -4.388 3.404
x -0.6466 0.230 -2.807 0.007 -1.107 -0.186
x:C(loc)[T.N] 0.2719 0.257 1.057 0.295 -0.242 0.786
==============================================================================
Omnibus: 22.788 Durbin-Watson: 2.552
Prob(Omnibus): 0.000 Jarque-Bera (JB): 121.307
Skew: 0.629 Prob(JB): 4.56e-27
Kurtosis: 9.573 Cond. No. 467.
==============================================================================
查看系数的 p 值,位置的虚拟变量和交互项与零没有显着差异,在这种情况下,我的回归模型基本上简化为上图中的红线。对我来说,这表明将单独的线拟合到两组可能是一个错误,更好的模型可能是整个数据集的单个回归线,如下所示。
OLS Regression Results
==============================================================================
Dep. Variable: y R-squared: 0.593
Model: OLS Adj. R-squared: 0.587
Method: Least Squares F-statistic: 91.93
Date: Mon, 13 Jun 2016 Prob (F-statistic): 6.29e-14
Time: 14:24:50 Log-Likelihood: -65.687
No. Observations: 65 AIC: 135.4
Df Residuals: 63 BIC: 139.7
Df Model: 1
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [95.0% Conf. Int.]
------------------------------------------------------------------------------
Intercept 8.9278 0.935 9.550 0.000 7.060 10.796
x -1.2446 0.130 -9.588 0.000 -1.504 -0.985
==============================================================================
Omnibus: 0.112 Durbin-Watson: 1.151
Prob(Omnibus): 0.945 Jarque-Bera (JB): 0.006
Skew: 0.018 Prob(JB): 0.997
Kurtosis: 2.972 Cond. No. 81.9
==============================================================================
这对我来说在视觉上看起来不错,并且所有系数的 p 值现在都很重要。但是,第二个模型的 AIC 比第一个模型高得多。
我意识到模型选择不仅仅是p 值或AIC,但我不知道该怎么做。任何人都可以提供有关解释此输出和选择合适模型的任何实用建议吗?
在我看来,单个回归线看起来不错(尽管我意识到它们都不是特别好),但似乎至少有一些理由来拟合单独的模型(?)。
谢谢!
根据评论编辑
@Cagdas Ozgenc
使用 Python 的 statsmodels 和以下代码拟合两线模型
reg = sm.ols(formula='y ~ x * C(loc)', data=df).fit()
据我了解,这本质上只是这样的模型的简写
在哪里是表示位置的二进制“虚拟”变量。实际上,这本质上只是两个线性模型,不是吗?什么时候,并且模型简化为
这是上图中的红线。什么时候,模型变成
这是上图中的蓝线。此模型的 AIC 会在 statsmodels 摘要中自动报告。对于我简单使用的单线模型
reg = ols(formula='y ~ x', data=df).fit()
我觉得这样可以吗?
@user2864849
我不认为单线模型明显更好,但我确实担心回归线的约束有多差是。这两个位置(D 和 N)在空间上相距很远,如果从中间某处收集额外数据产生的点大致绘制在我已经拥有的红色和蓝色集群之间,我一点也不感到惊讶。我还没有任何数据来支持这一点,但我不认为单线模型看起来太糟糕,我喜欢让事情尽可能简单:-)
编辑 2
为了完整起见,这里是@whuber 建议的残差图。从这个角度来看,两线模型确实看起来要好得多。
两线型号
单线模型
谢谢大家!