Načítanie dát

econ <- read.csv("economics.csv")
str(econ)
'data.frame':   574 obs. of  7 variables:
 $ X       : int  1 2 3 4 5 6 7 8 9 10 ...
 $ date    : chr  "1967-07-01" "1967-08-01" "1967-09-01" "1967-10-01" ...
 $ pce     : num  507 510 516 512 517 ...
 $ pop     : num  198712 198911 199113 199311 199498 ...
 $ psavert : num  12.6 12.6 11.9 12.9 12.8 11.8 11.7 12.3 11.7 12.3 ...
 $ uempmed : num  4.5 4.7 4.6 4.9 4.7 4.8 5.1 4.5 4.1 4.6 ...
 $ unemploy: int  2944 2945 2958 3143 3066 3018 2878 3001 2877 2709 ...
summary(econ)
       X             date                pce               pop            psavert      
 Min.   :  1.0   Length:574         Min.   :  506.7   Min.   :198712   Min.   : 2.200  
 1st Qu.:144.2   Class :character   1st Qu.: 1578.3   1st Qu.:224896   1st Qu.: 6.400  
 Median :287.5   Mode  :character   Median : 3936.8   Median :253060   Median : 8.400  
 Mean   :287.5                      Mean   : 4820.1   Mean   :257160   Mean   : 8.567  
 3rd Qu.:430.8                      3rd Qu.: 7626.3   3rd Qu.:290291   3rd Qu.:11.100  
 Max.   :574.0                      Max.   :12193.8   Max.   :320402   Max.   :17.300  
    uempmed          unemploy    
 Min.   : 4.000   Min.   : 2685  
 1st Qu.: 6.000   1st Qu.: 6284  
 Median : 7.500   Median : 7494  
 Mean   : 8.609   Mean   : 7771  
 3rd Qu.: 9.100   3rd Qu.: 8686  
 Max.   :25.200   Max.   :15352  

udaje <- read.csv("economics.csv")
model <- lm(pce ~ unemploy + psavert + pop, 
            data = udaje)

summary(model)

Call:
lm(formula = pce ~ unemploy + psavert + pop, data = udaje)

Residuals:
     Min       1Q   Median       3Q      Max 
-1045.64  -360.58   -71.61   392.67  1308.28 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) -2.547e+04  4.344e+02 -58.617   <2e-16 ***
unemploy    -1.085e-01  1.175e-02  -9.238   <2e-16 ***
psavert      2.019e+02  1.477e+01  13.667   <2e-16 ***
pop          1.143e-01  1.467e-03  77.907   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 490.8 on 570 degrees of freedom
Multiple R-squared:  0.9811,    Adjusted R-squared:  0.981 
F-statistic:  9841 on 3 and 570 DF,  p-value: < 2.2e-16

Všetky premenné sú extrémne významné. Populácia a úspory majú silný pozitívny vzťah so spotrebou. Nezamestnanosť má slabý, ale štatisticky významný negatívny vplyv.

Vizualizácia vybraných premenných

plot(econ$unemploy, type="l", main="Nezamestnanosť")

plot(econ$pce, type="l", main="Osobná spotreba (PCE)")

Krivka nezamestnanosti má „cik-cak“ vzor. Môžme vidieť sezónnosť.

Krivka osobnej spotreby ide neustále hore – od hodnoty približne 1000 až po viac ako 12 000. To znamená, že spotreba domácností v USA dlhodobo rástla. Žiadna sezónnosť - Čiarkovaná línia, nemá žiadny opakujúci sa „cik-cak“ vzor narozdiel od krivky nezamestnanosti.

Jednoduchý regresný model

Vysvetlím miera nezamestnanosti (unemploy) pomocou osobnej spotreby (pce).

model1 <- lm(unemploy ~ pce, data=econ)
summary(model1)

Call:
lm(formula = unemploy ~ pce, data = econ)

Residuals:
    Min      1Q  Median      3Q     Max 
-3215.3 -1546.3  -388.8  1485.8  5493.2 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 5571.1416   146.7269   37.97   <2e-16 ***
pce            0.4565     0.0245   18.63   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2086 on 572 degrees of freedom
Multiple R-squared:  0.3776,    Adjusted R-squared:  0.3765 
F-statistic: 347.1 on 1 and 572 DF,  p-value: < 2.2e-16

Koeficient pce je významný, ale pravdepodobne zachytáva len spoločný trend, nie reálny vzťah. R² je nízke (≈0.38), model nevysvetľuje nezamestnanosť dobre. Interpretácia je ekonomicky nelogická.

