Úvod

Jedným z ďalších závažných porušení predpokladov klasického lineárneho regresného modelu je multikolinearita – situácia, keď sú vysvetľujúce premenné silne lineárne závislé. V našom prípade je to mimoriadne relevantné, keďže pracujeme s HDP veľkých čínskych provincií, ktoré: rastú podobným tempom, reagujú na rovnaké makroekonomické impulzy, sú súčasťou jednej integrovanej ekonomiky.

Je preto veľmi pravdepodobné, že medzi premennými Beijing, Shanghai, Jiangsu existuje silná korelácia.

Dôsledky multikolinearity

V kontexte našich dát má multikolinearita nasledovné dôsledky: regresné koeficienty sú nestabilné, štandardné chyby sú nadhodnotené, p-hodnoty sú menej spoľahlivé, vplyvy jednotlivých provincií sa môžu „prekrývať“, model má vysoké R², ale nízku interpretačnú hodnotu pre jednotlivé koeficienty.

chinaGDP <- read.csv2("Chinas GDP in Province En.csv", header = TRUE, sep = ",", dec = ".") 

rownames(chinaGDP) <- chinaGDP[,1]
chinaGDP <- chinaGDP[,-1]

# zoradenie
chinaGDP <- chinaGDP[order(as.numeric(rownames(chinaGDP))), ]

head(chinaGDP)

Príprava regresnej analýzy

regData <- data.frame(
  Guangdong = chinaGDP$Guangdong,
  Beijing   = chinaGDP$Beijing,
  Shanghai  = chinaGDP$Shanghai,
  Jiangsu   = chinaGDP$Jiangsu
)

summary(regData)
##    Guangdong         Beijing           Shanghai        Jiangsu      
##  Min.   :  2448   Min.   :  710.2   Min.   : 1114   Min.   :  2136  
##  1st Qu.:  9290   1st Qu.: 2759.8   1st Qu.: 4222   1st Qu.:  7698  
##  Median : 25961   Median : 8387.0   Median :10599   Median : 21241  
##  Mean   : 38963   Mean   :12719.2   Mean   :14671   Mean   : 35371  
##  3rd Qu.: 62503   3rd Qu.:21134.6   3rd Qu.:23204   3rd Qu.: 59349  
##  Max.   :110761   Max.   :36102.6   Max.   :38701   Max.   :102719

Interpretácia

Guangdong je v sledovanom období jednoznačne najsilnejšou ekonomikou, zatiaľ čo Beijing a Shanghai vykazujú podobný rozsah HDP. Jiangsu sa postupne približuje výkonu Guangdongu, čo naznačuje konvergenciu najbohatších regiónov.

Korelačná matica - prvý signál multikolinearity

cor(regData)
##           Guangdong   Beijing  Shanghai   Jiangsu
## Guangdong 1.0000000 0.9997788 0.9990354 0.9991969
## Beijing   0.9997788 1.0000000 0.9992225 0.9991148
## Shanghai  0.9990354 0.9992225 1.0000000 0.9974993
## Jiangsu   0.9991969 0.9991148 0.9974993 1.0000000

Interpretácia

Korelácie medzi HDP provincií sú extrémne vysoké (takmer 1), čo indikuje, že ekonomiky regiónov sa pohybujú takmer identicky v čase. Ide o učebnicový príklad skoro dokonalej multikolinearity.

Odhad regresného modelu

Použijeme pôvodný statický model:

model <- lm(Guangdong ~ Beijing + Shanghai + Jiangsu, data = regData)
summary(model)
## 
## Call:
## lm(formula = Guangdong ~ Beijing + Shanghai + Jiangsu, data = regData)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1652.60  -216.40    87.11   287.86  1468.64 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept) 329.7463   423.8004   0.778  0.44383   
## Beijing       1.8140     0.5669   3.200  0.00372 **
## Shanghai      0.4392     0.3206   1.370  0.18291   
## Jiangsu       0.2578     0.1109   2.324  0.02854 * 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 701 on 25 degrees of freedom
## Multiple R-squared:  0.9996, Adjusted R-squared:  0.9996 
## F-statistic: 2.294e+04 on 3 and 25 DF,  p-value: < 2.2e-16

Interpretácia

Aj napriek extrémnej sile korelácií niektoré koeficienty vychádzajú ako štatisticky významné, iné nie. Tento rozpor nie je ekonomický, ale matematický dôsledok multikolinearity.

Kvantifikácia multikolinearity – VIF faktor

