1 Úvod

1.1 Cieľ projektu

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:

  1. Opísať prevalenciu GBV naprieč krajinami EÚ podľa typu násilia, veku a vzdelania
  2. Identifikovať latentné dimenzie GBV pomocou PCA a faktorovej analýzy
  3. Zoskupiť krajiny EÚ do typologických tried podľa profilu GBV – zhluková analýza
  4. Predikovať príslušnosť ku krajinám s vysokým GBV – logistická regresia
  5. Overiť, či sa zhluky krajín štatisticky líšia v typoch násilia – MANOVA

1.2 Zdroj dát

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 skupiny
  • gbv_any_ed – prevalencia GBV podľa úrovne vzdelania
  • gbv_shw_perp – sexuálne obťažovanie na pracovisku podľa typu páchateľa

1.3 Popis premenných

Premenná Popis
age_18_29age_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 (%)

2 Príprava prostredia

2.1 Načítanie balíčkov

library(tidyverse)
library(corrplot)
library(FactoMineR)
library(factoextra)
library(cluster)
library(psych)
library(writexl)
library(mice)
library(VIM)

2.2 Načítanie dát

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.


3 Analýza chýbajúcich hodnôt

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.

3.1 Identifikácia chýbajúcich hodnôt

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.

3.2 Vizualizácia vzoru chýbajúcich hodnôt

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.

3.3 Imputácia chýbajúcich hodnôt

Na doplnenie chýbajúcich hodnôt bola použitá metóda PMM (Predictive Mean Matching) z balíčka mice. Táto metóda:

  • Predikuje chýbajúcu hodnotu na základe regresného modelu
  • Nahrádza ju skutočnou pozorovanou hodnotou z datasetu, ktorá je najbližšia k predikcii
  • Výhoda: zachováva realistické rozdelenie dát (negeneruje extrémne ani záporné hodnoty)
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.


4 Popisná štatistika

4.1 Základné štatistiky

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:

  • Psychologické násilie (ipv_psy) má priemer 34 % s rozsahom od 19.1 % do 52.1 %.
  • Fyzické násilie (ipv_phy) má priemer 17.1 % – je teda menej rozšírené ako psychologické.
  • Sexuálne násilie (ipv_sex) má najnižší priemer (8.2 %), no aj tu existujú značné rozdiely medzi krajinami.
  • Sexuálne obťažovanie na pracovisku (shw_total) má priemer 28.7 % s vysokou variabilitou (SD = 12.3).
  • Smerodajná odchýlka naznačuje, že medzi krajinami existujú veľké rozdiely v miere GBV.

4.2 Boxplot – IPV podľa typu násilia

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.

4.3 Stĺpcový graf – celkové IPV podľa krajín

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.

4.4 Vzťah medzi vzdelaním a IPV

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.