Viacnásobný regresný model

Vysvetlím nezamestnanosť pomocou viacerých premenných.

model2 <- lm(unemploy ~ pce + pop + uempmed, data=econ)
summary(model2)

Call:
lm(formula = unemploy ~ pce + pop + uempmed, data = econ)

Residuals:
    Min      1Q  Median      3Q     Max 
-3182.4  -733.1   -38.1   645.8  3749.1 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) -2.659e+04  1.585e+03  -16.78   <2e-16 ***
pce         -1.510e+00  8.132e-02  -18.56   <2e-16 ***
pop          1.406e-01  7.531e-03   18.67   <2e-16 ***
uempmed      6.370e+02  1.560e+01   40.84   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1030 on 570 degrees of freedom
Multiple R-squared:  0.8488,    Adjusted R-squared:  0.848 
F-statistic:  1067 on 3 and 570 DF,  p-value: < 2.2e-16

Model ukazuje, že počet nezamestnaných najlepšie vysvetľuje dĺžka nezamestnanosti a populácia, zatiaľ čo negatívna väzba s PCE je pravdepodobne dôsledkom trendu v časovej rade, nie skutočného ekonomického vzťahu.

Multikolinearita – VIF

library(car)
vif(model2)
      pce       pop   uempmed 
45.187660 41.216070  2.216113 

Výstup ukazuje, že model má extrémne vysokú multikolinearitu medzi premennými pce a pop, čo spôsobuje, že ich koeficienty sú veľmi nespoľahlivé a ich vplyv na nezamestnanosť nemožno z modelu dôveryhodne interpretovať.

Korelačná matica

vars <- econ[, c("pce", "pop", "uempmed", "unemploy")]
round(cor(vars, use="complete.obs"), 3)
           pce   pop uempmed unemploy
pce      1.000 0.987   0.727    0.615
pop      0.987 1.000   0.695    0.634
uempmed  0.727 0.695   1.000    0.869
unemploy 0.615 0.634   0.869    1.000

Pce(spotreba domácností) a pop(populácia) sú veľmi silne korelované (logické – väčšia populácia spotrebuje viac).

Uempmed(doba nezamestnanosti) a unemploy(počet nezamestnaných) sú tiež veľmi silne korelované (dlhšia nezamestnanosť súvisí s väčším počtom nezamestnaných).

Všetky premenné sú medzi sebou pozitívne korelované, žiadna nie je negatívne korelovaná.

pairs(vars,
      main = "Scatterplotová matica – premenné pce, pop, uempmed, unemploy")

Condition Number

library(MASS)
x <- model.matrix(model2)[, -1]
sv <- svd(x)$d
condition_number <- max(sv) / min(sv)
condition_number
[1] 91271.39

Číslo podmienky ~ 91 271 je extrémne vysoké. Prakticky to znamená že matica je silne kolineárna – niektoré premenné sú takmer lineárne závislé.

Alternatívne riešenia multikolinearity

# Centrovanie
cent <- scale(vars, center = TRUE, scale = FALSE)
round(cor(cent), 3)
           pce   pop uempmed unemploy
pce      1.000 0.987   0.727    0.615
pop      0.987 1.000   0.695    0.634
uempmed  0.727 0.695   1.000    0.869
unemploy 0.615 0.634   0.869    1.000

Centrovanie nezmenilo lineárne vzťahy, len posunulo premenné na stred 0

PCA

vars <- econ[, c("pce", "pop", "uempmed", "unemploy")]

pca_res <- prcomp(vars, center = TRUE, scale. = TRUE)  

summary(pca_res)
Importance of components:
                          PC1    PC2    PC3     PC4
Standard deviation     1.8072 0.7743 0.3572 0.08321
Proportion of Variance 0.8165 0.1499 0.0319 0.00173
Cumulative Proportion  0.8165 0.9664 0.9983 1.00000
pca_res$rotation  
               PC1        PC2         PC3        PC4
pce      0.5120962  0.4817677 -0.08517838  0.7059759
pop      0.5099582  0.4850154  0.22550790 -0.6736831
uempmed  0.5026852 -0.4187833 -0.73740369 -0.1678212
unemploy 0.4743498 -0.5977294  0.63097277  0.1399470
head(pca_res$x)
           PC1        PC2        PC3       PC4
