Za raziskovalno vprašanje sem si izbral sledeče: Kako Ginijev koeficient, brezposelnost celotne delovne sile, indeks zivljenskih stroskov in clanstvo v EU vplivajo na bruto domači proizvod na prebivalca v različnih državah v Evropi? Naredil bom dva modela, da vidim, ali ima članstvo v EU vpliv.

Vse podatke razen indeksa življenjskih stroškov sem dobil na spletni strani World Bank, podatke o indeksu življenjskih stroškov pa na spletni strani Numbeo.

V prvem koraku sem prebral podatke s funkcijo read.table

VPRASANJE2 <- read.table("~/Faks/Magistrski študij/1. letnik, 1. semester/Metode in tehnike raziskovalnega dela/Domača naloga R/PodatkiVprašanje2.csv", header=TRUE, sep=";", dec=",")

BDP na prebivalca: Je moja odvisna spremenljivka, merjena je v dolarjih.

Ginijev koeficient: Merjeno v odstotkih. 0 pomeni popolno enakost, 100 pomeni popolno neenakost.

Stopnja brezposelnosti: Merjeno v odstotkih in sicer odstotek celotne delovne sile.

Indeks zivljenskih stroskov: Relativne cene potrošniških dobrin glede na cene v New York City-ju. Država z indeksom 120 bi bila za 20% dražja od New Yorka.

Članica EU: 0-> ni članica, 1-> je članica.

head(VPRASANJE2)
##     Drzava BDPnaPrebivalcav. GinijevKoeficient.
## 1  Albania           5343.04               29.4
## 2  Austria          48789.50               29.8
## 3  Belarus           6542.86               24.4
## 4  Belgium          45609.00               26.0
## 5 Bulgaria          10148.34               40.5
## 6  Croatia          14269.91               29.5
##   Brezposelnost..CelotneDelovneSile. IndeksZivljenjskihStroskov ClanicaEU
## 1                              13.07                       36.4         0
## 2                               5.20                       70.4         1
## 3                               4.05                       34.7         0
## 4                               5.56                       71.8         1
## 5                               5.13                       36.7         1
## 6                               7.51                       49.7         1

Kategorialni spremenljivki ClanicaEU sem pripisal vsebinsko vrednost, nato pa sem s summary predstavil opisno statistiko spremenljivk.

VPRASANJE2$ClanicaEUF <- factor(VPRASANJE2$ClanicaEU,
                                levels = c(0,1),
                                labels = c("Ne", "Da"))
summary(VPRASANJE2[c(-1,-6)])
##  BDPnaPrebivalcav. GinijevKoeficient. Brezposelnost..CelotneDelovneSile.
##  Min.   :  3752    Min.   :24.00      Min.   : 1.210                    
##  1st Qu.: 13047    1st Qu.:27.10      1st Qu.: 4.990                    
##  Median : 23595    Median :30.70      Median : 5.640                    
##  Mean   : 31326    Mean   :30.73      Mean   : 7.095                    
##  3rd Qu.: 46750    3rd Qu.:34.60      3rd Qu.: 8.290                    
##  Max.   :116905    Max.   :40.50      Max.   :16.600                    
##  IndeksZivljenjskihStroskov ClanicaEUF
##  Min.   : 31.60             Ne: 9     
##  1st Qu.: 39.20             Da:24     
##  Median : 53.40                       
##  Mean   : 55.98                       
##  3rd Qu.: 70.30                       
##  Max.   :100.50

Lahko vidimo, da sta spremenljivki BDP na prebivalca in Brezposelnost rahlo asimetrični v desno.

Nato prevermi povezavo med našimi spremenljivkami s korelacijsko matriko.

library(car)
## Loading required package: carData
scatterplotMatrix(VPRASANJE2[, c(-1, -6, -7)],
                  smooth= FALSE)

Kot vidimo, nebomo imeli nobenih težav s linearnostjo.

