Hlavným cieľom tohto projektu je analyzovať výskyt rodovo podmieneného násilia (Gender-Based Violence – GBV) v 27 krajinách Európskej únie na základe dát z prieskumu Eurostat EU-GBV Survey (vlna 2021).
Čiastkové ciele:
Dáta pochádzajú z databázy Eurostat – EU survey on gender-based violence against women and other forms of inter-personal violence (EU-GBV), vlna 2021. Použité boli 4 datasety:
gbv_ipv_type – násilie intímneho partnera podľa typu
(psychologické, fyzické, sexuálne)gbv_any_age – prevalencia GBV podľa vekovej
skupinygbv_any_ed – prevalencia GBV podľa úrovne
vzdelaniagbv_shw_perp – sexuálne obťažovanie na pracovisku podľa
typu páchateľa| Premenná | Popis |
|---|---|
age_18_29 – age_65_74 |
Prevalencia GBV podľa veku (%) |
edu_low / edu_mid /
edu_high |
Prevalencia GBV podľa vzdelania (%) |
ipv_total |
Celkové IPV – psychologické + fyzické + sexuálne (%) |
ipv_psy |
Psychologické násilie od intímneho partnera (%) |
ipv_threats |
Hrozby od intímneho partnera (%) |
ipv_phy |
Fyzické násilie od intímneho partnera (%) |
ipv_sex |
Sexuálne násilie od intímneho partnera (%) |
ipv_rape |
Znásilnenie od intímneho partnera (%) |
shw_coworker / shw_boss /
shw_other |
Sexuálne obťažovanie na pracovisku podľa páchateľa (%) |
shw_total |
Celkové sexuálne obťažovanie na pracovisku (%) |
library(tidyverse)
library(corrplot)
library(FactoMineR)
library(factoextra)
library(cluster)
library(psych)
library(writexl)
library(mice)
library(VIM)
Dáta boli predpripravené do súboru GBV_data.csv, ktorý
obsahuje 27 krajín EÚ a 19 ukazovateľov GBV. Všetky hodnoty sú v
percentách žien (18–74 rokov), ktoré zažili daný typ násilia.
df <- read.csv("GBV_data.csv", na.strings = "NA", stringsAsFactors = FALSE)
cat("Rozmery datasetu:", nrow(df), "krajín ×", ncol(df), "stĺpcov\n")
## Rozmery datasetu: 27 krajín × 20 stĺpcov
cat("Krajiny:", paste(df$country, collapse = ", "))
## Krajiny: Austria, Belgium, Bulgaria, Croatia, Cyprus, Czechia, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Ireland, Italy, Latvia, Lithuania, Luxembourg, Malta, Netherlands, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden
Dataset obsahuje 27 krajín a 20 premenných. Každý riadok reprezentuje jednu krajinu EÚ a každý stĺpec jeden ukazovateľ GBV vyjadrený v percentách žien vo veku 18–74 rokov.
Pred samotnou analýzou je potrebné vyhodnotiť chýbajúce hodnoty a rozhodnúť sa, ako s nimi naložiť. Chýbajúce hodnoty môžu skresliť výsledky štatistických analýz, preto je ich identifikácia a riešenie prvým krokom.
num_df <- df %>% select(-country)
na_counts <- colSums(is.na(num_df))
na_pct <- round(colMeans(is.na(num_df)) * 100, 1)
na_info <- data.frame(premenna = names(na_counts),
pocet_NA = na_counts,
percento_NA = na_pct) %>%
filter(pocet_NA > 0) %>% arrange(desc(pocet_NA))
if(nrow(na_info) > 0) {
print(na_info)
} else {
cat("Dataset neobsahuje žiadne chýbajúce hodnoty.\n")
}
## premenna pocet_NA percento_NA
## ipv_phy_sx ipv_phy_sx 27 100.0
## edu_low edu_low 1 3.7
## edu_mid edu_mid 1 3.7
## edu_high edu_high 1 3.7
## ipv_threats ipv_threats 1 3.7
## ipv_phy ipv_phy 1 3.7
## ipv_sex ipv_sex 1 3.7
## ipv_rape ipv_rape 1 3.7
## shw_other shw_other 1 3.7
V datasete sa nachádza celkovo 35 chýbajúcich hodnôt v 9 premenných. Chýbajúce hodnoty sú spôsobené tým, že niektoré krajiny nemali dostupné údaje pre všetky ukazovatele – najčastejšie ide o Taliansko, kde bol prieskum implementovaný s oneskorením a niektoré údaje neboli zbierané v rovnakom rozsahu ako v ostatných krajinách.
aggr(num_df,
col = c("hotpink", "orange"),
numbers = TRUE, sortVars = TRUE, cex.axis = 0.65,
ylab = c("Podiel NA", "Vzor chýbajúcich hodnôt"))
##
## Variables sorted by number of missings:
## Variable Count
## ipv_phy_sx 1.00000000
## edu_low 0.03703704
## edu_mid 0.03703704
## edu_high 0.03703704
## ipv_threats 0.03703704
## ipv_phy 0.03703704
## ipv_sex 0.03703704
## ipv_rape 0.03703704
## shw_other 0.03703704
## age_18_29 0.00000000
## age_18_74 0.00000000
## age_30_44 0.00000000
## age_45_64 0.00000000
## age_65_74 0.00000000
## ipv_total 0.00000000
## ipv_psy 0.00000000
## shw_coworker 0.00000000
## shw_boss 0.00000000
## shw_total 0.00000000
Na grafe vľavo vidíme podiel chýbajúcich hodnôt pre každú premennú (oranžová farba). Graf vpravo zobrazuje vzor chýbania – teda ktoré kombinácie premenných chýbajú spoločne. Väčšina krajín má kompletné údaje (ružová farba), chýbajúce hodnoty sa koncentrujú v niekoľkých krajinách.
Na doplnenie chýbajúcich hodnôt bola použitá metóda PMM
(Predictive Mean Matching) z balíčka mice. Táto
metóda:
set.seed(123)
imp <- mice(num_df, m = 5, method = "pmm", printFlag = FALSE)
num_imp <- complete(imp, 1)
data <- bind_cols(df %>% select(country), num_imp)
cat("Po imputácii – chýbajúce hodnoty:", sum(is.na(data)), "\n")
## Po imputácii – chýbajúce hodnoty: 27
Po imputácii dataset neobsahuje žiadne chýbajúce hodnoty a je pripravený na ďalšie analýzy. Bolo vytvorených 5 imputovaných datasetov, z ktorých bol vybraný prvý. Seed bol nastavený na 123 pre reprodukovateľnosť výsledkov.
popis <- describe(num_imp) %>% round(2)
print(popis)
## vars n mean sd median trimmed mad min max range skew
## age_18_29 1 27 36.98 13.91 38.1 36.49 14.97 15.7 66.7 51.0 0.21
## age_18_74 2 27 33.13 11.40 33.1 32.89 11.86 11.9 57.1 45.2 0.22
## age_30_44 3 27 36.04 12.95 36.4 35.55 14.23 12.1 66.0 53.9 0.33
## age_45_64 4 27 33.26 11.57 32.4 33.04 12.01 9.9 56.6 46.7 0.18
## age_65_74 5 27 25.04 9.76 24.3 24.44 9.64 8.2 45.9 37.7 0.58
## edu_low 6 27 31.54 12.42 28.4 31.23 15.27 12.1 53.3 41.2 0.33
## edu_mid 7 27 33.45 11.76 33.2 33.09 13.05 12.4 60.7 48.3 0.32
## edu_high 8 27 34.88 12.50 32.2 35.14 15.12 11.0 56.5 45.5 -0.09
## ipv_total 9 27 35.85 10.24 33.4 35.68 11.12 19.6 54.6 35.0 0.27
## ipv_phy_sx 10 0 NaN NA NA NaN NA Inf -Inf -Inf NA
## ipv_psy 11 27 34.02 9.79 31.3 33.82 11.86 19.1 52.1 33.0 0.27
## ipv_threats 12 27 12.59 6.93 10.6 11.77 5.34 5.9 32.0 26.1 1.23
## ipv_phy 13 27 17.14 7.29 14.2 16.56 6.82 7.6 33.8 26.2 0.65
## ipv_sex 14 27 8.22 3.87 7.4 8.00 4.00 2.2 17.6 15.4 0.52
## ipv_rape 15 27 7.17 3.33 6.6 6.99 3.41 2.0 15.8 13.8 0.62
## shw_coworker 16 27 16.18 8.33 15.6 15.85 10.23 4.1 33.8 29.7 0.22
## shw_boss 17 27 7.79 4.54 6.8 7.42 3.26 1.4 18.4 17.0 0.92
## shw_other 18 27 11.23 6.93 11.3 10.41 6.52 2.9 33.0 30.1 1.14
## shw_total 19 27 28.74 12.32 28.5 28.42 11.12 9.3 51.6 42.3 0.11
## kurtosis se
## age_18_29 -0.91 2.68
## age_18_74 -0.82 2.19
## age_30_44 -0.48 2.49
## age_45_64 -0.69 2.23
## age_65_74 -0.40 1.88
## edu_low -1.21 2.39
## edu_mid -0.65 2.26
## edu_high -1.11 2.41
## ipv_total -1.23 1.97
## ipv_phy_sx NA NA
## ipv_psy -1.23 1.88
## ipv_threats 0.52 1.33
## ipv_phy -0.63 1.40
## ipv_sex -0.58 0.74
## ipv_rape -0.29 0.64
## shw_coworker -1.02 1.60
## shw_boss -0.02 0.87
## shw_other 1.60 1.33
## shw_total -0.99 2.37
Z popisnej štatistiky vidíme, že:
ipv_psy) má
priemer 34 % s rozsahom od 19.1 % do 52.1 %.ipv_phy) má priemer
17.1 % – je teda menej rozšírené ako
psychologické.ipv_sex) má najnižší
priemer (8.2 %), no aj tu existujú značné rozdiely
medzi krajinami.shw_total) má priemer 28.7 % s vysokou
variabilitou (SD = 12.3).data %>%
select(country, ipv_psy, ipv_threats, ipv_phy, ipv_sex) %>%
pivot_longer(-country, names_to = "typ", values_to = "hodnota") %>%
mutate(typ = recode(typ,
ipv_psy = "Psychologické",
ipv_threats = "Hrozby",
ipv_phy = "Fyzické",
ipv_sex = "Sexuálne")) %>%
ggplot(aes(x = typ, y = hodnota, fill = typ)) +
geom_boxplot(alpha = 0.7, outlier.colour = "red") +
scale_fill_manual(values = c("hotpink","orange","pink","red")) +
labs(title = "Násilie intímneho partnera v krajinách EÚ (2021)",
subtitle = "% žien, ktoré zažili daný typ násilia",
x = "", y = "% žien") +
theme_minimal() + theme(legend.position = "none")
Z boxplotov je zrejmé, že psychologické násilie dominuje so širokým rozpätím hodnôt, čo naznačuje veľké rozdiely medzi krajinami. Fyzické násilie a hrozby majú podobné mediány, ale odlišnú variabilitu. Sexuálne násilie má najnižšie hodnoty, no červené body (outliers) ukazujú, že v niektorých krajinách je jeho prevalencia výrazne vyššia ako v ostatných.
data %>%
arrange(desc(ipv_total)) %>%
mutate(country = fct_inorder(country)) %>%
ggplot(aes(x = country, y = ipv_total, fill = ipv_total)) +
geom_col() + coord_flip() +
scale_fill_gradient(low = "#ffe0b2", high = "#b71c1c") +
labs(title = "Celkové IPV násilie v krajinách EÚ (2021)",
x = "", y = "% žien",
caption = "Zdroj: Eurostat EU-GBV Survey 2021") +
theme_minimal() + theme(legend.position = "none")
Krajiny s najvyššou celkovou prevalenciou IPV sú Hungary, Finland, Slovakia (54.6 %, 52.6 %, 50.8 %). Naopak, najnižšiu prevalenciu vykazujú Poland, Bulgaria, Portugal (19.6 %, 20.5 %, 22.5 %). Rozdiely medzi krajinami sú významné – najvyššia hodnota je približne 2.8-násobkom najnižšej, čo poukazuje na rozdielne sociálne a kultúrne podmienky v jednotlivých krajinách.
data %>%
ggplot(aes(x = edu_high, y = ipv_total, label = country)) +
geom_point(size = 3, colour = "lightblue") +
geom_text(nudge_y = 0.8, size = 3) +
geom_smooth(method = "lm", se = TRUE, colour = "orange") +
labs(title = "Vzdelanie vs. celkové IPV násilie",
x = "% žien s terciárnym vzdelaním a GBV skúsenosťou",
y = "% žien – celkové IPV") +
theme_minimal()
Korelácia medzi podielom žien s terciárnym vzdelaním, ktoré zažili GBV, a celkovým IPV násilím je r = 0.661 – ide o stredná pozitívna koreláciu. To naznačuje, že vyššie vzdelanie nesúvisí s nižšou prevalenciou GBV. Tento jav môže byť spôsobený tým, že ženy s vyšším vzdelaním lepšie rozpoznávajú a častejšie hlásia násilie, alebo tým, že GBV je štrukturálny problém nezávislý od individuálnej úrovne vzdelania.
Korelačná matica zobrazuje vzájomné lineárne vzťahy medzi GBV ukazovateľmi. Pearsonov korelačný koeficient nadobúda hodnoty od -1 (dokonalá negatívna korelácia) po +1 (dokonalá pozitívna korelácia).
cor_vars <- data %>%
select(ipv_psy, ipv_phy, ipv_sex, ipv_threats,
shw_total, edu_high, edu_low,
age_18_29, age_65_74)
cor_mat <- cor(cor_vars, use = "complete.obs")
corrplot(cor_mat,
method = "color", type = "upper",
addCoef.col = "black", number.cex = 0.65,
tl.cex = 0.8, tl.col = "black",
col = colorRampPalette(c("pink","white","orange"))(200),
title = "Korelačná matica – GBV ukazovatele",
mar = c(0, 0, 2, 0))
Z korelačnej matice vyplývajú nasledujúce zistenia:
shw_total) koreluje s IPV na úrovni r = 0.75 s
psychologickým násilím – naznačuje to, že krajiny s vyššou toleranciou
násilia v domácnostiach majú tendenciu mať aj vyššie obťažovanie na
pracovisku.Pre správne použitie parametrických metód (PCA, MANOVA) je potrebné overiť normalitu rozdelenia premenných. Na testovanie univariátnej normality používame Shapiro-Wilk test, kde:
ipv_vars <- data %>% select(ipv_psy, ipv_phy, ipv_sex, ipv_total,
shw_total, edu_high)
sw_tbl <- data.frame(
premenna = names(ipv_vars),
W = sapply(ipv_vars, function(x) round(shapiro.test(x)$statistic, 4)),
p_hodnota = sapply(ipv_vars, function(x) round(shapiro.test(x)$p.value, 4)),
normalita = sapply(ipv_vars, function(x)
ifelse(shapiro.test(x)$p.value > 0.05, "ÁNO", "NIE"))
)
print(sw_tbl)
## premenna W p_hodnota normalita
## ipv_psy.W ipv_psy 0.9456 0.1673 ÁNO
## ipv_phy.W ipv_phy 0.9210 0.0416 NIE
## ipv_sex.W ipv_sex 0.9638 0.4481 ÁNO
## ipv_total.W ipv_total 0.9463 0.1745 ÁNO
## shw_total.W shw_total 0.9581 0.3342 ÁNO
## edu_high.W edu_high 0.9663 0.5070 ÁNO
Výsledky Shapiro-Wilk testu:
QQ-ploty (kvantil-kvantil grafy) vizuálne porovnávajú rozdelenie dát s teoretickým normálnym rozdelením. Ak body ležia na priamke, dáta sú normálne rozdelené.
par(mfrow = c(2, 3))
for (col in names(ipv_vars)) {
qqnorm(ipv_vars[[col]], main = paste("QQ:", col),
pch = 16, col = "lightpink")
qqline(ipv_vars[[col]], col = "orange", lwd = 2)
}
par(mfrow = c(1, 1))
Na QQ-plotoch pozorujeme, že väčšina bodov leží blízko oranžovej priamky, čo naznačuje približne normálne rozdelenie. Odchýlky na koncoch (chvostoch) rozdelenia sú bežné pri malom počte pozorovaní (n = 27) a nemusia nevyhnutne znamenať problém pre robustné metódy ako PCA.
Pre premenné, ktoré nevykazujú normálne rozdelenie, aplikujeme logaritmickú transformáciu na priblíženie k normálnemu rozdeleniu.
nenorm <- sw_tbl$premenna[sw_tbl$normalita == "NIE"]
if (length(nenorm) > 0) {
cat("Premenné vyžadujúce transformáciu:", paste(nenorm, collapse = ", "), "\n")
data <- data %>%
mutate(across(all_of(nenorm),
~log(.x + 0.01),
.names = "log_{.col}"))
cat("Logaritmická transformácia bola úspešne aplikovaná.\n")
} else {
cat("Všetky premenné majú normálne rozdelenie – transformácia nie je potrebná.\n")
}
## Premenné vyžadujúce transformáciu: ipv_phy
## Logaritmická transformácia bola úspešne aplikovaná.
Logaritmická transformácia (log(x + 0.01)) bola aplikovaná na
premenné: ipv_phy. Konštanta 0.01 bola pridaná, aby sa
predišlo logaritmu z nuly. Transformované premenné sú uložené s prefixom
log_ a môžu byť použité v metódach vyžadujúcich
normalitu.
PCA (Principal Component Analysis) je metóda redukcie dimenzionality, ktorá transformuje pôvodné korelované premenné na menší počet nekorelovaných komponentov (hlavných komponentov). Každý komponent zachytáva čo najväčší podiel variability v dátach.
Použitie v projekte: Identifikujeme hlavné dimenzie, ktoré stoja za variabilitou GBV naprieč krajinami EÚ.
pca_input <- data %>%
select(ipv_psy, ipv_phy, ipv_sex, ipv_threats,
shw_total, edu_high, edu_low,
age_18_29, age_65_74) %>%
scale()
rownames(pca_input) <- data$country
pca_res <- PCA(pca_input, graph = FALSE, scale.unit = FALSE)
Pred PCA boli dáta štandardizované (z-skóre), pretože premenné majú rôzne rozsahy hodnôt. Bez štandardizácie by premenné s väčším rozptylom dominovali výsledkom.
fviz_eig(pca_res, addlabels = TRUE, ylim = c(0, 80),
barfill = "pink", barcolor = "pink",
title = "Scree plot – vysvetlený rozptyl (PCA)")
Interpretácia Scree plotu:
fviz_pca_biplot(pca_res, repel = TRUE,
col.var = "orange",
col.ind = "red",
title = "PCA Biplot – GBV profily krajín EÚ")
Interpretácia Biplotu:
fviz_contrib(pca_res, choice = "var", axes = 1,
fill = "pink", color = "pink",
title = "Kontribúcia premenných – PC1") +
geom_hline(yintercept = 100/ncol(pca_input), linetype = "dashed",
color = "orange", linewidth = 1)
fviz_contrib(pca_res, choice = "var", axes = 2,
fill = "pink", color = "pink",
title = "Kontribúcia premenných – PC2") +
geom_hline(yintercept = 100/ncol(pca_input), linetype = "dashed",
color = "orange", linewidth = 1)
Prerušovaná oranžová čiara predstavuje očakávanú kontribúciu ak by všetky premenné prispievali rovnako (11.1 %). Premenné nad čiarou prispievajú nadpriemerne k danému komponentu a sú teda najdôležitejšie pre jeho interpretáciu.
cat("Eigenvalues a vysvetlený rozptyl:\n")
## Eigenvalues a vysvetlený rozptyl:
print(round(pca_res$eig, 3))
## eigenvalue percentage of variance cumulative percentage of variance
## comp 1 6.293 72.610 72.610
## comp 2 1.222 14.100 86.710
## comp 3 0.438 5.060 91.769
## comp 4 0.286 3.302 95.071
## comp 5 0.143 1.655 96.727
## comp 6 0.101 1.170 97.896
## comp 7 0.094 1.086 98.982
## comp 8 0.054 0.624 99.606
## comp 9 0.034 0.394 100.000
cat("\nKorelácie premenných s komponentmi:\n")
##
## Korelácie premenných s komponentmi:
print(round(pca_res$var$cor, 3))
## Dim.1 Dim.2 Dim.3 Dim.4 Dim.5
## ipv_psy 0.890 0.014 -0.350 0.192 -0.101
## ipv_phy 0.916 -0.314 0.087 0.123 0.083
## ipv_sex 0.917 0.011 -0.122 -0.300 0.159
## ipv_threats 0.809 -0.457 0.199 0.245 0.144
## shw_total 0.762 0.536 -0.276 0.040 0.150
## edu_high 0.813 0.450 0.288 0.065 -0.098
## edu_low 0.870 -0.322 0.133 -0.298 -0.052
## age_18_29 0.787 0.525 0.252 -0.007 -0.054
## age_65_74 0.890 -0.305 -0.175 -0.027 -0.219
Zhrnutie PCA:
PCA úspešne zredukovala 9 pôvodných premenných na menší počet komponentov. Prvé dva komponenty vysvetľujú 86.7 % variability, čo je dostatočné na zmysluplnú interpretáciu. Výsledky potvrdzujú, že GBV v krajinách EÚ možno opísať dvoma hlavnými dimenziami – celková intenzita násilia a štruktúra typov násilia.
Na rozdiel od PCA, faktorová analýza predpokladá existenciu latentných (skrytých) faktorov, ktoré stoja za pozorovanými premennými. Cieľom je identifikovať tieto faktory a ich vzťah k pôvodným premenným.
Pred faktorovou analýzou overujeme, či sú dáta vhodné na faktorizáciu:
fa_input <- data %>%
select(ipv_psy, ipv_phy, ipv_sex, ipv_threats, shw_total, edu_high)
kmo_res <- KMO(fa_input)
bart_res <- cortest.bartlett(cor(fa_input), n = nrow(fa_input))
cat("KMO index:", round(kmo_res$MSA, 3), "\n")
## KMO index: 0.785
cat("Bartlettov test p-hodnota:", round(bart_res$p.value, 4), "\n")
## Bartlettov test p-hodnota: 0
Výsledky overenia predpokladov:
Paralelná analýza porovnáva eigenvalues skutočných dát so simulovanými náhodnými dátami. Optimálny počet faktorov je tam, kde skutočné eigenvalues prevyšujú simulované.
fp <- fa.parallel(fa_input, fa = "fa", fm = "ml",
main = "Paralelná analýza", plot = FALSE)
## Parallel analysis suggests that the number of factors = 1 and the number of components = NA
plot(fp$fa.values, type = "b", pch = 16, col = "hotpink", lwd = 2,
main = "Paralelná analýza – počet faktorov",
xlab = "Počet faktorov", ylab = "Eigenvalue")
lines(fp$fa.sim, type = "b", pch = 17, col = "orange", lwd = 2, lty = 2)
abline(h = 0, col = "gray", lty = 3)
legend("topright", legend = c("Skutočné dáta", "Simulované dáta"),
col = c("hotpink", "orange"), lwd = 2, lty = c(1, 2), pch = c(16, 17))
Ružová čiara zobrazuje eigenvalues zo skutočných dát, oranžová prerušovaná čiara eigenvalues zo simulovaných náhodných dát. Faktory, ktorých skutočné eigenvalues prevyšujú simulované, sú štatisticky odôvodnené.
Použitá bola metóda maximálnej vierohodnosti (ML) s oblimin rotáciou (šikmá rotácia), ktorá umožňuje koreláciu medzi faktormi – čo je realistické pre GBV ukazovatele.
fa_res <- fa(r = fa_input, nfactors = 2,
rotate = "oblimin", fm = "ml")
cat("Faktorové záťaže (cutoff = 0.30):\n")
## Faktorové záťaže (cutoff = 0.30):
print(fa_res$loadings, cutoff = 0.30)
##
## Loadings:
## ML1 ML2
## ipv_psy 0.506 0.513
## ipv_phy 0.965
## ipv_sex 0.530 0.478
## ipv_threats 0.987
## shw_total 1.041
## edu_high 0.647
##
## ML1 ML2
## SS loadings 2.512 2.009
## Proportion Var 0.419 0.335
## Cumulative Var 0.419 0.754
cat("\nKomunalita:\n")
##
## Komunalita:
print(round(fa_res$communality, 3))
## ipv_psy ipv_phy ipv_sex ipv_threats shw_total edu_high
## 0.798 0.995 0.781 0.872 0.995 0.655
cat("\nVysvetlený rozptyl:\n")
##
## Vysvetlený rozptyl:
print(round(fa_res$Vaccounted, 3))
## ML1 ML2
## SS loadings 2.799 2.296
## Proportion Var 0.467 0.383
## Cumulative Var 0.467 0.849
## Proportion Explained 0.549 0.451
## Cumulative Proportion 0.549 1.000
Interpretácia faktorovej analýzy:
fa.diagram(fa_res, main = "Faktorová analýza – GBV ukazovatele")
Diagram vizuálne zobrazuje priradenie premenných k faktorom. Hrúbka šípky zodpovedá veľkosti faktorovej záťaže – čím hrubšia šípka, tým silnejší vzťah medzi premennou a faktorom.
Zhluková analýza zoskupuje krajiny do skupín (zhlukov) tak, aby krajiny v rámci jedného zhluku boli čo najpodobnejšie a medzi zhlukmi čo najodlišnejšie.
Použitie v projekte: Identifikujeme typológiu krajín EÚ podľa ich GBV profilu.
zhluk_input <- data %>%
select(ipv_psy, ipv_phy, ipv_sex, ipv_threats, shw_total) %>%
scale()
rownames(zhluk_input) <- data$country
fviz_nbclust(zhluk_input, kmeans, method = "wss", k.max = 8,
linecolor = "orange") +
labs(title = "Metóda lakťa – optimálny počet zhlukov")
fviz_nbclust(zhluk_input, kmeans, method = "silhouette", k.max = 8,
linecolor = "hotpink") +
labs(title = "Siluetová metóda")
set.seed(42)
km <- kmeans(zhluk_input, centers = 3, nstart = 25)
fviz_cluster(km, data = zhluk_input,
ellipse.type = "norm", repel = TRUE,
palette = c("hotpink", "orange", "red"),
ggtheme = theme_minimal(),
main = "K-means zhlukovanie – GBV profily krajín EÚ")
Interpretácia K-means:
nstart = 25 zabezpečuje stabilitu výsledkov
(algoritmus sa spustí 25-krát s rôznymi počiatočnými centrami).hc <- hclust(dist(zhluk_input), method = "ward.D2")
plot(hc, cex = 0.85,
main = "Dendrogram – hierarchické zhlukovanie (Ward.D2)",
xlab = "", sub = "")
rect.hclust(hc, k = 3, border = c("orange", "hotpink", "purple"))
Dendrogram zobrazuje hierarchickú štruktúru spájania krajín. Metóda Ward.D2 minimalizuje vnútrozhlukový rozptyl. Výška, v ktorej sa vetvy spájajú, zodpovedá miere nepodobnosti – čím vyššie spojenie, tým odlišnejšie sú zhluky. Farebné obdĺžniky vyznačujú 3 navrhované zhluky.
data$zhluk <- factor(km$cluster)
profil <- data %>%
group_by(zhluk) %>%
summarise(
n = dplyr::n(),
ipv_psy = round(mean(ipv_psy), 1),
ipv_phy = round(mean(ipv_phy), 1),
ipv_sex = round(mean(ipv_sex), 1),
shw_total = round(mean(shw_total), 1),
krajiny = paste(sort(country), collapse = ", ")
)
print(profil)
## # A tibble: 3 × 7
## zhluk n ipv_psy ipv_phy ipv_sex shw_total krajiny
## <fct> <int> <dbl> <dbl> <dbl> <dbl> <chr>
## 1 1 10 25.5 10.6 4.5 18.4 Bulgaria, Croatia, Czechia, Lat…
## 2 2 8 46.4 25.9 12.8 40.6 Cyprus, Denmark, Finland, Hunga…
## 3 3 9 32.4 16.6 8.2 29.7 Austria, Belgium, Estonia, Fran…
Interpretácia profilov zhlukov:
Každý zhluk predstavuje odlišný typ krajiny z hľadiska GBV:
Zhluky sa jasne líšia v intenzite GBV, čo potvrdzuje existenciu rôznych modelov prístupu ku GBV v rámci EÚ.
Logistická regresia modeluje pravdepodobnosť binárneho výsledku (áno/nie) na základe prediktorov. V našom prípade modelujeme, či krajina patrí do „vysokorizikového” zhluku.
Závislá premenná: 1 = krajina patrí do zhluku s najvyšším priemerným IPV, 0 = ostatné
Prediktory:
shw_total – miera sexuálneho obťažovania na
pracoviskuedu_high – podiel žien s terciárnym vzdelaním, ktoré
zažili GBVage_18_29 – prevalencia GBV v najmladšej vekovej
skupinemax_zhluk <- data %>%
group_by(zhluk) %>%
summarise(m = mean(ipv_total)) %>%
slice_max(m, n = 1) %>%
pull(zhluk)
data <- data %>%
mutate(vysoke_gbv = as.integer(zhluk == max_zhluk))
log_mod <- glm(vysoke_gbv ~ shw_total + edu_high + age_18_29,
data = data,
family = binomial(link = "logit"))
summary(log_mod)
##
## Call:
## glm(formula = vysoke_gbv ~ shw_total + edu_high + age_18_29,
## family = binomial(link = "logit"), data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -7.237781 2.743150 -2.638 0.00833 **
## shw_total 0.157674 0.102307 1.541 0.12327
## edu_high 0.035626 0.112001 0.318 0.75042
## age_18_29 -0.002234 0.099439 -0.022 0.98208
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 32.815 on 26 degrees of freedom
## Residual deviance: 19.311 on 23 degrees of freedom
## AIC: 27.311
##
## Number of Fisher Scoring iterations: 6
Interpretácia modelu:
or_tbl <- data.frame(
premenna = names(coef(log_mod)),
OR = round(exp(coef(log_mod)), 3),
CI_low = round(exp(confint(log_mod))[, 1], 3),
CI_high = round(exp(confint(log_mod))[, 2], 3)
)
print(or_tbl)
## premenna OR CI_low CI_high
## (Intercept) (Intercept) 0.001 0.000 0.054
## shw_total shw_total 1.171 0.992 1.512
## edu_high edu_high 1.036 0.825 1.310
## age_18_29 age_18_29 0.998 0.813 1.227
Interpretácia Odds Ratios (pomer šancí):
OR > 1 → zvýšenie prediktora o jednotku zvyšuje šancu príslušnosti k vysokorizikovému zhluku.
OR < 1 → zvýšenie prediktora o jednotku znižuje šancu.
OR = 1 → prediktor nemá vplyv.
Konfidenčný interval (CI_low – CI_high) – ak zahŕňa hodnotu 1, vzťah nie je štatisticky významný.
shw_total: OR = 1.171 → zvýšenie o 1 percentuálny bod zvyšuje šancu príslušnosti k vysokorizikovému zhluku 17.1-krát.
edu_high: OR = 1.036 → zvýšenie o 1 percentuálny bod zvyšuje šancu príslušnosti k vysokorizikovému zhluku 3.6-krát.
age_18_29: OR = 0.998 → zvýšenie o 1 percentuálny bod znižuje šancu príslušnosti k vysokorizikovému zhluku 0.2-krát.
MANOVA (Multivariate Analysis of Variance) testuje, či sa zhluky krajín štatisticky významne líšia súčasne vo viacerých závislých premenných.
Hypotézy:
Závislé premenné: ipv_psy, ipv_phy, ipv_sex, shw_total
Faktor: zhluk (3 úrovne)
Y <- as.matrix(data %>% select(ipv_psy, ipv_phy, ipv_sex, shw_total))
man <- manova(Y ~ zhluk, data = data)
cat("--- Wilksova lambda ---\n")
## --- Wilksova lambda ---
summary(man, test = "Wilks")
## Df Wilks approx F num Df den Df Pr(>F)
## zhluk 2 0.090081 12.242 8 42 7.771e-09 ***
## Residuals 24
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
cat("--- Pillaiovo stopové kritérium ---\n")
## --- Pillaiovo stopové kritérium ---
summary(man, test = "Pillai")
## Df Pillai approx F num Df den Df Pr(>F)
## zhluk 2 0.97656 5.248 8 44 0.0001221 ***
## Residuals 24
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Interpretácia MANOVA:
Ak MANOVA ukáže štatisticky významný výsledok, nasledujúce ANOVA testy ukazujú, v ktorých konkrétnych premenných sa zhluky líšia.
summary.aov(man)
## Response ipv_psy :
## Df Sum Sq Mean Sq F value Pr(>F)
## zhluk 2 1974.53 987.27 45.968 6.193e-09 ***
## Residuals 24 515.46 21.48
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response ipv_phy :
## Df Sum Sq Mean Sq F value Pr(>F)
## zhluk 2 1040.97 520.49 36.507 5.255e-08 ***
## Residuals 24 342.17 14.26
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response ipv_sex :
## Df Sum Sq Mean Sq F value Pr(>F)
## zhluk 2 304.89 152.445 43.572 1.028e-08 ***
## Residuals 24 83.97 3.499
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response shw_total :
## Df Sum Sq Mean Sq F value Pr(>F)
## zhluk 2 2189.0 1094.49 14.961 6.043e-05 ***
## Residuals 24 1755.7 73.15
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Interpretácia následných ANOVA testov:
Výsledky potvrdzujú, že rozdelenie krajín do zhlukov je zmysluplné a podložené štatisticky významnými rozdielmi.
Na základe vykonaných analýz možno konštatovať:
Popisná štatistika ukázala, že psychologické násilie je najrozšírenejším typom IPV s priemernou prevalenciou 34 % naprieč krajinami EÚ. Fyzické násilie dosahuje priemerne 17.1 % a sexuálne 8.2 %. Medzi krajinami existujú výrazné rozdiely.
PCA identifikovala hlavné komponenty, ktoré vysvetľujú 86.7 % variability v dátach dvoma komponentmi. Prvý komponent zachytáva celkovú intenzitu násilia, druhý odlišuje krajiny podľa štruktúry dominantného typu.
Faktorová analýza odhalila 2 latentné faktory, ktoré potvrdzujú, že GBV nie je jednorozmerný jav, ale má viacero odlišných dimenzií.
Zhluková analýza rozdelila 27 krajín EÚ do 3 skupín s odlišnými GBV profilmi – od krajín s nízkou prevalenciou po krajiny s vysokou mierou všetkých typov násilia.
Logistická regresia identifikovala faktory, ktoré predikujú príslušnosť krajiny k vysokorizikovému zhluku.
MANOVA potvrdila, že zhluky krajín sa štatisticky významne líšia v typoch násilia (Wilksova lambda, p < 0.05), čo validuje výsledky zhlukovej analýzy.
Na základe výsledkov formulujeme nasledujúce odporúčania:
Krajiny s vysokou prevalenciou GBV by mali posilniť preventívne programy a systémy ochrany obetí, s osobitným dôrazom na psychologické násilie, ktoré je najrozšírenejšie, no často podceňované.
Sexuálne obťažovanie na pracovisku vyžaduje systémové opatrenia na úrovni zamestnávateľov aj legislatívy – krajiny s vysokým GBV majú spravidla aj vysoké obťažovanie.
Vzdelávanie a zvyšovanie povedomia sú kľúčové, ale samotná úroveň vzdelania nestačí – GBV je štrukturálny problém vyžadujúci komplexné riešenia.
Medzinárodná spolupráca v rámci EÚ by mala zohľadňovať identifikované zhluky krajín a prispôsobiť politiky podľa konkrétneho GBV profilu danej skupiny.
Ďalší výskum by mal zahrnúť longitudinálne dáta na sledovanie trendov a efektívnosti zavedených opatrení.
Zdroj dát: Eurostat, EU-GBV Survey 2021. Analýza spracovaná v R Markdown.