Úvod

V tomto seminári sa budeme venovať problému správnej špecifikácie regresného modelu.
Vysvetľovanou premennou je:

\[ Y_t = Life\_expectancy_t \]

teda očakávaná dĺžka života v Portugalsku v roku \(t\).

Cieľom je ukázať, že nestačí „spustiť regresiu“. Aby boli odhady zmysluplné, model musí byť rozumne špecifikovaný. Nesprávna špecifikácia môže viesť ku skresleným koeficientom, nespoľahlivým testom a zlej interpretácii výsledkov.


1. Čo znamená nesprávna špecifikácia modelu?

Model je nesprávne špecifikovaný, ak jeho tvar nezodpovedá skutočnému vzťahu medzi premennými.
To môže nastať najmä v týchto situáciách:

  1. v modeli chýba dôležitá premenná,
  2. v modeli je príliš veľa premenných,
  3. model má nesprávny funkčný tvar.

Budeme uvažovať všeobecný model:

\[ Life\_expectancy_t = \beta_0 + \beta_1 X_{1t} + \beta_2 X_{2t} + \dots + u_t \]

kde \(u_t\) zachytáva všetky nepozorované faktory.


2. Vynechaná premenná

Teória

K chybe vynechanej premennej dochádza vtedy, keď do modelu nezahrnieme premennú, ktorá:

  • ovplyvňuje \(Life\_expectancy\),
  • a zároveň koreluje s niektorou zahrnutou vysvetľujúcou premennou.

V takom prípade sa časť vplyvu vynechanej premennej „presunie“ do odhadu iného koeficientu. Výsledkom je skreslenie odhadov.

Napríklad, ak by sme vysvetľovali očakávanú dĺžku života iba pomocou GDP_per_capita, ale vynechali Schooling alebo Adult_mortality, koeficient pri HDP môže zachytiť aj ich vplyv.

Jednoduchý príklad

model_1 <- lm(Life_expectancy ~ GDP_per_capita, data = data_at)
summary(model_1)
## 
## Call:
## lm(formula = Life_expectancy ~ GDP_per_capita, data = data_at)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.5723 -1.2202 -0.1011  1.5526  2.3725 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    84.8549214 19.0000120   4.466 0.000533 ***
## GDP_per_capita -0.0003183  0.0009894  -0.322 0.752422    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.631 on 14 degrees of freedom
## Multiple R-squared:  0.007339,   Adjusted R-squared:  -0.06357 
## F-statistic: 0.1035 on 1 and 14 DF,  p-value: 0.7524

Tento model je veľmi jednoduchý, ale pravdepodobne neúplný. Očakávanú dĺžku života neovplyvňuje len HDP na obyvateľa.

Rozšírený model

model_2 <- lm(Life_expectancy ~ GDP_per_capita + Schooling + Adult_mortality, data = data_at)
summary(model_2)
## 
## Call:
## lm(formula = Life_expectancy ~ GDP_per_capita + Schooling + Adult_mortality, 
##     data = data_at)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.36350 -0.20863 -0.02277  0.11641  0.75718 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     72.3841773 15.5312374   4.661  0.00055 ***
## GDP_per_capita  -0.0002448  0.0002351  -1.041  0.31832    
## Schooling        1.7429833  0.9135844   1.908  0.08062 .  
## Adult_mortality -0.0282354  0.0558206  -0.506  0.62214    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2982 on 12 degrees of freedom
## Multiple R-squared:  0.9716, Adjusted R-squared:  0.9645 
## F-statistic: 136.7 on 3 and 12 DF,  p-value: 1.529e-09
model_2 <- lm(Life_expectancy ~ GDP_per_capita + Schooling, data = data_at)
summary(model_2)
## 
## Call:
## lm(formula = Life_expectancy ~ GDP_per_capita + Schooling, data = data_at)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.42862 -0.18258 -0.03486  0.10896  0.75223 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    64.7436704  3.5083083  18.454 1.05e-10 ***
## GDP_per_capita -0.0001689  0.0001757  -0.961    0.354    
## Schooling       2.2017844  0.1059983  20.772 2.35e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2895 on 13 degrees of freedom
## Multiple R-squared:  0.971,  Adjusted R-squared:  0.9665 
## F-statistic: 217.4 on 2 and 13 DF,  p-value: 1.021e-10

Ak sa koeficient pri GDP_per_capita po pridaní ďalších relevantných premenných výrazne zmení, je to signál, že pôvodný model mohol trpieť chybou vynechanej premennej.