library(Hmisc)
## 
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:base':
## 
##     format.pval, units
rcorr(as.matrix(VPRASANJE2[, c(-1, -6, -7)]))
##                                    BDPnaPrebivalcav. GinijevKoeficient.
## BDPnaPrebivalcav.                               1.00              -0.17
## GinijevKoeficient.                             -0.17               1.00
## Brezposelnost..CelotneDelovneSile.             -0.20               0.35
## IndeksZivljenjskihStroskov                      0.85              -0.27
##                                    Brezposelnost..CelotneDelovneSile.
## BDPnaPrebivalcav.                                               -0.20
## GinijevKoeficient.                                               0.35
## Brezposelnost..CelotneDelovneSile.                               1.00
## IndeksZivljenjskihStroskov                                      -0.18
##                                    IndeksZivljenjskihStroskov
## BDPnaPrebivalcav.                                        0.85
## GinijevKoeficient.                                      -0.27
## Brezposelnost..CelotneDelovneSile.                      -0.18
## IndeksZivljenjskihStroskov                               1.00
## 
## n= 33 
## 
## 
## P
##                                    BDPnaPrebivalcav. GinijevKoeficient.
## BDPnaPrebivalcav.                                    0.3570            
## GinijevKoeficient.                 0.3570                              
## Brezposelnost..CelotneDelovneSile. 0.2618            0.0463            
## IndeksZivljenjskihStroskov         0.0000            0.1309            
##                                    Brezposelnost..CelotneDelovneSile.
## BDPnaPrebivalcav.                  0.2618                            
## GinijevKoeficient.                 0.0463                            
## Brezposelnost..CelotneDelovneSile.                                   
## IndeksZivljenjskihStroskov         0.3228                            
##                                    IndeksZivljenjskihStroskov
## BDPnaPrebivalcav.                  0.0000                    
## GinijevKoeficient.                 0.1309                    
## Brezposelnost..CelotneDelovneSile. 0.3228                    
## IndeksZivljenjskihStroskov

Spremenljivke so tako pozitivno kot tudi negativno povezane, kot vidimo iz zgornje matrike. Ko gledamo p vrednosti, vidimo, da sta najpomembnejši povezava med BDP na prebivalca in indeksom življenskih stroškov ter povezava med Brezposelnostjo in Ginijevim koeficientom.

Spodaj naredimo linearni model. Preverimo še VIF, če je pri kateri spremenljivki višji od 5, ga moramo dati strani.

fit1 <- lm(BDPnaPrebivalcav. ~ GinijevKoeficient. + Brezposelnost..CelotneDelovneSile. + IndeksZivljenjskihStroskov, data = VPRASANJE2)
vif(fit1)
##                 GinijevKoeficient. Brezposelnost..CelotneDelovneSile. 
##                           1.199115                           1.148939 
##         IndeksZivljenjskihStroskov 
##                           1.087038
mean(vif(fit1))
## [1] 1.145031

Nimamo problema, vsi so dosti nižji.

Spodaj v tabelo dodamo dva stolpca, s katerima prevberimo standardne ostanke in cookovo razdalja. S tem se bomo poizkušali znebiti morebitnih osamelcev.

VPRASANJE2$StdOstanki <- round(rstandard(fit1), 3)
VPRASANJE2$CooksD <- round(cooks.distance(fit1), 3)

hist(VPRASANJE2$StdOstanki,
     xlab="Standardizirani ostanki",
     ylab="Frekvenca",
     main="Histogram standardiziranih ostankov")

Imamo enega osamelca.

shapiro.test(VPRASANJE2$StdOstanki)
## 
##  Shapiro-Wilk normality test
## 
## data:  VPRASANJE2$StdOstanki
## W = 0.77753, p-value = 1.238e-05

Zavrnemo H0, ker je p<0,001 in ugotavljamo, da ni normalne porazdelitve.

head(VPRASANJE2[order(VPRASANJE2$StdOstanki),], 4)
##     Drzava BDPnaPrebivalcav. GinijevKoeficient.
## 33 Iceland          58848.40               24.8
## 19   Malta          29597.64               31.4
## 15   Italy          31922.92               35.2
## 11  France          39179.74               30.7
##    Brezposelnost..CelotneDelovneSile. IndeksZivljenjskihStroskov ClanicaEU
## 33                               5.50                      100.5         0
## 19                               4.35                       67.5         1
## 15                               9.16                       67.3         1
## 11                               8.01                       74.1         1
##    ClanicaEUF StdOstanki CooksD
## 33         Ne     -2.009  0.324
## 19         Da     -1.327  0.031
## 15         Da     -1.112  0.033
## 11         Da     -1.026  0.019

Imamo enega osamelca, in sicer je to Islandija.

head(VPRASANJE2[order(-VPRASANJE2$StdOstanki),], 4)
##             Drzava BDPnaPrebivalcav. GinijevKoeficient.
## 18      Luxembourg         116905.37               33.4
## 14         Ireland          85973.09               29.2
## 31 North Macedonia           5965.50               33.5
## 28          Sweden          52837.90               28.9
##    Brezposelnost..CelotneDelovneSile. IndeksZivljenjskihStroskov ClanicaEU
## 18                               6.77                       81.9         1
## 14                               5.62                       75.9         1
## 31                              16.60                       31.6         0
## 28                               8.29                       69.8         1
##    ClanicaEUF StdOstanki CooksD
## 18         Da      4.095  0.636
## 14         Da      2.304  0.100
## 31         Ne      0.680  0.044
## 28         Da      0.485  0.004