Najpoužívanejší ukazovateľ multikolinearity je Variance Inflation Factor (VIF):

library(car)
## Loading required package: carData
vif(model)
##   Beijing  Shanghai   Jiangsu 
## 2440.2175  864.4868  759.2948

Interpretácia

Hodnoty VIF vyššie ako 10 indikujú vážnu multikolinearitu. V mojom prípade ide o hodnoty rádovo v stovkách až tisíckach, čo znamená extrémne silnú multikolinearitu. To v praxi znamená: regresné koeficienty nemajú stabilný význam, malá zmena dát → veľká zmena koeficientov, znamienka sa môžu meniť, významnosť prestáva mať ekonomický význam.

Ekonomické vysvetlenie

Multikolinearita v tomto modeli nie je štatistická chyba, ale dôsledok reality. Všetky provincie: reagujú na rovnaké reformy, sú napojené na rovnaké obchodné toky, majú podobnú štruktúru rastu, sledujú spoločný trend čínskej ekonomiky.

Tento model nemožno interpretovať kauzálne. Môžeme ho používať len ako: deskriptívny model previazanosti regiónov, ilustráciu systémového rastu, nie ako dôkaz „kto ovplyvňuje koho“.

Multikolinearita v modeli HDP provincií Číny dosahuje extrémnu úroveň, čo poukazuje na vysokú mieru integrácie ekonomiky. Namiesto izolovaných efektov jednotlivých regiónov pozorujeme systémový rast. V takomto prostredí nie je vhodné interpretovať regresné koeficienty ako kauzálne účinky, ale ako prejav spoločného trendu ekonomického rozvoja.

Odhad základného regresného modelu

model <- lm(Guangdong ~ Beijing + Shanghai + Jiangsu,
            data = regData)
summary(model)
## 
## Call:
## lm(formula = Guangdong ~ Beijing + Shanghai + Jiangsu, data = regData)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1652.60  -216.40    87.11   287.86  1468.64 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept) 329.7463   423.8004   0.778  0.44383   
## Beijing       1.8140     0.5669   3.200  0.00372 **
## Shanghai      0.4392     0.3206   1.370  0.18291   
## Jiangsu       0.2578     0.1109   2.324  0.02854 * 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 701 on 25 degrees of freedom
## Multiple R-squared:  0.9996, Adjusted R-squared:  0.9996 
## F-statistic: 2.294e+04 on 3 and 25 DF,  p-value: < 2.2e-16

Interpretácia

Vo výsledkoch regresnej analýzy pozorujeme: extrémne vysokú hodnotu R2=0.9996 štatistickú významnosť Beijing a Jiangsu, štatistickú nevýznamnosť Shanghai, vysokú presnosť modelu, ale nízku interpretačnú hodnotu koeficientov.

Napriek veľmi vysokej vysvetľovacej schopnosti modelu nemožno jednotlivé koeficienty interpretovať ako kauzálne vplyvy. Ide o prejav spoločného trendu vývoja regionálnej ekonomiky.

Rádový rozdiel koeficientov medzi jednotlivými provinciami nie je dôsledkom ekonomického významu, ale matematickým dôsledkom silnej korelácie medzi vysvetľujúcimi premennými.

Korelačná matica – dôkaz multikolinearity

xvars <- regData[, c("Beijing", "Shanghai", "Jiangsu")]
round(cor(xvars), 3)
##          Beijing Shanghai Jiangsu
## Beijing    1.000    0.999   0.999
## Shanghai   0.999    1.000   0.997
## Jiangsu    0.999    0.997   1.000

Interpretácia

Hodnoty korelácií medzi vysvetľujúcimi premennými sú vyššie než 0.99, čo jednoznačne potvrdzuje extrémne silnú multikolinearitu. Vzhľadom na silnú ekonomickú previaznosť regiónov nie je možné vyradiť jednu provinciu len na základe korelácie, nakoľko by stratila ekonomický zmysel regresná analýza.

Grafické zobrazenie korelácií

pairs(xvars,
      main = "Scatterplotová matica – HDP provincií Beijing, Shanghai, Jiangsu")

Interpretácia

Z grafov je zrejmý takmer deterministický vzťah medzi HDP jednotlivých regiónov. Body tvoria takmer priamky, čo je charakteristickým znakom silnej lineárnej závislosti.

Korelačná analýza potvrdila extrémnu úroveň multikolinearity medzi vysvetľujúcimi premennými. Výsledný regresný model preto nemožno interpretovať ako kauzálny model, ale ako opis silnej regionálnej previazanosti čínskej ekonomiky.