3. Príliš veľa premenných

Teória

Aj opačný problém je dôležitý: do modelu môžeme zaradiť príliš veľa premenných.

To môže viesť k tomu, že:

  • model je zbytočne komplikovaný,
  • koeficienty sú nestabilné,
  • rastie multikolinearita,
  • pri malej vzorke strácame presnosť odhadov.

V našom prípade máme iba niekoľko rokov údajov pre jednu krajinu, preto treba byť mimoriadne opatrný. Pri malej vzorke nie je dobré „preplniť“ model mnohými premennými.

Príklad širšieho modelu

model_many <- lm(Life_expectancy ~ GDP_per_capita + Schooling + BMI +
                   Adult_mortality + Incidents_HIV + Year,
                 data = data_at)
summary(model_many)
## 
## Call:
## lm(formula = Life_expectancy ~ GDP_per_capita + Schooling + BMI + 
##     Adult_mortality + Incidents_HIV + Year, data = data_at)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.35233 -0.09727 -0.01434  0.02771  0.69624 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)
## (Intercept)     -3.876e+02  5.045e+02  -0.768    0.462
## GDP_per_capita  -4.203e-04  3.107e-04  -1.353    0.209
## Schooling        1.855e+00  1.315e+00   1.410    0.192
## BMI              1.504e+00  1.532e+00   0.982    0.352
## Adult_mortality  1.629e-03  1.092e-01   0.015    0.988
## Incidents_HIV    2.516e+01  3.743e+01   0.672    0.518
## Year             2.076e-01  2.551e-01   0.814    0.437
## 
## Residual standard error: 0.308 on 9 degrees of freedom
## Multiple R-squared:  0.9773, Adjusted R-squared:  0.9621 
## F-statistic: 64.47 on 6 and 9 DF,  p-value: 6.941e-07

Takýto model môže pôsobiť atraktívne, ale nemusí byť vhodný. Pri malom počte pozorovaní môže byť lepšie zvoliť jednoduchší model s ekonomicky odôvodnenými premennými.


4. Ako pri výbere premenných pomáha AIC

Základná myšlienka

Pri rozhodovaní, či niektoré premenné ponechať alebo vylúčiť, môžeme použiť AIC (Akaike Information Criterion).

AIC porovnáva modely podľa dvoch princípov:

  • model má dobre vysvetľovať dáta,
  • model nemá byť zbytočne zložitý.

AIC teda trestá priveľký počet premenných.
Vo všeobecnosti platí:

  • nižšia hodnota AIC je lepšia.

AIC nám nepovie, či je model „pravdivý“, ale pomáha nájsť rozumný kompromis medzi kvalitou prispôsobenia a jednoduchosťou modelu.

Porovnanie modelov pomocou AIC

AIC(model_1, model_2, model_many)
##            df      AIC
## model_1     3 64.93301
## model_2     4 10.42203
## model_many  8 14.51222

Ak má jednoduchší model nižšie AIC než veľmi rozsiahly model, je to argument v prospech jednoduchšej špecifikácie.

Automatický výber podľa AIC

model_start <- lm(Life_expectancy ~ GDP_per_capita + Schooling + BMI +
                    Adult_mortality + Incidents_HIV + Year,
                  data = data_at)

model_aic <- stepAIC(model_start, direction = "both", trace = FALSE)
summary(model_aic)
## 
## Call:
## lm(formula = Life_expectancy ~ GDP_per_capita + Schooling + BMI, 
##     data = data_at)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.30891 -0.15888 -0.03066  0.13987  0.71638 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    31.2901667 26.3595189   1.187    0.258    
## GDP_per_capita -0.0003483  0.0002216  -1.572    0.142    
## Schooling       2.1078117  0.1268853  16.612  1.2e-09 ***
## BMI             1.4629225  1.1429292   1.280    0.225    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2827 on 12 degrees of freedom
## Multiple R-squared:  0.9745, Adjusted R-squared:  0.9681 
## F-statistic: 152.6 on 3 and 12 DF,  p-value: 8.061e-10
AIC(model_start, model_aic)
##             df      AIC
## model_start  8 14.51222
## model_aic    5 10.37437

Poznámka: AIC je užitočné pomocné kritérium, ale nemalo by nahradiť ekonomickú logiku.
Premenná by sa nemala vyhadzovať iba mechanicky; vždy sa treba pýtať, či má teoretický význam.


