Dáta, ktoré v tomto projekte budem prezentovať, pochádzajú z každoročného “World Happiness Report”
Ide o tabuľku s 1506 riadkami, ktorá obsahuje dáta o rôznych krajinách v rokoch 2015 až 2024. Na tomto reporte pracujú inštitúcie ako UN, Oxford a podobne. Tabuľka obsahuje 10 stĺpcov, kde nájdeme krajinu, región, mieru šťastia a niekoľko numerických ukazateľov.
V analýze používam aj pomocnú tabuľku z kaggle.com, ktorá obsahuje geografické údaje o všetkých krajinách.
Po prejdení dát som zistil, že sa v nich nachádzajú chyby, ktoré je potrebné opraviť.
Prvou veľkou “chybou” je fakt, že sa v zdrojovom csv súbore väčšina numerických hodnôt uvádza s čiarkou namiesto bodky.
Fix je jednoduchý, stačí tieto stĺpce pomocou cyklu pozmeniť.
columns_to_modify <- c(4,5,6,8,9,10)
data_modified <- data_original
for (t in 1:length(columns_to_modify)) {
data_modified[[columns_to_modify[t]]] <- as.numeric( gsub(",",".", data_modified[[columns_to_modify[t]]]))
}
Ďalšia chyba už je dôležitejšia a dôkladnejšie skrytá.
Po spustení skriptu na kontrolu regiónov som zistil, že v databáze má 26 krajín viac ako jeden uvedený región.
Pri týchto krajinách je teda potrebné, aby sme túto chybu opravili. Následujúci skript teda vo všetkých krajinách uvedie prvý región, ktorý sa našiel. V prípade, že tento prvý región je práve prázdny, použije sa druhý.
#pomocný vektor s prvým (resp. druhým) regiónom každej krajiny
first_region <- data_modified %>%
group_by(Country) %>%
summarize(First_Region = first(Regional.indicator[Regional.indicator != "empty"]))
#napojím vektor naspäť do tabuľky a vymením ich tam
data_modified <- data_modified %>%
left_join(first_region, by = "Country") %>%
mutate(Regional.indicator = First_Region) %>%
select(-First_Region)
Keďže máme dáta upravené a pripravené, môžeme začať analyzovať. Analýza bude rozdelená do dvoch častí. V prvej časti sa pozrieme na faktory spôsobujúce rozdiely v šťastí krajiny. V druhej časti sa bude analyzovať šťastie v jednotlivých regiónoch.
Možno najdôležitejšia otázka, ktorá nám pri tejto téme napadne, je efekt jednotlivých parametrov na celkové šťastie v krajine. Na zistenie tohto budeme počítať koreláciu jednotlivých veličín.
Korelácia bude meraná pomocou Pearsonovho korelačného koeficientu. V tejto metóde sa predpokladá normalita rozloženia dát.
## Shapiro-Wilk Normality Test:
## - W statistic: 0.99
## - p-value: <0.001
Normalita tejto veličiny je potvrdená, takže môžeme pokračovať.
V následujúcom grafe teda máme koreláciu jednotlivých veličín s celkovým šťastím krajiny. Pokiaľ si rozdelíme výsledné efekty na 3 kategórie, tak silný efekt má iba jediný faktor - sociálna pomoc zo strany štátu, zatiaľ čo slabý efekt má vnímaná korupcia štátu a zároveň aj štedrosť.
Pre samotnú analýzu ešte musíme sledovať p-hodnotu jednotlivých veličín, aby sme zistili, či je daný výsledok signifikantný alebo je možné, že je výsledkom náhody. V následujúcej tabuľke však môžeme vidieť, že p-hodnoty všetkých výsledkov sú menšie ako 5%, vďaka čomu spadajú do kategórie “signifikantné” a môžeme sa “oprieť” o tento výsledok.
Na začiatok bude určite najjednoduchšie pozrieť sa priamo na dáta z pôvodného reportu. Pokiaľ sa pozrieme na priemerné šťastie krajín v jednotlivých regiónoch (po tom ako sme opravili chybu v úvode), tak môžeme vidieť, že priemerne najšťastnejšie sú krajiny v regióne Severná Amerika, Nový Zéland a Austrália. Naopak najmenej šťastné krajiny sú v regióne Subsaharskej Afriky.
Ak chceme opustiť rozdelenie regiónov v pôvodnom reporte, stále existujú ďalšie spôsoby, akými sa dá vizualizovať rozdelenie šťastia po svete. V grafe nižšie som sa rozhodol pripojiť nový dátový zdroj, ktorý je verejne dostupný na stránke kaggle.com. V tomto zdroji vieme dohľadať geografické súradnice všetkých krajín na svete. Trochu je potrebné súbor upratať a vymazať z neho chyby, čo spravíme malými manuálnymi úpravami a následujúcim krátkym kódom.
data_map_whole <- data_map_whole[complete.cases(data_map_whole),]
data_map <- data_map_whole[,c(4,2,3)]
names(data_map) = c("Country","Latitude","Longitude")
data_modified$Country <- trimws(tolower(data_modified$Country))
data_map$Country <- trimws(tolower(data_map$Country))
result <- data_modified %>%
left_join(data_map, by = "Country")
data_with_location <- result[,c(2,3,4,11,12,13)]
average_happiness <- data_with_location %>%
group_by(Country) %>%
summarize(Average_Happiness = mean(Happiness.score, na.rm = TRUE),
Latitude = mean(Latitude, na.rm = TRUE),
Longitude = mean(Longitude, na.rm = TRUE))
average_happiness <- average_happiness %>%
filter(!is.na(Latitude) & !is.na(Longitude))
Keďže už máme dáta upratané, môžeme sa posunúť ďalej a spraviť ich analýzu. Tú vykonáme pomocou grafu, na ktorom znázorníme jednotlivé súradnice spolu s farbou na základe priemernej miery šťastia. Vďaka tomu budeme aj vizuálne vidieť, že väčšina šťastných krajín je situovaná v Severnej Amerike a Európe.
Pri pohľade na analýzu regiónov a najextrémnejšie prípady na okrajoch miery šťastia (Afrika vs Severná Amerika) by si človek myslel, že najdôležitejší faktor v celkovom šťastí bude bohatstvo krajiny (HDP na osobu). Analýza korelácie však dokázala, že najväčší efekt má práve sociálny aspekt štátu.
Tu sa ale ponúka ďalšia otázka. Aký štát si môže dovoliť byť sociálny, pokiaľ nie práve ten, ktorý je bohatý? Pokiaľ skúsime analyzovať koreláciu medzi bohatstvom štátu a jeho sociálnou pomocou, zistíme stredne silný pozitívny efekt. Nebyť niektorých vybraných štátov, ktoré sú v extréme s obrovským bohatstvom no nízkou/strednou sociálnu pomocou, táto korelácia by bola oveľa vyššia.
Pokiaľ žijete v bohatej krajine, alebo ešte lepšie v krajine ktorá vám pomáha keď ste na tom zle, tak budete pravdepodobne šťastní.