Variance Inflation Factor (VIF)

library(car)
vif(model)
##   Beijing  Shanghai   Jiangsu 
## 2440.2175  864.4868  759.2948

Interpretácia

Hodnoty Variance Inflation Factor pre všetky vysvetľujúce premenné výrazne prekračujú kritické hranice. Výsledky jednoznačne potvrdzujú extrémnu multikolinearitu v modeli. Tieto výsledky odôvodňujú použitie dynamických modelov a robustných štandardných chýb a zároveň vylučujú interpretáciu modelu ako príčinného mechanizmu.

Takto vysoké VIF sú v praxi zriedkavé a poukazujú na takmer deterministickú koreláciu regresorov. Ide o vhodnú ilustráciu systémovej regionalizácie ekonomiky.

Condition Number

X <- model.matrix(model)[, -1]
XtX <- t(X) %*% X
eig <- eigen(XtX)

condition_number <- sqrt(max(eig$values) / min(eig$values))
condition_number
## [1] 190.7865

Interpretácia

Vypočítaná hodnota condition number je výrazne vyššia než hranica 100, čo indikuje extrémnu multikolinearitu v regresnom modeli. Spolu s výsledkami korelačnej matice a VIF ide o jednoznačný dôkaz, že regresory sú takmer lineárne závislé. Regresný model preto nemožno interpretovať ako súbor nezávislých vplyvov, ale ako opis jedného spoločného ekonomického trendu.

Vynechanie premennej

Jednou z najjednoduchších možností, ako znížiť multikolinearitu, je odstránenie jednej z vysoko korelovaných premenných. Na základe VIF vieme, že najviac problémové sú: Beijing, Shanghai, Jiangsu Skúsime preto postupne vynechať jednu provinciu a porovnávame zmeny v kvalite modelu.

model_noShanghai <- lm(Guangdong ~ Beijing + Jiangsu, data = regData)
summary(model_noShanghai)
## 
## Call:
## lm(formula = Guangdong ~ Beijing + Jiangsu, data = regData)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1791.5  -340.7   184.2   390.7  1278.5 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 832.26725  215.76154   3.857 0.000677 ***
## Beijing       2.49472    0.27736   8.995 1.84e-09 ***
## Jiangsu       0.18092    0.09728   1.860 0.074262 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 712.7 on 26 degrees of freedom
## Multiple R-squared:  0.9996, Adjusted R-squared:  0.9996 
## F-statistic: 3.328e+04 on 2 and 26 DF,  p-value: < 2.2e-16
vif(model_noShanghai)
##  Beijing  Jiangsu 
## 565.0882 565.0882
model_noBeijing <- lm(Guangdong ~ Shanghai + Jiangsu, data = regData)
summary(model_noBeijing)
## 
## Call:
## lm(formula = Guangdong ~ Shanghai + Jiangsu, data = regData)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1540.3  -425.9    42.9   335.0  2231.0 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -563.0788   371.3768  -1.516    0.142    
## Shanghai       1.3384     0.1796   7.452 6.52e-08 ***
## Jiangsu        0.5623     0.0663   8.481 5.82e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 816.1 on 26 degrees of freedom
## Multiple R-squared:  0.9995, Adjusted R-squared:  0.9994 
## F-statistic: 2.538e+04 on 2 and 26 DF,  p-value: < 2.2e-16
vif(model_noBeijing)
## Shanghai  Jiangsu 
## 200.1917 200.1917
model_noJiangsu <- lm(Guangdong ~ Beijing + Shanghai, data = regData)
summary(model_noJiangsu)
## 
## Call:
## lm(formula = Guangdong ~ Beijing + Shanghai, data = regData)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1770.37  -377.15    80.65   538.69  1447.36 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 595.76410  441.23736   1.350    0.189    
## Beijing       2.94452    0.31475   9.355 8.34e-10 ***
## Shanghai      0.06235    0.29906   0.209    0.836    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 758 on 26 degrees of freedom
## Multiple R-squared:  0.9996, Adjusted R-squared:  0.9995 
## F-statistic: 2.942e+04 on 2 and 26 DF,  p-value: < 2.2e-16
vif(model_noJiangsu)
##  Beijing Shanghai 
## 643.3751 643.3751

Interpretácia

