Zdaję sobie sprawę, że ten temat pojawiał się wiele razy wcześniej, np. Tutaj , ale wciąż nie jestem pewien, jak najlepiej zinterpretować moje wyniki regresji.
Mam bardzo prosty zestaw danych, składający się z kolumny wartości x i kolumny wartości y , podzielonych na dwie grupy według lokalizacji (loc). Punkty wyglądają tak
Kolega wysunął hipotezę, że do każdej grupy powinniśmy dopasować osobne proste regresje liniowe, których użyłem y ~ x * C(loc)
. Dane wyjściowe pokazano poniżej.
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.
==============================================================================
Patrząc na wartości p dla współczynników, zmienna fikcyjna dla lokalizacji i warunek interakcji nie różnią się znacząco od zera, w którym to przypadku mój model regresji zasadniczo ogranicza się do czerwonej linii na powyższym wykresie. Według mnie sugeruje to, że dopasowanie oddzielnych linii do dwóch grup może być błędem, a lepszym modelem może być pojedyncza linia regresji dla całego zestawu danych, jak pokazano poniżej.
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
==============================================================================
Wygląda mi to OK, a wartości p dla wszystkich współczynników są teraz znaczące. Jednak AIC dla drugiego modelu jest znacznie wyższy niż dla pierwszego.
Zdaję sobie sprawę, że wybór modelu to coś więcej niż tylko wartości p lub tylko AIC, ale nie jestem pewien, co z tym zrobić. Czy ktoś może zaoferować jakieś praktyczne porady dotyczące interpretacji tego wyniku i wyboru odpowiedniego modelu ?
Moim zdaniem linia pojedynczej regresji wygląda OK (choć zdaję sobie sprawę, że żaden z nich nie jest szczególnie dobry), ale wydaje się, że istnieje co najmniej uzasadnienie dla dopasowania osobnych modeli (?).
Dzięki!
Edytowane w odpowiedzi na komentarze
@Cagdas Ozgenc
Model dwuwierszowy został dopasowany przy użyciu statsmodels Pythona i następującego kodu
reg = sm.ols(formula='y ~ x * C(loc)', data=df).fit()
Jak rozumiem, jest to w zasadzie tylko skrót dla takiego modelu
gdzie jest binarną zmienną „obojętną” reprezentującą lokalizację. W praktyce są to zasadniczo dwa modele liniowe, prawda? Gdy , a model zmniejsza się dol o c = D l = 0
czyli czerwona linia na powyższym wykresie. Gdy , i model staje sięl = 1
czyli niebieska linia na powyższym wykresie. Kod AIC dla tego modelu jest raportowany automatycznie w podsumowaniu statsmodels. W przypadku modelu jednokreskowego, którego po prostu użyłem
reg = ols(formula='y ~ x', data=df).fit()
Myślę, że to jest OK?
@ user2864849
Nie sądzę modelu jednolitej linii jest oczywiście lepiej, ale ja martw się, jak słabo ograniczone linię regresji dla jest. Dwie lokalizacje (D i N) są bardzo oddalone od siebie w przestrzeni, i nie byłbym wcale zaskoczony, gdyby zebranie dodatkowych danych gdzieś pośrodku wytworzyło punkty w przybliżeniu między czerwonymi i niebieskimi gromadami, które już mam. Nie mam jeszcze żadnych danych, aby to zrobić, ale nie sądzę, aby model jednokreskowy wyglądał zbyt okropnie i chciałbym, aby wszystko było tak proste, jak to możliwe :-)
Edytuj 2
Dla kompletności, oto pozostałe wykresy sugerowane przez @whuber. Model dwuwierszowy rzeczywiście wygląda znacznie lepiej z tego punktu widzenia.
Model dwuliniowy
Model jednowierszowy
Dziękuje wszystkim!