Tukaj pa imamo dva osamelca, in sicer Luksemburg in Irsko.

hist(VPRASANJE2$CooksD,
     xlab="Cookove razdalje",
     ylab="Frekvenca",
     main="Histogram Cookovih razdalj")

head(VPRASANJE2[order(-VPRASANJE2$CooksD),], 6)
##             Drzava BDPnaPrebivalcav. GinijevKoeficient.
## 18      Luxembourg         116905.37               33.4
## 33         Iceland          58848.40               24.8
## 14         Ireland          85973.09               29.2
## 12          Greece          17617.29               33.6
## 31 North Macedonia           5965.50               33.5
## 15           Italy          31922.92               35.2
##    Brezposelnost..CelotneDelovneSile. IndeksZivljenjskihStroskov ClanicaEU
## 18                               6.77                       81.9         1
## 33                               5.50                      100.5         0
## 14                               5.62                       75.9         1
## 12                              15.90                       55.7         1
## 31                              16.60                       31.6         0
## 15                               9.16                       67.3         1
##    ClanicaEUF StdOstanki CooksD
## 18         Da      4.095  0.636
## 33         Ne     -2.009  0.324
## 14         Da      2.304  0.100
## 12         Da     -0.828  0.047
## 31         Ne      0.680  0.044
## 15         Da     -1.112  0.033

Tudi tukaj imamo tri osamelce, enake kot prej, zato lahko vse te tri odstranimo.

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:Hmisc':
## 
##     src, summarize
## The following object is masked from 'package:car':
## 
##     recode
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
VPRASANJE2 <- VPRASANJE2 %>%
  dplyr::filter(!Drzava %in% c("Luxembourg", "Iceland", "Ireland"))

Ocenimo model

fit1 <- lm(BDPnaPrebivalcav. ~ GinijevKoeficient. + Brezposelnost..CelotneDelovneSile. + IndeksZivljenjskihStroskov, data = VPRASANJE2)
vif(fit1)
##                 GinijevKoeficient. Brezposelnost..CelotneDelovneSile. 
##                           1.168919                           1.140285 
##         IndeksZivljenjskihStroskov 
##                           1.055027
VPRASANJE2$StdOstanki <- round(rstandard(fit1), 3)
VPRASANJE2$CooksD <- round(cooks.distance(fit1), 3)

Preverimo homoskedastičnost in linearnost.

VPRASANJE2$StdOcenaVred <- scale(fit1$fitted.values)

library(car)
scatterplot(y=VPRASANJE2$StdOstanki, x=VPRASANJE2$StdOcenaVred,
            ylab="Standardizirani ostanki",
            xlab="Standardizirane ocenjene vrednosti",
            regLine=FALSE,
            smooth=FALSE)

S Breusch Paganovim testom preverimo homoskedastičnost. Glede linearnosti ni problema.

library(olsrr)
## 
## Attaching package: 'olsrr'
## The following object is masked from 'package:datasets':
## 
##     rivers
ols_test_breusch_pagan(fit1)
## 
##  Breusch Pagan Test for Heteroskedasticity
##  -----------------------------------------
##  Ho: the variance is constant            
##  Ha: the variance is not constant        
## 
##                     Data                      
##  ---------------------------------------------
##  Response : BDPnaPrebivalcav. 
##  Variables: fitted values of BDPnaPrebivalcav. 
## 
##         Test Summary          
##  -----------------------------
##  DF            =    1 
##  Chi2          =    3.859761 
##  Prob > Chi2   =    0.04945736

Vidimo, da smo kršili predpostavko homoskedastičnosti pri p<0,05. Preden ocenimo naslednji model, moramo narediti popravek s funkcijo lm_robust. HC1 samo pomeni, je bodo te napake delo avtorja Huberja-Whita.