Zo zníženého modelu sa multikolinearita síce mierne znížila, avšak za cenu straty ekonomickej informácie. Keďže každá provincia reprezentuje jednu kľúčovú oblasť čínskej ekonomiky, vynechanie ktoréhokoľvek regiónu znamená aj stratu ekonomickej interpretácie.

Vynechávanie premenných nie je vhodné riešenie, pretože nedegraduje len multikolinearitu, ale aj ekonomický obsah modelu.

Škálovanie premenných (štandardizácia)

regData_scaled <- as.data.frame(scale(regData))

model_scaled <- lm(Guangdong ~ Beijing + Shanghai + Jiangsu,
                   data = regData_scaled)

summary(model_scaled)
## 
## Call:
## lm(formula = Guangdong ~ Beijing + Shanghai + Jiangsu, data = regData_scaled)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.047548 -0.006226  0.002506  0.008282  0.042255 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## (Intercept) 2.110e-17  3.745e-03   0.000  1.00000   
## Beijing     6.025e-01  1.883e-01   3.200  0.00372 **
## Shanghai    1.535e-01  1.121e-01   1.370  0.18291   
## Jiangsu     2.441e-01  1.050e-01   2.324  0.02854 * 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.02017 on 25 degrees of freedom
## Multiple R-squared:  0.9996, Adjusted R-squared:  0.9996 
## F-statistic: 2.294e+04 on 3 and 25 DF,  p-value: < 2.2e-16
vif(model_scaled)
##   Beijing  Shanghai   Jiangsu 
## 2440.2175  864.4868  759.2948

Condition number po škálovaní

X <- model.matrix(model_scaled)[, -1]
XtX <- t(X) %*% X
eig <- eigen(XtX)

condition_number <- sqrt(max(eig$values) / min(eig$values))
condition_number
## [1] 104.7951

Interpretácia

Škálovanie výrazne zlepšilo Condition Number, avšak hodnoty VIF ostali vysoké. To znamená, že aj keď sa numerická stabilita modelu mierne zlepšila, základný problém multikolinearity medzi regiónmi zostáva.

Koeficienty už nemajú prirodzenú ekonomickú interpretáciu v pôvodných jednotkách (mld. jüanov).

Zachovanie interpretovateľnosti – prevod jednotiek HDP

regData$Beijing_1000  <- regData$Beijing / 1000
regData$Shanghai_1000 <- regData$Shanghai / 1000
regData$Jiangsu_1000  <- regData$Jiangsu / 1000
regData$Guangdong_1000 <- regData$Guangdong / 1000
model_1000 <- lm(Guangdong_1000 ~ Beijing_1000 + Shanghai_1000 + Jiangsu_1000,
                 data = regData)

summary(model_1000)
## 
## Call:
## lm(formula = Guangdong_1000 ~ Beijing_1000 + Shanghai_1000 + 
##     Jiangsu_1000, data = regData)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.65260 -0.21640  0.08711  0.28786  1.46864 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)   
## (Intercept)     0.3297     0.4238   0.778  0.44383   
## Beijing_1000    1.8140     0.5669   3.200  0.00372 **
## Shanghai_1000   0.4392     0.3206   1.370  0.18291   
## Jiangsu_1000    0.2578     0.1109   2.324  0.02854 * 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.701 on 25 degrees of freedom
## Multiple R-squared:  0.9996, Adjusted R-squared:  0.9996 
## F-statistic: 2.294e+04 on 3 and 25 DF,  p-value: < 2.2e-16
vif(model_1000)
##  Beijing_1000 Shanghai_1000  Jiangsu_1000 
##     2440.2175      864.4868      759.2948
X <- model.matrix(model_1000)[, -1]
XtX <- t(X) %*% X
eig <- eigen(XtX)

condition_number <- sqrt(max(eig$values) / min(eig$values))
condition_number
## [1] 190.7865

Interpretácia

Prevod jednotiek nemení korelácie medzi premennými, ale zlepšuje numerickú stabilitu výpočtu. Koeficienty sú porovnateľné v rádoch veľkosti a model je prehľadnejší z hľadiska interpretácie.

Multikolinearitu v modeli HDP provincií Číny nebolo možné odstrániť bez straty ekonomického významu. Dôvodom je, že ide o štrukturálnu vlastnosť dát – všetky regióny rastú spoločne. Najvhodnejším riešením sa ukázala dynamizácia modelu a použitie robustných štandardných chýb.

Škálovanie a prevod jednotiek zlepšili numerickú stabilitu, ale neodstránili hlavnú príčinu – spoločný trend regionálneho rastu.