[1,] -2.803222 0.15410408 -0.6711345 0.1294587
[2,] -2.775348 0.13653351 -0.7056593 0.1182991
[3,] -2.781611 0.14724649 -0.6834953 0.1205157
[4,] -2.709410 0.07695554 -0.6918826 0.1137444
[5,] -2.744368 0.11794864 -0.6733345 0.1154366
[6,] -2.737427 0.12175595 -0.7019615 0.1074157

Dáta sú vysoko korelované. PC1 vysvetľuje väčšinu variability (81,6%) – dá sa považovať za hlavnú dimenziu dát. PC2 zachytáva kontrast medzi ekonomickými veličinami (pce, pop) a nezamestnanosťou (uempmed, unemploy). PC3 a PC4 sú zanedbateľné, takže dá sa znížiť dimenzionalita z 4 na 2 bez veľkej straty informácií.

LS0tCnRpdGxlOiAiTXVsdGlrb2xpbmVhcml0YSIKYXV0aG9yOiBBbGljYSBUdnJkw6EKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldCgKICBlY2hvID0gVFJVRSwKICBtZXNzYWdlID0gRkFMU0UsCiAgd2FybmluZyA9IEZBTFNFCikKYGBgCgojIE5hxI3DrXRhbmllIGTDoXQKYGBge3J9CmVjb24gPC0gcmVhZC5jc3YoImVjb25vbWljcy5jc3YiKQpzdHIoZWNvbikKc3VtbWFyeShlY29uKQpgYGAKCi0tLQpgYGB7cn0KdWRhamUgPC0gcmVhZC5jc3YoImVjb25vbWljcy5jc3YiKQptb2RlbCA8LSBsbShwY2UgfiB1bmVtcGxveSArIHBzYXZlcnQgKyBwb3AsIAogICAgICAgICAgICBkYXRhID0gdWRhamUpCgpzdW1tYXJ5KG1vZGVsKQpgYGAKVsWhZXRreSBwcmVtZW5uw6kgc8O6IGV4dHLDqW1uZSB2w716bmFtbsOpLiBQb3B1bMOhY2lhIGEgw7pzcG9yeSBtYWrDuiBzaWxuw70gcG96aXTDrXZueSB2esWlYWggc28gc3BvdHJlYm91LiBOZXphbWVzdG5hbm9zxaUgbcOhIHNsYWLDvSwgYWxlIMWhdGF0aXN0aWNreSB2w716bmFtbsO9IG5lZ2F0w612bnkgdnBseXYuCgoKCiMgVml6dWFsaXrDoWNpYSB2eWJyYW7DvWNoIHByZW1lbm7DvWNoCmBgYHtyfQpwbG90KGVjb24kdW5lbXBsb3ksIHR5cGU9ImwiLCBtYWluPSJOZXphbWVzdG5hbm9zxaUiKQpwbG90KGVjb24kcGNlLCB0eXBlPSJsIiwgbWFpbj0iT3NvYm7DoSBzcG90cmViYSAoUENFKSIpCmBgYApLcml2a2EgbmV6YW1lc3RuYW5vc3RpIG3DoSDigJ5jaWstY2Fr4oCcIHZ6b3IuIE3DtMW+bWUgdmlkaWXFpSBzZXrDs25ub3PFpS4gCgpLcml2a2Egb3NvYm5laiBzcG90cmVieSBpZGUgbmV1c3TDoWxlIGhvcmUg4oCTIG9kIGhvZG5vdHkgcHJpYmxpxb5uZSAxMDAwIGHFviBwbyB2aWFjIGFrbyAxMiAwMDAuIFRvIHpuYW1lbsOhLCDFvmUgc3BvdHJlYmEgZG9tw6Fjbm9zdMOtIHYgVVNBIGRsaG9kb2JvIHLDoXN0bGEuIMW9aWFkbmEgc2V6w7Nubm9zxaUgLSDEjGlhcmtvdmFuw6EgbMOtbmlhLCBuZW3DoSDFvmlhZG55IG9wYWt1asO6Y2kgc2Eg4oCeY2lrLWNha+KAnCB2em9yIG5hcm96ZGllbCBvZCBrcml2a3kgbmV6YW1lc3RuYW5vc3RpLgoKIyBKZWRub2R1Y2jDvSByZWdyZXNuw70gbW9kZWwKVnlzdmV0bMOtbSAqKm1pZXJhIG5lemFtZXN0bmFub3N0aSoqIChgdW5lbXBsb3lgKSBwb21vY291ICoqb3NvYm5laiBzcG90cmVieSoqIChgcGNlYCkuCgpgYGB7cn0KbW9kZWwxIDwtIGxtKHVuZW1wbG95IH4gcGNlLCBkYXRhPWVjb24pCnN1bW1hcnkobW9kZWwxKQpgYGAKS29lZmljaWVudCBwY2UgamUgdsO9em5hbW7DvSwgYWxlIHByYXZkZXBvZG9ibmUgemFjaHl0w6F2YSBsZW4gc3BvbG/EjW7DvSB0cmVuZCwgbmllIHJlw6FsbnkgdnrFpWFoLiBSwrIgamUgbsOtemtlICjiiYgwLjM4KSwgbW9kZWwgbmV2eXN2ZXTEvnVqZSBuZXphbWVzdG5hbm9zxaUgZG9icmUuIEludGVycHJldMOhY2lhIGplIGVrb25vbWlja3kgbmVsb2dpY2vDoS4KCiMgVmlhY27DoXNvYm7DvSByZWdyZXNuw70gbW9kZWwKVnlzdmV0bMOtbSBuZXphbWVzdG5hbm9zxaUgcG9tb2NvdSB2aWFjZXLDvWNoIHByZW1lbm7DvWNoLgoKYGBge3J9Cm1vZGVsMiA8LSBsbSh1bmVtcGxveSB+IHBjZSArIHBvcCArIHVlbXBtZWQsIGRhdGE9ZWNvbikKc3VtbWFyeShtb2RlbDIpCmBgYApNb2RlbCB1a2F6dWplLCDFvmUgcG/EjWV0IG5lemFtZXN0bmFuw71jaCBuYWpsZXDFoWllIHZ5c3ZldMS+dWplIGTEusW+a2EgbmV6YW1lc3RuYW5vc3RpIGEgcG9wdWzDoWNpYSwgemF0aWHEviDEjW8gbmVnYXTDrXZuYSB2w6R6YmEgcyBQQ0UgamUgcHJhdmRlcG9kb2JuZSBkw7RzbGVka29tIHRyZW5kdSB2IMSNYXNvdmVqIHJhZGUsIG5pZSBza3V0b8SNbsOpaG8gZWtvbm9taWNrw6lobyB2esWlYWh1LgoKIyBNdWx0aWtvbGluZWFyaXRhIOKAkyBWSUYKYGBge3J9CmxpYnJhcnkoY2FyKQp2aWYobW9kZWwyKQpgYGAKVsO9c3R1cCB1a2F6dWplLCDFvmUgbW9kZWwgbcOhIGV4dHLDqW1uZSB2eXNva8O6IG11bHRpa29saW5lYXJpdHUgbWVkemkgcHJlbWVubsO9bWkgcGNlIGEgcG9wLCDEjW8gc3DDtHNvYnVqZSwgxb5lIGljaCBrb2VmaWNpZW50eSBzw7ogdmXEvm1pIG5lc3BvxL5haGxpdsOpIGEgaWNoIHZwbHl2IG5hIG5lemFtZXN0bmFub3PFpSBuZW1vxb5ubyB6IG1vZGVsdSBkw7R2ZXJ5aG9kbmUgaW50ZXJwcmV0b3ZhxaUuCgojIEtvcmVsYcSNbsOhIG1hdGljYQpgYGB7cn0KdmFycyA8LSBlY29uWywgYygicGNlIiwgInBvcCIsICJ1ZW1wbWVkIiwgInVuZW1wbG95IildCnJvdW5kKGNvcih2YXJzLCB1c2U9ImNvbXBsZXRlLm9icyIpLCAzKQpgYGAKUGNlKHNwb3RyZWJhIGRvbcOhY25vc3TDrSkgYSBwb3AocG9wdWzDoWNpYSkgc8O6IHZlxL5taSBzaWxuZSBrb3JlbG92YW7DqSAobG9naWNrw6kg4oCTIHbDpMSNxaFpYSBwb3B1bMOhY2lhIHNwb3RyZWJ1amUgdmlhYykuCgpVZW1wbWVkKGRvYmEgbmV6YW1lc3RuYW5vc3RpKSBhIHVuZW1wbG95KHBvxI1ldCBuZXphbWVzdG5hbsO9Y2gpIHPDuiB0aWXFviB2ZcS+bWkgc2lsbmUga29yZWxvdmFuw6kgKGRsaMWhaWEgbmV6YW1lc3RuYW5vc8WlIHPDunZpc8OtIHMgdsOkxI3FocOtbSBwb8SNdG9tIG5lemFtZXN0bmFuw71jaCkuCgpWxaFldGt5IHByZW1lbm7DqSBzw7ogbWVkemkgc2Vib3UgcG96aXTDrXZuZSBrb3JlbG92YW7DqSwgxb5pYWRuYSBuaWUgamUgbmVnYXTDrXZuZSBrb3JlbG92YW7DoS4KCmBgYHtyfQpwYWlycyh2YXJzLAogICAgICBtYWluID0gIlNjYXR0ZXJwbG90b3bDoSBtYXRpY2Eg4oCTIHByZW1lbm7DqSBwY2UsIHBvcCwgdWVtcG1lZCwgdW5lbXBsb3kiKQpgYGAKCgojIENvbmRpdGlvbiBOdW1iZXIKYGBge3J9CmxpYnJhcnkoTUFTUykKeCA8LSBtb2RlbC5tYXRyaXgobW9kZWwyKVssIC0xXQpzdiA8LSBzdmQoeCkkZApjb25kaXRpb25fbnVtYmVyIDwtIG1heChzdikgLyBtaW4oc3YpCmNvbmRpdGlvbl9udW1iZXIKYGBgCsSMw61zbG8gcG9kbWllbmt5IH4gOTEgMjcxIGplIGV4dHLDqW1uZSB2eXNva8OpLiBQcmFrdGlja3kgdG8gem5hbWVuw6Egxb5lIG1hdGljYSBqZSBzaWxuZSBrb2xpbmXDoXJuYSDigJMgbmlla3RvcsOpIHByZW1lbm7DqSBzw7ogdGFrbWVyIGxpbmXDoXJuZSB6w6F2aXNsw6kuCgojIEFsdGVybmF0w612bmUgcmllxaFlbmlhIG11bHRpa29saW5lYXJpdHkKCi0gY2VudHJvdmFuaWUgKG9kxI3DrXRhbmllIHByaWVtZXJ1KS0gbcO0xb5lIHpuw63FvmnFpSBudW1lcmlja8OpIHByb2Jsw6lteSBhIHN0YWJpbGl6b3ZhxaUgdsO9cG/EjXR5LiBBaiBrZcSPIG5lem5pxb51amUgc2Ftb3Ruw7oga29yZWzDoWNpdSwgcG9tw6FoYSBwcmkgdsO9cG/EjXRlIHJlZ3Jlc27DvWNoIGtvZWZpY2llbnRvdi4KCgpgYGB7cn0KIyBDZW50cm92YW5pZQpjZW50IDwtIHNjYWxlKHZhcnMsIGNlbnRlciA9IFRSVUUsIHNjYWxlID0gRkFMU0UpCnJvdW5kKGNvcihjZW50KSwgMykKYGBgCkNlbnRyb3ZhbmllIG5lem1lbmlsbyBsaW5lw6FybmUgdnrFpWFoeSwgbGVuIHBvc3VudWxvIHByZW1lbm7DqSBuYSBzdHJlZCAwCgojIFBDQQoKYGBge3J9CnZhcnMgPC0gZWNvblssIGMoInBjZSIsICJwb3AiLCAidWVtcG1lZCIsICJ1bmVtcGxveSIpXQoKcGNhX3JlcyA8LSBwcmNvbXAodmFycywgY2VudGVyID0gVFJVRSwgc2NhbGUuID0gVFJVRSkgIAoKc3VtbWFyeShwY2FfcmVzKQoKcGNhX3JlcyRyb3RhdGlvbiAgCgpoZWFkKHBjYV9yZXMkeCkKYGBgCkTDoXRhIHPDuiB2eXNva28ga29yZWxvdmFuw6kuIFBDMSB2eXN2ZXTEvnVqZSB2w6TEjcWhaW51IHZhcmlhYmlsaXR5ICg4MSw2JSkg4oCTIGTDoSBzYSBwb3Zhxb5vdmHFpSB6YSBobGF2bsO6IGRpbWVueml1IGTDoXQuIFBDMiB6YWNoeXTDoXZhIGtvbnRyYXN0IG1lZHppIGVrb25vbWlja8O9bWkgdmVsacSNaW5hbWkgKHBjZSwgcG9wKSBhIG5lemFtZXN0bmFub3PFpW91ICh1ZW1wbWVkLCB1bmVtcGxveSkuIFBDMyBhIFBDNCBzw7ogemFuZWRiYXRlxL5uw6ksIHRha8W+ZSBkw6Egc2Egem7DrcW+acWlIGRpbWVuemlvbmFsaXRhIHogNCBuYSAyIGJleiB2ZcS+a2VqIHN0cmF0eSBpbmZvcm3DoWNpw60u