Sei que esse tópico foi abordado várias vezes antes, por exemplo , aqui , mas ainda não tenho certeza da melhor maneira de interpretar minha saída de regressão.
Eu tenho um conjunto de dados muito simples, constituído por uma coluna de valores x e uma coluna de valores y , divididos em dois grupos de acordo com a localização (loc). Os pontos são assim
Um colega levantou a hipótese de que deveríamos ajustar regressões lineares simples e separadas para cada grupo, o que eu fiz usando y ~ x * C(loc)
. A saída é mostrada abaixo.
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.
==============================================================================
Observando os valores-p dos coeficientes, a variável dummy para localização e o termo de interação não são significativamente diferentes de zero. Nesse caso, meu modelo de regressão reduz-se essencialmente à linha vermelha no gráfico acima. Para mim, isso sugere que ajustar linhas separadas aos dois grupos pode ser um erro, e um modelo melhor pode ser uma única linha de regressão para todo o conjunto de dados, como mostrado abaixo.
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
==============================================================================
Isso parece bom para mim visualmente, e os valores de p para todos os coeficientes agora são significativos. No entanto, a AIC para o segundo modelo é muito maior do que para o primeiro.
Sei que a seleção de modelos é mais do que apenas valores-p ou apenas o AIC, mas não tenho certeza do que fazer com isso. Alguém pode oferecer conselhos práticos sobre como interpretar essa saída e escolher um modelo apropriado, por favor ?
A meu ver, a única linha de regressão parece boa (embora eu perceba que nenhuma delas é especialmente boa), mas parece que há pelo menos alguma justificativa para ajustar modelos separados (?).
Obrigado!
Editado em resposta a comentários
@Cagdas Ozgenc
O modelo de duas linhas foi ajustado usando os modelos estatísticos do Python e o código a seguir
reg = sm.ols(formula='y ~ x * C(loc)', data=df).fit()
Pelo que entendi, isso é essencialmente apenas uma abreviação para um modelo como este
que é a linha azul no gráfico acima. O AIC para este modelo é relatado automaticamente no resumo do modelo de estatísticas. Para o modelo de uma linha, eu simplesmente usei
reg = ols(formula='y ~ x', data=df).fit()
Eu acho que está tudo bem?
@ user2864849
Editar 2
Apenas para completar, eis os gráficos residuais sugeridos por @whuber. O modelo de duas linhas realmente parece muito melhor deste ponto de vista.
Modelo de duas linhas
Modelo de uma linha
Obrigado a todos!