title: “Zhluková analýza – COVID Africa” author: “Auto-generated” date: “2025-11-22” output: html_document
library(readr)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
library(pheatmap)
library(cluster)
library(factoextra)
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
covid <- read_csv("covid_africa.csv")
## Rows: 54 Columns: 10
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): Country/Other
## dbl (9): Total Cases, Total Deaths, Total Recovered, Active Cases, Tot Cases...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
summary(covid)
## Country/Other Total Cases Total Deaths Total Recovered
## Length:54 Min. : 6597 Min. : 38.0 Min. : 4874
## Class :character 1st Qu.: 22886 1st Qu.: 291.2 1st Qu.: 19856
## Mode :character Median : 63854 Median : 1024.0 Median : 62471
## Mean : 227909 Mean : 4772.6 Mean : 206895
## 3rd Qu.: 171956 3rd Qu.: 3066.5 3rd Qu.: 168677
## Max. :4076463 Max. :102595.0 Max. :3912506
## NA's :3
## Active Cases Tot Cases/ 1M pop Deaths/ 1M pop Total Tests
## Min. : 0 Min. : 381 Min. : 3.00 Min. : 23693
## 1st Qu.: 27 1st Qu.: 2452 1st Qu.: 33.25 1st Qu.: 346778
## Median : 309 Median : 4760 Median : 93.50 Median : 804909
## Mean : 6351 Mean : 27020 Mean : 312.44 Mean : 2142069
## 3rd Qu.: 1752 3rd Qu.: 16997 3rd Qu.: 226.25 3rd Qu.: 2255373
## Max. :81910 Max. :512311 Max. :2442.00 Max. :26795090
## NA's :3 NA's :3
## Tests/ 1M pop Population
## Min. : 5093 Min. : 99426
## 1st Qu.: 29172 1st Qu.: 2890966
## Median : 60951 Median : 13733078
## Mean :167376 Mean : 26016706
## 3rd Qu.:227793 3rd Qu.: 31591107
## Max. :885119 Max. :216746934
## NA's :3
num_data <- covid %>% select(-`Country/Other`) %>% scale()
row.names(num_data) <- covid$`Country/Other`
dist_mat <- dist(num_data, method = "euclidean")
hclust_res <- hclust(dist_mat, method = "ward.D2")
plot(hclust_res, main = "Dendrogram – COVID Africa", cex = 0.6)
Južná Afrika tvorí úplne samostatný klaster, pretože má výrazne najvyššie hodnoty prípadov, úmrtí aj testovania a odlišuje sa od všetkých ostatných krajín. Malé ostrovné a bohatšie štáty ako Seychely, Cabo Verde či Botswana vytvárajú ďalšiu skupinu, pretože majú malé populácie a veľmi vysoké hodnoty na milión obyvateľov. Väčšina subsaharských krajín sa zhlukuje dohromady, keďže majú veľmi podobné a relatívne nízke počty prípadov, testov aj úmrtí. Napokon veľké krajiny ako Egypt, Nigeria, Etiópia či Alžírsko tvoria vlastnú skupinu, keďže sa od priemeru odlišujú veľkosťou populácie a štruktúrou šírenia pandémie.
clusters4 <- cutree(hclust_res, k = 4)
table(clusters4)
## clusters4
## 1 2 3 4
## 7 35 11 1
pheatmap(num_data, show_rownames = TRUE, show_colnames = TRUE,
main = "Heatmap – COVID Africa")
Heatmapa ukazuje, že Južná Afrika má výrazne vyššie hodnoty takmer vo všetkých ukazovateľoch, čo ju zreteľne oddeľuje od ostatných krajín. Malé ostrovné štáty ako Seychely, Cabo Verde či Botswana majú vysoké hodnoty na milión obyvateľov, a preto sa farebne výrazne odlišujú od priemeru. Väčšina afrických krajín má podobné nízke až stredné hodnoty, čo spôsobuje, že väčšina políčok je zafarbená jednotne v modrých odtieňoch. Krajiny s veľkou populáciou, ako Egypt, Nigéria či Etiópia, sa farebne odlišujú najmä v stĺpci populácie a v prepočtoch na milión obyvateľov, no inak sú menej extrémne ako Južná Afrika.
library(dplyr)
num_raw <- covid %>%
select(-`Country/Other`) %>%
mutate(across(everything(), as.numeric))
cc_idx <- complete.cases(num_raw)
num_data <- scale(num_raw[cc_idx, ])
row.names(num_data) <- covid$`Country/Other`[cc_idx]
dist_mat <- dist(num_data)
hclust_res <- hclust(dist_mat, method="ward.D2")
pca_res <- prcomp(num_data, scale. = FALSE)
fviz_pca_ind(pca_res, geom = "point", repel = TRUE,
title = "PCA – COVID Africa")
PCA ukazuje, že väčšina afrických krajín sa nachádza v jednej zhustenej
skupine vpravo dole, čo znamená, že ich COVID profily sú si veľmi
podobné. Niekoľko štátov, najmä malé ostrovné krajiny, sa nachádza
vyššie na osi druhého komponentu, čo naznačuje vyššie hodnoty v
ukazovateľoch na milión obyvateľov. Naopak, Južná Afrika je umiestnená
ďaleko od všetkých ostatných na osi prvého komponentu, čo potvrdzuje, že
je extrémne odlišná od zvyšku kontinentu svojimi vysokými hodnotami
celkových prípadov, úmrtí aj testov. PCA teda jasne oddeľuje tri
skupiny: Južnú Afriku ako extrém, malé ostrovné štáty s vysokými
prepočtami na populáciu a väčšinu afrických krajín, ktoré majú podobný a
mierny priebeh pandémie.
set.seed(123)
k3 <- kmeans(num_data, centers = 3, nstart = 20)
k4 <- kmeans(num_data, centers = 4, nstart = 20)
fviz_cluster(k3, data = num_data,
main = "K-means (3 klastre) – COVID Africa")
K-means rozdelil krajiny do troch skupín tak, že Južná Afrika tvorí samostatný klaster, keďže svojimi hodnotami extrémne vyčnieva od všetkých ostatných. Druhý klaster tvoria malé ostrovné štáty ako Botswana, Seychely, Cabo Verde či Namíbia, ktoré majú vysoké hodnoty na milión obyvateľov a preto sa výrazne odlišujú od kontinentálneho priemeru. Tretí klaster obsahuje väčšinu afrických krajín, ktoré majú podobný priebeh pandémie a podobné hodnoty vo všetkých sledovaných ukazovateľoch, a preto sa zhlukujú dohromady v jednej veľkej skupine.
fviz_cluster(k4, data = num_data,
main = "K-means (4 klastre) – COVID Africa")
Pri štyroch klastroch zostáva Južná Afrika opäť úplne samostatná, pretože svojimi extrémne vysokými hodnotami výrazne vyčnieva nad ostatné krajiny. Druhý klaster tvoria veľké africké populácie ako Egypt, Nigéria, Uganda či Etiópia, ktoré majú odlišnú kombináciu celkových prípadov, úmrtí a testov než väčšina kontinentu. Tretí klaster obsahuje malé ostrovné a bohatšie štáty ako Botswana, Cabo Verde, Seychely, Namíbia alebo Líbya, ktoré majú vysoké hodnoty na milión obyvateľov a preto sa zoskupujú spolu. Štvrtý klaster zahŕňa najväčšiu časť afrických krajín, ktoré majú podobný priebeh pandémie a vytvárajú kompaktnú skupinu s podobnými a skôr miernymi hodnotami vo všetkých sledovaných ukazovateľoch.