library(ggplot2)
# Podaci
spol <- c(rep("Dječaci", 2), rep("Djevojčice", 2), rep("Svi učenici", 2))
kategorija <- rep(c("Pretili", "Normalne mase"), 3)
vrijednost <- c(195, 630, 245, 610, 440, 1240)
grupa <- c(rep("Po spolu", 4), rep("Ukupno", 2))
data <- data.frame(spol, kategorija, vrijednost, grupa)
data$spol <- factor(data$spol, levels = c("Dječaci", "Djevojčice", "Svi učenici"))
data$grupa <- factor(data$grupa, levels = c("Po spolu", "Ukupno"))
ggplot(data, aes(fill = kategorija, y = vrijednost, x = spol)) +
geom_bar(position = "fill", stat = "identity") +
scale_y_continuous(labels = scales::percent) +
scale_fill_manual(values = c("Pretili" = "#E74C3C", "Normalne mase" = "#3498DB")) +
facet_wrap(~ grupa, scales = "free_x", strip.position = "left") +
labs(
title = "Udio pretilih učenika",
x = NULL,
y = "Udio (%)",
fill = "Kategorija"
) +
theme_minimal()Statistika - Zadaća 1
Z1: Analize kategoričkih podataka
1. Ispitivana je incidencija pretilosti u populaciji školske djece. Slučajnim izborom odabran je uzorak učenika i dobiveni su podaci u tablici 1.
| Tablica 1 | Dječaci | Djevojčice |
| Pretili | 195 | 245 |
| Normale mase | 630 | 610 |
1.1. Procijenite udio pretilih učenika u populaciji školske djece (za sve učenike i prema spolu).
Grafički prikaz s postotnim udjelima (stupičasti):
Grafički prikaz s postotnim udjelima (pie chart):
library(ggplot2)
library(gridExtra)
# --- 1.1 Ukupno ---
data_ukupno <- data.frame(
kategorija = c("Pretili", "Normalne mase"),
vrijednost = c(440, 1240)
)
p1 <- ggplot(data_ukupno, aes(x = "", y = vrijednost, fill = kategorija)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
scale_fill_manual(values = c("Pretili" = "#E74C3C", "Normalne mase" = "#3498DB")) +
labs(title = "Ukupno učenici", fill = "Kategorija") +
geom_text(aes(label = paste0(round(vrijednost / sum(vrijednost) * 100, 1), "%")),
position = position_stack(vjust = 0.5), color = "white", size = 5) +
theme_void() +
theme(plot.title = element_text(hjust = 0.5, face = "bold"),
plot.title.position = "plot")
# --- 1.1 Dječaci ---
data_djecaci <- data.frame(
kategorija = c("Pretili", "Normalne mase"),
vrijednost = c(195, 630)
)
p2 <- ggplot(data_djecaci, aes(x = "", y = vrijednost, fill = kategorija)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
scale_fill_manual(values = c("Pretili" = "#E74C3C", "Normalne mase" = "#3498DB")) +
labs(title = "Dječaci", fill = "Kategorija") +
geom_text(aes(label = paste0(round(vrijednost / sum(vrijednost) * 100, 1), "%")),
position = position_stack(vjust = 0.5), color = "white", size = 5) +
theme_void() +
theme(plot.title = element_text(hjust = 0.5, face = "bold"),
plot.title.position = "plot")
# --- 1.1 Djevojčice ---
data_djevojcice <- data.frame(
kategorija = c("Pretili", "Normalne mase"),
vrijednost = c(245, 610)
)
p3 <- ggplot(data_djevojcice, aes(x = "", y = vrijednost, fill = kategorija)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
scale_fill_manual(values = c("Pretili" = "#E74C3C", "Normalne mase" = "#3498DB")) +
labs(title = "Djevojčice", fill = "Kategorija") +
geom_text(aes(label = paste0(round(vrijednost / sum(vrijednost) * 100, 1), "%")),
position = position_stack(vjust = 0.5), color = "white", size = 5) +
theme_void() +
theme(plot.title = element_text(hjust = 0.5, face = "bold"),
plot.title.position = "plot")
# --- Prikaz svih grafova ---
grid.arrange(p1, p2, p3, ncol = 3)Izračunato koristeći Excel tablicu s Merlina; vidljivo i na grafovima:
postotni udio pretilih dječaka: (195/825) x 100 = 0,236 x 100 = 23,6%
postotni udio pretilih djevojčica (245/855) x 100 = 0,287 x 100 = 28,7%
postotni udio pretilih učenika (440/160) x 100 = 0,262 x 100 = 26,2%
| frekv. obiljezja | vel. uzorka | proporcija | granice pouzdanosti | |||||
| f | N | p | q | SD | 1,96*SD | -95% | 95% | |
| DJEČACI | 195 | 825 | 0,236 | 0,764 | 0,015 | 0,029 | 0,207 | 0,265 |
| DJEVOJČICE | 245 | 855 | 0,287 | 0,713 | 0,015 | 0,030 | 0,256 | 0,317 |
| SVI UČENICI | 440 | 1680 | 0,262 | 0,738 | 0,011 | 0,021 | 0,241 | 0,283 |
Sa 95% sigurnošću procjenjujemo 20,7%-26,5% pretilih dječaka (od ukupnog broja dječaka).
Sa 95% sigurnošću procjenjujemo 25,6%-31,7% pretilih djevojčica (od ukupnog broja djevojčica).
Sa 95% sigurnošću procjenjujemo 24,1%-28,3% pretilih učenika (od ukupnog broja učenika).
1.2. Da li se udio pretilih učenika razlikuje prema spolu? Riješite zadatak na dva načina i interpretirajte rezultate.
Nul-hipoteza H0: nema razlike u proporcijama u dvije skupine (=nema razlike u udjelima pretilih dječaka i djevojčica)
Alternativna hipoteza H1: postoji razlika u udjelima pretilih dječaka i djevojčica
| Tablica 1 | Dječaci | Djevojčice | |
| Pretili | 195 | 245 | 440 |
| Normale mase | 630 | 610 | 1240 |
| 825 | 855 | 1680 |
- način: test razlike proporcija
# Test razlike proporcija
# x = broj pretilih, n = ukupno po spolu
prop.test(x = c(195, 245),
n = c(825, 855),
correct = FALSE) # correct=FALSE = bez Yatesove korekcije, isto kao Z-test
2-sample test for equality of proportions without continuity correction
data: c(195, 245) out of c(825, 855)
X-squared = 5.4704, df = 1, p-value = 0.01934
alternative hypothesis: two.sided
95 percent confidence interval:
-0.09212622 -0.00824592
sample estimates:
prop 1 prop 2
0.2363636 0.2865497
Rezultati testa:
procijenjene proporcije:
p₁ = 0,236
p₂ = 0,287
razlika proporcija: Δp = p₁ − p₂ ≈ −0,050
p-vrijednost: 0,019
95% interval pouzdanosti: (−0,092 ; −0,008)
Interpretacija:
p = 0,019 < 0,05, odbacujemo H0. Postoji statistički značajna razlika između proporcija u dvije skupine.
Budući da je razlika negativna (p₁ < p₂), druga skupina ima veću proporciju.
S 95% pouzdanosti, stvarna razlika proporcija nalazi se između −0,092 i −0,008; u populaciji očekujemo da je proporcija u drugoj skupini veća za otprilike 0,8% do 9,2%.
- način: hi-kvadrat test
# hi-kvadrat test
# Napravimo kontingencijsku tablicu
tablica_1.2 <- matrix(c(195, 630, 245, 610),
nrow = 2,
dimnames = list(
c("Pretili", "Normalne mase"),
c("Dječaci", "Djevojčice")
))
tablica_1.2 # provjeri tablicu Dječaci Djevojčice
Pretili 195 245
Normalne mase 630 610
chisq.test(tablica_1.2, correct = FALSE)
Pearson's Chi-squared test
data: tablica_1.2
X-squared = 5.4704, df = 1, p-value = 0.01934
test <- chisq.test(tablica_1.2, correct = FALSE)
test$expected # očekivane frekvencije Dječaci Djevojčice
Pretili 216.0714 223.9286
Normalne mase 608.9286 631.0714
test$residuals # standardizirani reziduali Dječaci Djevojčice
Pretili -1.4334921 1.4081186
Normalne mase 0.8539075 -0.8387929
test$statistic # χ² vrijednostX-squared
5.470429
test$p.value # p-vrijednost[1] 0.01934088
# -------------------------------
# VELIČINE EFEKTA
# -------------------------------
N <- sum(tablica_1.2) # ukupno
# Φ (phi koeficijent)
phi <- sqrt(test$statistic / N)
phi X-squared
0.05706319
# Koeficijent kontingencije C
C <- sqrt(test$statistic / (test$statistic + N))
C X-squared
0.05697051
Interpretacija:
p = 0,019 < 0,05, odbacujemo H0. Postoji statistički značajna razlika između proporcija u dvije skupine.
Koeficijent kontigencije (C) i Φ koeficijent pokazuju da je povezanost spola i pretilosti slaba (mali efekt).
Zaključak:
S oba testa dobiven je p=0,01934 (u 1,9% jednakih studija možemo očekivati suprotan zaključak).
p < 0,05. Odbacujemo H0. Udio pretilih učenika statistički se značajno razlikuje prema spolu.
Oba pristupa daju isti zaključak, što potvrđuje robusnost rezultata.
1.3. Nastavljeno je praćenje učenika koji nisu pretili (630 dječaka i 610 djevojčica) kroz naredno razdoblje od godine dana. Kod djevojčica je zabilježen razvoj pretilosti u 110 slučajeva, a kod dječaka u 95. Postoji li razlika u riziku razvoja pretilosti u ovoj razvojnoj fazi s obzirom na spol? Interpretirajte rezultate.
H₀: Ne postoji razlika u riziku razvoja pretilosti u ovoj razvojnoj fazi s obzirom na spol.
H₁: Postoji razlika u riziku razvoja pretilosti u ovoj razvojnoj fazi s obzirom na spol.
| Razvili pretilost | Nisu razvili | Ukupno | |
|---|---|---|---|
| Dječaci | 95 | 535 | 630 |
| Djevojčice | 110 | 500 | 610 |
# "Ručni" izračun
R_djecaci <- 95 / 630
R_djevojcice <- 110 / 610
RR <- R_djevojcice / R_djecaci
SE_log_RR <- sqrt((1 - R_djevojcice) / 110 + (1 - R_djecaci) / 95)
lower <- exp(log(RR) - 1.96 * SE_log_RR)
upper <- exp(log(RR) + 1.96 * SE_log_RR)
cat("RR =", round(RR, 3), "\n")RR = 1.196
cat("95% CI: (", round(lower, 3), "-", round(upper, 3), ")\n")95% CI: ( 0.93 - 1.537 )
library(epitools)
# Kontingencijska tablica
# VAŽNO: riskratio() očekuje redoslijed - ishod u recima, eksponiranost u stupcima
# Redak 1 = "bolest" (razvili pretilost), Redak 2 = "bez bolesti"
# Stupac 1 = referentna grupa (dječaci), Stupac 2 = usporedna grupa (djevojčice)
tablica_1.3 <- matrix(c(95, 110, 535, 500),
nrow = 2,
dimnames = list(
c("Dječaci", "Djevojčice"),
c("Razvili pretilost", "Nisu razvili")
))
riskratio(tablica_1.3, method = "wald", rev = "columns")$data
Nisu razvili Razvili pretilost Total
Dječaci 535 95 630
Djevojčice 500 110 610
Total 1035 205 1240
$measure
NA
risk ratio with 95% C.I. estimate lower upper
Dječaci 1.000000 NA NA
Djevojčice 1.195858 0.9304737 1.536935
$p.value
NA
two-sided midp.exact fisher.exact chi.square
Dječaci NA NA NA
Djevojčice 0.1628033 0.1692328 0.1616134
$correction
[1] FALSE
attr(,"method")
[1] "Unconditional MLE & normal approximation (Wald) CI"
RR = 1.196 (usporedna grupa = djevojčice imaju 1,2× veći rizik razvoja pretilosti od referentne grupe = dječaci)
95% CI: ( 0.934 - 1.530 ) (interval pouzdanosti uključuje 1 → razlika nije statistički značajna)
Zaključak:
Ne odbacujemo H0 - ne postoji razlika u riziku razvoja pretilosti u ovoj razvojnoj fazi s obzirom na spol.
2. Skupina od 200 sportaša savladava testove opterećenja s ocjenom “zadovoljio/la” ili “nije zaodovljio/la”. Savladavaju prvo jedan, a potom drugi test. Dobiveni su rezultati prikazani su tablicom 2.
| Tablica 2 | 2.test | ||
| zadovoljili | nisu zadovoljili | ||
| 1.test | zadovoljili | 110 | 10 |
| nisu zadovoljili | 30 | 50 |
2.1. Možete li ocijeniti razlikuju li se testovi opterećenja u težini njihovog savladavanja?
H0: nema razlike u opterećenju u težini savladavanja testova
H1: postoji razlika u opterećenju u težini savladavanja testova
| 2. test: zadovoljili | 2. test: nisu | Ukupno | |
|---|---|---|---|
| 1. test: zadovoljili | 110 (a) | 10 (b) | 120 |
| 1. test: nisu | 30 (c) | 50 (d) | 80 |
| Ukupno | 140 | 60 | 200 |
McNemarov test:
# McNemarov test
tablica_2.1 <- matrix(c(110, 30, 10, 50),
nrow = 2,
dimnames = list(
c("1.test: zadovoljili", "1.test: nisu zadovoljili"),
c("2.test: zadovoljili", "2.test: nisu zadovoljili")
))
tablica_2.1 # provjeri tablicu 2.test: zadovoljili 2.test: nisu zadovoljili
1.test: zadovoljili 110 10
1.test: nisu zadovoljili 30 50
mcnemar.test(tablica_2.1)
McNemar's Chi-squared test with continuity correction
data: tablica_2.1
McNemar's chi-squared = 9.025, df = 1, p-value = 0.002663
p=0,002663 < 0,05. Odbacujemo H0. Testovi opterećenja razlikuju se u težini njihovog savladavanja.
2.2. Sportaši su potom podijeljeni (slučajnim izborom) u dvije skupine po 100. Novi test (3. Test) proveden je nakon što je u jednoj skupini uveden režim posebnog treninga i prehrane. Dobiveni su podaci u tablici 3. Da li je uvođenje režima posebnog treninga i prehrane povezano s rezultatom testiranja? Kolike su šanse da se ovakvim režimom treninga i prehrane postigne zadovoljavajući rezultat na testovima opterećenja?
| Tablica 3 |
|
|
| zadovoljili | nisu zadovoljili | |
| Uz posebni trening i prehranu | 84 | 16 |
| Bez posebnog treninga i prehrane | 62 | 38 |
H0: nema povezanosti uvođenja režima posebnog treninga i prehrane s rezultatom testiranja
H1: postoji povezanost uvođenja režima posebnog treninga i prehrane s rezultatom testiranja
| Zadovoljili | Nisu zadovoljili | Ukupno | |
|---|---|---|---|
| Posebni trening | 84 (a) | 16 (b) | 100 |
| Bez treninga | 62 (c) | 38 (d) | 100 |
| Ukupno | 146 | 54 | 200 |
tablica_2.2 <- matrix(c(84, 62, 16, 38),
nrow = 2,
dimnames = list(
c("Uz trening", "Bez treninga"),
c("Zadovoljili", "Nisu zadovoljili")
))
tablica_2.2 Zadovoljili Nisu zadovoljili
Uz trening 84 16
Bez treninga 62 38
# Hi-kvadrat test
chisq.test(tablica_2.2, correct = FALSE)
Pearson's Chi-squared test
data: tablica_2.2
X-squared = 12.278, df = 1, p-value = 0.0004583
# Odds Ratio
library(epitools)
oddsratio(tablica_2.2, method = "wald")$data
Zadovoljili Nisu zadovoljili Total
Uz trening 84 16 100
Bez treninga 62 38 100
Total 146 54 200
$measure
NA
odds ratio with 95% C.I. estimate lower upper
Uz trening 1.000000 NA NA
Bez treninga 3.217742 1.646579 6.288104
$p.value
NA
two-sided midp.exact fisher.exact chi.square
Uz trening NA NA NA
Bez treninga 0.000473631 0.0007360849 0.0004583216
$correction
[1] FALSE
attr(,"method")
[1] "Unconditional MLE & normal approximation (Wald) CI"
p=0,0004583 < 0,05. Odbacujemo H0. Postoji povezanost uvođenja režima posebnog treninga i prehrane s rezultatom testiranja.
OR = 3.218, 95% CI: (1.636 - 6.331)
OR = 3,218 → sportaši uz posebni trening imaju 3,2× veće šanse za zadovoljavajući rezultat u odnosu na skupinu bez posebnog treninga
- 95% CI (1,636 — 6,331) ne uključuje 1 → OR je statistički značajan