5. Nesprávny funkčný tvar

Teória

Ďalším problémom je nesprávny funkčný tvar modelu.
To znamená, že vzťah medzi premennými nie je lineárny, hoci my ho ako lineárny modelujeme.

Napríklad účinok príjmu alebo HDP na očakávanú dĺžku života býva často nelineárny: pri nízkych úrovniach môže byť silný, ale pri vysokých úrovniach sa môže zoslabovať. Preto môže byť vhodné použiť logaritmus alebo kvadratický člen.

Porovnanie lineárneho a logaritmického tvaru

model_linear <- lm(Life_expectancy ~ GDP_per_capita, data = data_at)
model_log <- lm(Life_expectancy ~ log(GDP_per_capita), data = data_at)

summary(model_linear)
## 
## Call:
## lm(formula = Life_expectancy ~ GDP_per_capita, data = data_at)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.5723 -1.2202 -0.1011  1.5526  2.3725 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    84.8549214 19.0000120   4.466 0.000533 ***
## GDP_per_capita -0.0003183  0.0009894  -0.322 0.752422    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.631 on 14 degrees of freedom
## Multiple R-squared:  0.007339,   Adjusted R-squared:  -0.06357 
## F-statistic: 0.1035 on 1 and 14 DF,  p-value: 0.7524
summary(model_log)
## 
## Call:
## lm(formula = Life_expectancy ~ log(GDP_per_capita), data = data_at)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.57543 -1.22037 -0.09856  1.54687  2.37436 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)
## (Intercept)          140.502    188.108   0.747    0.467
## log(GDP_per_capita)   -6.262     19.073  -0.328    0.748
## 
## Residual standard error: 1.631 on 14 degrees of freedom
## Multiple R-squared:  0.00764,    Adjusted R-squared:  -0.06324 
## F-statistic: 0.1078 on 1 and 14 DF,  p-value: 0.7475
AIC(model_linear, model_log)
##              df      AIC
## model_linear  3 64.93301
## model_log     3 64.92814

Ak má logaritmický model lepšie výsledky a nižšie AIC, môže byť vhodnejší než čisto lineárna špecifikácia.


6. Ramsey RESET test

Základný princíp testu

Ramsey RESET test je test všeobecnej správnosti funkčného tvaru modelu.

Myšlienka testu je jednoduchá:

  • najprv odhadneme pôvodný model,
  • potom doň doplníme mocniny odhadnutých hodnôt (napr. druhú a tretiu mocninu fitted values),
  • a testujeme, či tieto dodatočné členy zlepšujú model.

Ak sú tieto nové členy štatisticky významné, znamená to, že pôvodný model pravdepodobne niečo zanedbal, napríklad:

  • nelinearitu,
  • interakcie,
  • alebo inú formu nesprávnej špecifikácie.

Hypotézy

  • H0: model je správne špecifikovaný
  • H1: model nie je správne špecifikovaný

Dôležité je, že RESET test nám zvyčajne nepovie presne, kde je chyba, ale upozorní nás, že špecifikácia modelu je pravdepodobne nedostatočná.

Aplikácia RESET testu

resettest(model_linear, power = 2:3, type = "fitted")
## 
##  RESET test
## 
## data:  model_linear
## RESET = 2.0894, df1 = 2, df2 = 12, p-value = 0.1665

Interpretácia

  • ak je p-hodnota vysoká, nulovú hypotézu nezamietame,
  • ak je p-hodnota nízka, nulovú hypotézu zamietame a model pravdepodobne nie je správne špecifikovaný.

RESET test pri lepšom modeli

model_preferred <- lm(Life_expectancy ~ log(GDP_per_capita) + Schooling + Adult_mortality,
                      data = data_at)

summary(model_preferred)
## 
## Call:
## lm(formula = Life_expectancy ~ log(GDP_per_capita) + Schooling + 
##     Adult_mortality, data = data_at)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.36347 -0.20839 -0.02415  0.11637  0.75812 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)  
## (Intercept)         113.64271   53.16552   2.138   0.0538 .
## log(GDP_per_capita)  -4.67281    4.51840  -1.034   0.3214  
## Schooling             1.75225    0.91070   1.924   0.0784 .
## Adult_mortality      -0.02765    0.05563  -0.497   0.6282  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2984 on 12 degrees of freedom
## Multiple R-squared:  0.9715, Adjusted R-squared:  0.9644 
## F-statistic: 136.6 on 3 and 12 DF,  p-value: 1.539e-09
resettest(model_preferred, power = 2:3, type = "fitted")
## 
##  RESET test
## 
## data:  model_preferred
## RESET = 2.5805, df1 = 2, df2 = 10, p-value = 0.1248
AIC(model_preferred)
## [1] 12.10226