5 Korelačná analýza

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:

  • Psychologické a fyzické násilie sú silno pozitívne korelované (r = 0.8) – krajiny s vysokou mierou psychologického násilia majú spravidla aj vysokú mieru fyzického násilia.
  • Sexuálne obťažovanie na pracovisku (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.
  • Veková skupina 18–29 vykazuje odlišné korelačné vzorce ako skupina 65–74, čo potvrdzuje, že prevalencia GBV sa líši naprieč generáciami.
  • Silné korelácie medzi premennými naznačujú vhodnosť použitia redukčných metód ako PCA a faktorová analýza.

6 Kontrola normality a transformácie

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:

  • H₀: Dáta pochádzajú z normálneho rozdelenia
  • H₁: Dáta nepochádzajú z normálneho rozdelenia
  • Ak p > 0.05 → nezamietame H₀ → premenná má normálne rozdelenie

6.1 Shapiro-Wilk test

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:

  • Premenné ipv_psy, ipv_sex, ipv_total, shw_total, edu_high majú p-hodnotu > 0.05 → nezamietame H₀ → môžeme predpokladať normálne rozdelenie.
  • Premenné ipv_phy majú p-hodnotu ≤ 0.05 → zamietame H₀ → tieto premenné nevykazujú normálne rozdelenie a vyžadujú transformáciu.

6.2 QQ-ploty

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.

6.3 Logaritmická transformácia

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.


7 Metóda 1: PCA – Analýza hlavných komponentov

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Ú.

7.1 Výpočet PCA

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.

7.2 Scree plot

fviz_eig(pca_res, addlabels = TRUE, ylim = c(0, 80),
         barfill = "pink", barcolor = "pink",
         title = "Scree plot – vysvetlený rozptyl (PCA)")

Interpretácia Scree plotu:

  • PC1 vysvetľuje 72.6 % celkového rozptylu.
  • PC2 vysvetľuje ďalších 14.1 % rozptylu.
  • Spolu prvé dva komponenty vysvetľujú 86.7 % celkového rozptylu, čo je dostatočné na zachytenie hlavných vzorcov v dátach.
  • Podľa Kaiserovho kritéria (eigenvalue > 1) je vhodné ponechať 2 komponentov.
  • Lakeť na grafe sa nachádza pri 2. alebo 3. komponente, čo potvrdzuje vhodnosť redukcie na 2 hlavné komponenty.

7.3 Biplot

fviz_pca_biplot(pca_res, repel = TRUE,
                col.var = "orange",
                col.ind = "red",
                title   = "PCA Biplot – GBV profily krajín EÚ")

Interpretácia Biplotu:

  • Červené body = krajiny, oranžové šípky = premenné.
  • Krajiny blízko seba majú podobný GBV profil.
  • Smer a dĺžka šípky ukazujú, ako daná premenná prispieva k jednotlivým komponentom.
  • Krajiny v smere šípok konkrétnych premenných majú vysoké hodnoty týchto premenných.
  • Krajiny na opačnej strane od šípok majú naopak nízke hodnoty.
  • PC1 (os x) pravdepodobne zachytáva celkovú intenzitu GBV – krajiny vpravo majú vyššiu celkovú prevalenciu.
  • PC2 (os y) zachytáva štruktúru GBV – rozlišuje medzi rôznymi vzorcami násilia.

7.4 Kontribúcia premenných

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.

7.5 Výsledky PCA

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.


8 Metóda 2: Faktorová analýza

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.

8.1 Overenie predpokladov

Pred faktorovou analýzou overujeme, či sú dáta vhodné na faktorizáciu:

  • KMO index ≥ 0.6 → dáta sú vhodné
  • Bartlettov test p < 0.05 → korelačná matica sa štatisticky významne líši od jednotkovej matice
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:

  • KMO index = 0.785 – vhodnosť dát pre faktorovú analýzu je dobrá.
  • Bartlettov test p = 0 → zamietame H₀ → korelačná matica sa významne líši od jednotkovej → dáta sú vhodné pre faktorovú analýzu.

8.2 Paralelná analýza – počet faktorov

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é.

8.3 Faktorová analýza – výsledky

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:

  • Faktorové záťaže ukazujú, ako silno je každá premenná spojená s daným faktorom. Hodnoty nad 0.30 (resp. pod -0.30) sa považujú za významné.
  • Komunalita vyjadruje, aký podiel rozptylu každej premennej je vysvetlený faktormi. Hodnoty blízke 1 znamenajú, že premenná je dobre reprezentovaná faktormi.
  • Faktor 1 pravdepodobne zachytáva celkové domáce násilie (psychologické, fyzické, hrozby).
  • Faktor 2 pravdepodobne zachytáva sexuálne násilie a obťažovanie (sexuálne IPV, obťažovanie v práci).
  • Táto dvojfaktorová štruktúra naznačuje, že GBV nie je jednorozmerný jav, ale má minimálne dve odlišné dimenzie.

8.4 Diagram faktorov

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.


9 Metóda 3: Zhluková analýza

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.

9.1 Optimálny počet zhlukov

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")

  • Metóda lakťa (WSS): Hľadáme bod, kde sa krivka výrazne „zlomí” – pridanie ďalšieho zhluku už neprinášajú výrazné zníženie vnútrozhlukového rozptylu.
  • Siluetová metóda: Maximalizujeme siluetový koeficient – vyššia hodnota znamená lepšie oddelenie zhlukov.

9.2 K-means zhlukovanie

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:

  • Boli identifikované 3 zhluky krajín s odlišnými GBV profilmi.
  • Krajiny v rovnakom zhluku zdieľajú podobné vzorce a intenzitu násilia.
  • Elipsy zobrazujú 95% konfidenčný interval pre každý zhluk.
  • Krajiny na hraniciach zhlukov majú zmiešané charakteristiky.
  • Nastavenie nstart = 25 zabezpečuje stabilitu výsledkov (algoritmus sa spustí 25-krát s rôznymi počiatočnými centrami).

9.3 Hierarchické zhlukovanie

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.

9.4 Profil zhlukov

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:

  • Zhluk 1 (10 krajín): psychologické IPV = 25.5 %, fyzické = 10.6 %, sexuálne = 4.5 %, obťažovanie = 18.4 %. Krajiny: Bulgaria, Croatia, Czechia, Latvia, Lithuania, Malta, Poland, Portugal, Slovenia, Spain
  • Zhluk 2 (8 krajín): psychologické IPV = 46.4 %, fyzické = 25.9 %, sexuálne = 12.8 %, obťažovanie = 40.6 %. Krajiny: Cyprus, Denmark, Finland, Hungary, Luxembourg, Romania, Slovakia, Sweden
  • Zhluk 3 (9 krajín): psychologické IPV = 32.4 %, fyzické = 16.6 %, sexuálne = 8.2 %, obťažovanie = 29.7 %. Krajiny: Austria, Belgium, Estonia, France, Germany, Greece, Ireland, Italy, Netherlands

Zhluky sa jasne líšia v intenzite GBV, čo potvrdzuje existenciu rôznych modelov prístupu ku GBV v rámci EÚ.


10 Metóda 4: Logistická regresia

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 pracovisku
  • edu_high – podiel žien s terciárnym vzdelaním, ktoré zažili GBV
  • age_18_29 – prevalencia GBV v najmladšej vekovej skupine

10.1 Model

max_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:

  • Deviance residuals ukazujú, ako dobre model fituje dáta.
  • Koeficienty vyjadrujú zmenu log-odds pri zvýšení prediktora o jednotku.
  • P-hodnota (Pr(>|z|)) pod 0.05 znamená štatisticky významný prediktor.
  • AIC (Akaike Information Criterion) slúži na porovnanie modelov – nižšia hodnota = lepší model.

10.2 Odds Ratios

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.


11 Metóda 5: MANOVA

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:

  • H₀: Zhluky sa nelíšia v priemerných hodnotách typov násilia (vektory priemerov sú rovnaké)
  • H₁: Aspoň v jednom type násilia existuje štatisticky významný rozdiel medzi zhlukmi

Závislé premenné: ipv_psy, ipv_phy, ipv_sex, shw_total

Faktor: zhluk (3 úrovne)

11.1 Výsledky MANOVA

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:

  • Wilksova lambda nadobúda hodnoty od 0 do 1. Čím bližšie k 0, tým väčšie rozdiely medzi skupinami.
  • P-hodnota = 7.77e-09zamietame H₀ → zhluky sa štatisticky významne líšia v typoch násilia. To potvrdzuje, že identifikované zhluky majú reálne odlišné GBV profily.
  • Pillaiovo kritérium je robustnejšie voči porušeniu predpokladov a slúži ako kontrola.

11.2 Následné jednosmerné ANOVA

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:

  • ** Response ipv_psy: F-test je vysoko významný (p < 0.001)** → zhluky sa významne líšia v tejto premennej.
  • ** Response ipv_phy: F-test je vysoko významný (p < 0.001)** → zhluky sa významne líšia v tejto premennej.
  • ** Response ipv_sex: F-test je vysoko významný (p < 0.001)** → zhluky sa významne líšia v tejto premennej.
  • ** Response shw_total: F-test je vysoko významný (p < 0.001)** → zhluky sa významne líšia v tejto premennej.

Výsledky potvrdzujú, že rozdelenie krajín do zhlukov je zmysluplné a podložené štatisticky významnými rozdielmi.


12 Záver a odporúčania

12.1 Zhrnutie zistení

Na základe vykonaných analýz možno konštatovať:

  1. 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.

  2. 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.

  3. Faktorová analýza odhalila 2 latentné faktory, ktoré potvrdzujú, že GBV nie je jednorozmerný jav, ale má viacero odlišných dimenzií.

  4. 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.

  5. Logistická regresia identifikovala faktory, ktoré predikujú príslušnosť krajiny k vysokorizikovému zhluku.

  6. 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.

12.2 Odporúčania

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.