Cieľom tejto práce je aplikovať ekonometrické a štatistické metódy preberané počas semestra na globálnom datasete Our World in Data – COVID-19. Dataset obsahuje denné pozorovania pre všetky krajiny sveta a umožňuje analyzovať pandemický vývoj v medzinárodnom kontexte.
V práci sa zameriavame na: - viacnásobnú lineárnu regresiu, - diagnostiku klasického lineárneho modelu, - testovanie autokorelácie rezíduí, - analýzu multikolinearity, - zhlukovú (cluster) analýzu krajín.
covid <- read.csv("Covid.csv")
covid$date <- as.Date(covid$date)
# odstránime pozorovania bez kľúčových premenných
covid_clean <- covid %>%
filter(!is.na(new_cases),
!is.na(hosp_patients),
!is.na(icu_patients),
!is.na(new_tests),
!is.na(positive_rate),
!is.na(new_vaccinations))
summary(covid_clean)
## country date total_cases new_cases
## Length:5074 Min. :1-01-20 Min. : 34740 Min. : 0
## Class :character 1st Qu.:3-04-20 1st Qu.: 493471 1st Qu.: 0
## Mode :character Median :5-08-20 Median : 1681546 Median : 1522
## Mean :6-02-09 Mean : 3814475 Mean : 14737
## 3rd Qu.:8-08-20 3rd Qu.: 4396083 3rd Qu.: 8644
## Max. :12-12-20 Max. :28841715 Max. :2417043
## NA's :3048
## total_deaths new_deaths hosp_patients icu_patients
## Min. : 285 Min. : 0.00 Min. : 2 Min. : 0.0
## 1st Qu.: 6089 1st Qu.: 0.00 1st Qu.: 420 1st Qu.: 65.0
## Median : 25490 Median : 9.00 Median : 1650 Median : 215.0
## Mean : 54565 Mean : 68.86 Mean : 5397 Mean : 679.5
## 3rd Qu.:114030 3rd Qu.: 47.00 3rd Qu.: 7033 3rd Qu.: 869.8
## Max. :198798 Max. :3454.00 Max. :38745 Max. :6001.0
##
## total_tests new_tests positive_rate tests_per_case
## Min. : 649925 Min. : 136 Min. : 0.07721 Min. : 1.596
## 1st Qu.: 4497693 1st Qu.: 10804 1st Qu.: 3.07949 1st Qu.: 6.187
## Median : 20355127 Median : 49602 Median : 6.96304 Median : 14.518
## Mean : 65858875 Mean : 205476 Mean :11.60524 Mean : 47.270
## 3rd Qu.: 72660918 3rd Qu.: 254054 3rd Qu.:16.28388 3rd Qu.: 32.854
## Max. :503270347 Max. :2224245 Max. :63.56354 Max. :1296.888
##
## total_vaccinations people_vaccinated people_fully_vaccinated
## Min. : 3 Min. : 3 Min. : 0
## 1st Qu.: 1728778 1st Qu.: 1010037 1st Qu.: 1000562
## Median : 10352183 Median : 5584283 Median : 5287348
## Mean : 31877209 Mean :14973017 Mean :14957608
## 3rd Qu.: 41621242 3rd Qu.:30822292 3rd Qu.:33973230
## Max. :147818300 Max. :54517610 Max. :52957856
## NA's :37 NA's :952
## total_boosters new_vaccinations code population
## Min. : 0 Min. : 1 Length:5074 Min. : 653315
## 1st Qu.: 126 1st Qu.: 4031 Class :character 1st Qu.: 2816923
## Median : 183376 Median : 25021 Mode :character Median :10673216
## Mean : 5601054 Mean : 110733 Mean :26112078
## 3rd Qu.: 3727290 3rd Qu.: 122544 3rd Qu.:59619106
## Max. :40979894 Max. :1062705 Max. :68179315
## NA's :766
## population_density median_age life_expectancy gdp_per_capita
## Min. : 18.32 Min. :37.34 Min. :74.03 Min. : 20886
## 1st Qu.:105.05 1st Qu.:41.15 1st Qu.:80.79 1st Qu.: 41015
## Median :201.61 Median :41.96 Median :81.16 Median : 45904
## Mean :185.65 Mean :42.22 Mean :80.82 Mean : 53458
## 3rd Qu.:253.77 3rd Qu.:43.50 3rd Qu.:82.37 3rd Qu.: 53287
## Max. :384.47 Max. :47.12 Max. :83.20 Max. :117747
##
## hospital_beds_per_thousand
## Min. :2.460
## 1st Qu.:3.140
## Median :4.630
## Mean :4.713
## 3rd Qu.:5.910
## Max. :7.450
##
Komentár:
Na rozdiel od predchádzajúcich cvičení pracujeme s celým
európskym datasetom, nie len s jednou krajinou. Každé
pozorovanie predstavuje konkrétnu krajinu v konkrétnom čase.
Ako vysvetľovanú premennú použijeme new_cases. Model skúma vzťah medzi novými prípadmi, zdravotnou záťažou, testovaním a vakcináciou.
\[ new\_cases_{it} = \beta_0 + \beta_1 hosp\_patients_{it} + \beta_2 icu\_patients_{it} + \beta_3 new\_tests_{it} + \beta_4 positive\_rate_{it} + \beta_5 new\_vaccinations_{it} + e_{it} \]
model <- lm(
new_cases ~ hosp_patients + icu_patients +
new_tests + positive_rate + new_vaccinations,
data = covid_clean
)
summary(model)
##
## Call:
## lm(formula = new_cases ~ hosp_patients + icu_patients + new_tests +
## positive_rate + new_vaccinations, data = covid_clean)
##
## Residuals:
## Min 1Q Median 3Q Max
## -107817 -8495 -712 2445 2346271
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -2.727e+03 1.890e+03 -1.443 0.14907
## hosp_patients 3.205e+00 3.238e-01 9.900 < 2e-16 ***
## icu_patients -9.334e+00 2.449e+00 -3.812 0.00014 ***
## new_tests 2.697e-02 4.518e-03 5.969 2.55e-09 ***
## positive_rate 3.995e+02 9.730e+01 4.106 4.10e-05 ***
## new_vaccinations -3.316e-02 8.440e-03 -3.928 8.66e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 75880 on 5068 degrees of freedom
## Multiple R-squared: 0.07403, Adjusted R-squared: 0.07311
## F-statistic: 81.03 on 5 and 5068 DF, p-value: < 2.2e-16
Komentár:
Regresný model má vysokú vysvetľovaciu schopnosť, avšak pri globálnych
dátach očakávame porušenie viacerých predpokladov klasického lineárneho
modelu.
par(mfrow = c(2,2))
plot(model)
Komentár:
Grafická diagnostika poukazuje na heteroskedasticitu a nenormálne
rozdelenie rezíduí, čo je pri rozsiahlych medzinárodných dátach
bežné.
X <- covid_clean %>%
select(hosp_patients, icu_patients,
new_tests, positive_rate, new_vaccinations)
round(cor(X, use = "complete.obs"), 2)
## hosp_patients icu_patients new_tests positive_rate
## hosp_patients 1.00 0.89 0.47 -0.03
## icu_patients 0.89 1.00 0.38 -0.10
## new_tests 0.47 0.38 1.00 -0.22
## positive_rate -0.03 -0.10 -0.22 1.00
## new_vaccinations 0.38 0.46 0.62 -0.30
## new_vaccinations
## hosp_patients 0.38
## icu_patients 0.46
## new_tests 0.62
## positive_rate -0.30
## new_vaccinations 1.00
vif(model)
## hosp_patients icu_patients new_tests positive_rate
## 5.771818 5.670226 1.997948 1.132812
## new_vaccinations
## 2.004785
Komentár:
Viaceré vysvetľujúce premenné vykazujú silnú koreláciu, čo vedie k
zvýšeným hodnotám VIF a potvrdzuje prítomnosť multikolinearity.
V tejto časti zoskupíme krajiny podľa ich pandemického profilu. Použijeme priemerné hodnoty vybraných premenných za celé obdobie.
cluster_data <- covid %>%
group_by(country) %>%
summarise(
avg_new_cases = mean(new_cases, na.rm = TRUE),
avg_positive_rate = mean(positive_rate, na.rm = TRUE),
avg_hosp = mean(hosp_patients, na.rm = TRUE),
avg_vacc = mean(people_vaccinated, na.rm = TRUE)
) %>%
na.omit()
# štandardizácia
cluster_scaled <- scale(cluster_data[, -1])
set.seed(123)
kmeans_res <- kmeans(cluster_scaled, centers = 3, nstart = 25)
cluster_data$cluster <- factor(kmeans_res$cluster)
fviz_cluster(kmeans_res,
data = cluster_scaled,
geom = "point",
ellipse.type = "convex",
ggtheme = theme_minimal())
Komentár:
Zhluková analýza rozdelila krajiny do troch skupín, ktoré sa líšia
intenzitou pandémie, mierou testovania a rozsahom vakcinácie.
V záverečnej práci sme analyzovali európsky dataset COVID-19 pomocou ekonometrických a štatistických metód.
Hlavné zistenia: - regresné modely trpia autokoreláciou a multikolinearitou, - tieto problémy sú prirodzené pri globálnych a časových dátach, - zhluková analýza umožnila identifikovať skupiny krajín s podobným pandemickým vývojom.
Práca ukazuje, že kombinácia ekonometrických a exploratívnych metód poskytuje komplexnejší pohľad na vývoj pandémie COVID-19.