library(estimatr)
fit1 <- lm_robust(BDPnaPrebivalcav. ~ GinijevKoeficient. + Brezposelnost..CelotneDelovneSile. + IndeksZivljenjskihStroskov, se_type="HC1", data = VPRASANJE2)
summary(fit1)
## 
## Call:
## lm_robust(formula = BDPnaPrebivalcav. ~ GinijevKoeficient. + 
##     Brezposelnost..CelotneDelovneSile. + IndeksZivljenjskihStroskov, 
##     data = VPRASANJE2, se_type = "HC1")
## 
## Standard error type:  HC1 
## 
## Coefficients:
##                                     Estimate Std. Error t value  Pr(>|t|)
## (Intercept)                        -23816.04    6510.73 -3.6580 1.133e-03
## GinijevKoeficient.                    -79.88     167.39 -0.4772 6.372e-01
## Brezposelnost..CelotneDelovneSile.   -353.30     288.41 -1.2250 2.316e-01
## IndeksZivljenjskihStroskov           1030.04      66.12 15.5773 1.061e-14
##                                    CI Lower CI Upper DF
## (Intercept)                        -37199.0 -10433.0 26
## GinijevKoeficient.                   -423.9    264.2 26
## Brezposelnost..CelotneDelovneSile.   -946.1    239.5 26
## IndeksZivljenjskihStroskov            894.1   1166.0 26
## 
## Multiple R-squared:  0.9117 ,    Adjusted R-squared:  0.9015 
## F-statistic:  95.3 on 3 and 26 DF,  p-value: 3.773e-14

Statistično značilna je pojasnjevalna spremenljivka Indeks zivljenskih stroskov. Primer razlage: Če se indeks življenjskih stroškov poveča za 1, se BDP na prebivalca poveča za 1030,04 dolarja pri p<0,0001. R na kvadrat je multipli koeficient determinacije in nam pove, da lahko 91,17% vse variabilnosti BDP-ja na prebivalca pojasnimo z linearnim vplivom vseh pojasnjevalnih spremenljivk.

V spodnjem modelu dodajamo še podatek o članstvu v EU.

fit2 <- lm_robust(BDPnaPrebivalcav. ~ GinijevKoeficient. + Brezposelnost..CelotneDelovneSile. + IndeksZivljenjskihStroskov + ClanicaEUF, se_type="HC1", data = VPRASANJE2)
summary(fit2)
## 
## Call:
## lm_robust(formula = BDPnaPrebivalcav. ~ GinijevKoeficient. + 
##     Brezposelnost..CelotneDelovneSile. + IndeksZivljenjskihStroskov + 
##     ClanicaEUF, data = VPRASANJE2, se_type = "HC1")
## 
## Standard error type:  HC1 
## 
## Coefficients:
##                                    Estimate Std. Error t value  Pr(>|t|)
## (Intercept)                        -22664.2    6599.60 -3.4342 2.082e-03
## GinijevKoeficient.                   -114.3     171.53 -0.6662 5.114e-01
## Brezposelnost..CelotneDelovneSile.   -336.0     301.28 -1.1151 2.754e-01
## IndeksZivljenjskihStroskov           1008.5      72.22 13.9643 2.610e-13
## ClanicaEUFDa                         1265.5    1616.17  0.7830 4.410e-01
##                                    CI Lower CI Upper DF
## (Intercept)                        -36256.4  -9072.1 25
## GinijevKoeficient.                   -467.5    239.0 25
## Brezposelnost..CelotneDelovneSile.   -956.5    284.5 25
## IndeksZivljenjskihStroskov            859.7   1157.2 25
## ClanicaEUFDa                        -2063.1   4594.0 25
## 
## Multiple R-squared:  0.9124 ,    Adjusted R-squared:  0.8984 
## F-statistic: 70.31 on 4 and 25 DF,  p-value: 3.122e-13

Še vedno je statistično značilen samo indeks življenjskih stroškov. Tukaj R na kvadrat predpostavlja da lahko 91,24% vse variabilnosti BDP-ja na prebivalca pojasnimo z linearnim vplivom vseh pojasnjevalnih spremenljivk.

Ker smo modela ocenili z robustnimi standardnimi napakami, uporabimo waldtest

library(lmtest)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
waldtest(fit1, fit2, test="F")
## Wald test
## 
## Model 1: BDPnaPrebivalcav. ~ GinijevKoeficient. + Brezposelnost..CelotneDelovneSile. + 
##     IndeksZivljenjskihStroskov
## Model 2: BDPnaPrebivalcav. ~ GinijevKoeficient. + Brezposelnost..CelotneDelovneSile. + 
##     IndeksZivljenjskihStroskov + ClanicaEUF
##   Res.Df Df      F Pr(>F)
## 1     26                 
## 2     25  1 0.6131  0.441

Dobimo vrednost večjo od 0,05 in lahko rečemo, da drugi model, ki vključuje tudi članstvo v EU, bolje pojasnjuje.

Edina statistično značilna spremenljivka v prvem in drugem modelu je Indeks življenskih stroškov, lahko pa rečemo, da je drugi model boljši kot prvi.