Ak má tento model rozumnejšie koeficienty, nižšie AIC a lepší výsledok RESET testu, ide o silný argument v prospech tejto špecifikácie.


7. Ako riešiť problém nesprávnej špecifikácie

Ak máme podozrenie, že model nie je správne špecifikovaný, môžeme postupovať takto:

(a) Doplniť relevantné premenné

Ak model trpí chybou vynechanej premennej, treba pridať ekonomicky dôležité premenné.

model_fix_1 <- lm(Life_expectancy ~ GDP_per_capita + Schooling + Adult_mortality,
                  data = data_at)
summary(model_fix_1)
## 
## Call:
## lm(formula = Life_expectancy ~ GDP_per_capita + Schooling + Adult_mortality, 
##     data = data_at)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.36350 -0.20863 -0.02277  0.11641  0.75718 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     72.3841773 15.5312374   4.661  0.00055 ***
## GDP_per_capita  -0.0002448  0.0002351  -1.041  0.31832    
## Schooling        1.7429833  0.9135844   1.908  0.08062 .  
## Adult_mortality -0.0282354  0.0558206  -0.506  0.62214    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2982 on 12 degrees of freedom
## Multiple R-squared:  0.9716, Adjusted R-squared:  0.9645 
## F-statistic: 136.7 on 3 and 12 DF,  p-value: 1.529e-09

(b) Zmeniť funkčný tvar

Ak je vzťah nelineárny, môžeme použiť logaritmus alebo mocniny premenných.

model_fix_2 <- lm(Life_expectancy ~ log(GDP_per_capita) + Schooling,
                  data = data_at)
summary(model_fix_2)
## 
## Call:
## lm(formula = Life_expectancy ~ log(GDP_per_capita) + Schooling, 
##     data = data_at)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.42764 -0.18208 -0.03647  0.10826  0.75298 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           93.533     33.473   2.794   0.0152 *  
## log(GDP_per_capita)   -3.248      3.389  -0.958   0.3554    
## Schooling              2.202      0.106  20.764 2.36e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2896 on 13 degrees of freedom
## Multiple R-squared:  0.971,  Adjusted R-squared:  0.9665 
## F-statistic: 217.3 on 2 and 13 DF,  p-value: 1.023e-10

(c) Porovnávať modely pomocou AIC

Pri rozhodovaní o tom, či niektoré premenné ponechať alebo vylúčiť, môžeme porovnať AIC.

AIC(model_fix_1, model_fix_2, model_many)
##             df      AIC
## model_fix_1  5 12.08447
## model_fix_2  4 10.42826
## model_many   8 14.51222

(d) Testovať špecifikáciu pomocou RESET testu

resettest(model_fix_1, power = 2:3, type = "fitted")
## 
##  RESET test
## 
## data:  model_fix_1
## RESET = 2.5743, df1 = 2, df2 = 10, p-value = 0.1254
resettest(model_fix_2, power = 2:3, type = "fitted")
## 
##  RESET test
## 
## data:  model_fix_2
## RESET = 2.0428, df1 = 2, df2 = 11, p-value = 0.176

Správny postup teda nie je len „odhadnúť jeden model“, ale porovnávať viacero rozumných špecifikácií a overovať ich.


8. Záver

Správna špecifikácia modelu je nevyhnutná, ak chceme robiť dôveryhodné ekonometrické závery.

V tomto seminári sme ukázali tri hlavné problémy:

  1. vynechaná premenná – vedie ku skresleným odhadom,
  2. príliš veľa premenných – môže zhoršiť presnosť a stabilitu modelu,
  3. nesprávny funkčný tvar – model nemusí zachytiť skutočný vzťah.

Na diagnostiku sme použili:

Praktické odporúčanie

Pri modelovaní Life_expectancy v Portugalsku by sme mali: - začať ekonomicky odôvodneným modelom, - nevkladať priveľa premenných naraz, - porovnávať alternatívne špecifikácie, - využiť AIC ako pomocné kritérium, - a kontrolovať správnosť špecifikácie pomocou RESET testu.