1.dio: Jednostruka i višestruka linearna regresija
Napraviti jednostruku korelacijsku analizu za odabrani primjer iz baze podataka i interpretirati rezultate (pazite na odabir varijabli i zadovoljnost uvjeta za primjenu Pearson/Spearman korelacije)
Odabrane varijable: CRP (1. mjerenje) i Troponin (1. mjerenje)
Istraživačko pitanje:
Postoji li statistički značajna povezanost između razine upalnog markera CRP-a (1. mjerenje) i razine Troponina I (1. mjerenje) u ispitanih bolesnika/pacijenata?
H0: nema povezanosti između razine CRP-a (1. mjerenje) i razine Troponina (1. mjerenje)
H1: postoji povezanost između razine CRP-a (1. mjerenje) i razine Troponina (1. mjerenje)
Provjera uvjeta:
# ================================================================# 1. DIO — KORELACIJSKA ANALIZA: CRP1 ~ SE# ================================================================# Shapiro-Wilk test normalnostishapiro.test(df$CRP1)
Shapiro-Wilk normality test
data: df$CRP1
W = 0.90867, p-value = 1.926e-07
shapiro.test(df$Trop1)
Shapiro-Wilk normality test
data: df$Trop1
W = 0.62352, p-value < 2.2e-16
Shapiro-Wilk test pokazao je da niti CRP1 niti Trop1 nisu normalno distribuirani (p < 0,05 za obje varijable) → primjenjujemo Spearmanovu korelaciju.
# Spearman korelacija za naš primjercor.test(df$CRP1, df$Trop1, method ="spearman")
Warning in cor.test.default(df$CRP1, df$Trop1, method = "spearman"): Cannot
compute exact p-value with ties
Spearman's rank correlation rho
data: df$CRP1 and df$Trop1
S = 258445, p-value = 0.0001381
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
0.3257487
# 95% interval pouzdanostiCI_low <- r -1.96* SE_rCI_high <- r +1.96* SE_rcat("95% CI: (", round(CI_low, 3), "-", round(CI_high, 3), ")\n")
95% CI: ( 0.163 - 0.489 )
Spearmanova korelacija
p < 0,001 → odbacujemo H0
r (Spearman ρ) = 0,326 (Spearmanov koeficijent korelacije u populaciji)
SE_r = 0,083
95% CI: (0,163 – 0,489) - s 95% pouzdanošću tvrdimo da se pravi koeficijent korelacije u populaciji nalazi između 0,163 i 0,489
Kod odbacivanja nul hipoteze (postoji povezanost) Spearmanov koeficijent korelacije ne bi se smio interpretirati kao Pearsonov – bolju interpretaciju daje Kendall Tau koeficijent korelacije rangova:
cor.test(df$CRP1, df$Trop1, method ="kendall")
Kendall's rank correlation tau
data: df$CRP1 and df$Trop1
z = 4.284, p-value = 1.835e-05
alternative hypothesis: true tau is not equal to 0
sample estimates:
tau
0.2557621
# Izračun OR za Kendall tautau <-0.256OR_kendall <- (1+ tau) / (1- tau)cat("Kendall τ =", tau, "\n")
Kendall τ = 0.256
cat("OR (pc/pd) =", round(OR_kendall, 3), "\n")
OR (pc/pd) = 1.688
cat("Interpretacija: vjerojatnost pojave konkordantnih parova je",round(OR_kendall, 2), "puta veća od diskonkordantnih\n")
Interpretacija: vjerojatnost pojave konkordantnih parova je 1.69 puta veća od diskonkordantnih
p < 0,001, tau = 0,256 → pozitivna korelacija između razine upalnog markera CRP-a (1. mjerenje) i razine Troponina I (1. mjerenje) kod ispitanika iz ovog istraživanja
Vjerojatnost pojave konkordantnih parova (dva ispitanika gdje onaj s višim CRP-om ima i viši Troponin) je 1,69 puta veća od vjerojatnosti pojave diskonkordantnih parova.
ggplot(df, aes(x = Trop1, y = CRP1)) +geom_point(alpha =0.5, color ="#2E86C1", size =2) +geom_smooth(method ="lm", color ="#E74C3C", se =TRUE, linewidth =1) +annotate("text", x =max(df$Trop1, na.rm =TRUE) *0.7, y =max(df$CRP1, na.rm =TRUE) *0.9,label =paste0("Spearman ρ = 0.326\nKendall τ = 0.256\np < 0.001"),color ="#2E86C1", size =4) +labs(title ="Korelacija CRP1 i Troponina I",subtitle ="Spearmanova korelacija rangova",x ="Troponin I - 1. mjerenje",y ="CRP1 (mg/L)") +theme_minimal(base_size =12)
`geom_smooth()` using formula = 'y ~ x'
Trop1 ima outliere koji rastežu x os i čine da većina točaka izgleda zbijeno
Vizualizacija s log transformacijom x osi:
U medicinskim istraživanjima log transformacija Troponina je uobičajena praksa, ali ju koristimo samo za vizualizaciju
ggplot(df, aes(x = Trop1, y = CRP1)) +geom_point(alpha =0.5, color ="#2E86C1", size =2) +geom_smooth(method ="lm", color ="#E74C3C",se =TRUE, linewidth =1) +scale_x_log10() +annotate("text", x =30,y =max(df$CRP1, na.rm =TRUE) *0.9,label =paste0("Spearman ρ = 0.326\nKendall τ = 0.256\np < 0.001"),color ="#2E86C1", size =4) +labs(title ="Korelacija CRP1 i Troponina I",subtitle ="Spearmanova korelacija rangova",x ="Troponin I - 1. mjerenje (log skala)",y ="CRP1 (mg/L)") +theme_minimal(base_size =12)
`geom_smooth()` using formula = 'y ~ x'
Zaključak:
Utvrđena je statistički značajna slaba pozitivna korelacija između CRP1 i Troponina I (Kendall τ = 0,256; p < 0,001). Vjerojatnost pojave konkordantnih parova je 1,69 puta veća od vjerojatnosti pojave diskonkordantnih parova, što znači da bolesnici s višim CRP-om imaju tendenciju imati i viši Troponin I. Procijenjeni Spearmanov koeficijent korelacije u populaciji iznosi ρ = 0,326 (SE = 0,083), a 95% interval pouzdanosti (0,163 – 0,489) ne uključuje nulu, što potvrđuje statističku značajnost korelacije u populaciji.
Odbacujemo H₀ — postoji statistički značajna pozitivna povezanost između razine CRP-a i Troponina I u ispitanih bolesnika.
Pomoću višestruke regresijske analize naći prediktore za jednu od varijabli po izboru iz baze podataka (sugestija: odaberite CRP ili Trop ili HSP90) i interpretirati rezultate. Ocijenite model
Istraživačko pitanje:
Koji klinički i laboratorijski parametri su neovisni prediktori razine CRP-a (1. mjerenje) u ispitanih bolesnika?
U inicijalni model uključeni su svi potencijalni prediktori. Nakon provjere multikolinearnosti (VIF), iz modela su uklonjeni prediktori s VIF > 5 (Eritrociti, Hgb, Kolesterol, LDL, AST) i proveden je reducirani model.
Provjera pretpostavki:
1. Kolinearnost prediktora: VIF svih prediktora (nakon uklanjanja) < 5 → nema multikolinearnosti. U inicijalnom modelu uklonjeni su prediktori s VIF > 5 (Eritrociti, Hgb, Kolesterol, LDL, AST) koji su pokazivali visoku međusobnu korelaciju.
2. Normalnost reziduala*: Shapiro-Wilk test reziduala: W = 1; p = 0,1 → reziduali su normalno distribuirani. Q-Q plot potvrđuje da točke prate dijagonalnu liniju bez većih odstupanja.
3. Linearnost odnosa*: Residuals vs Fitted plot pokazuje nasumičan raspored točaka oko nule bez vidljivog obrasca → pretpostavka linearnosti je zadovoljena.
4. Jednakost varijanci reziduala*: Scale-Location plot pokazuje relativno ravnu crvenu liniju → varijanca reziduala je približno jednaka duž cijelog raspona predviđenih vrijednosti.
5. Utjecajne točke*: Residuals vs Leverage plot pokazuje da nema točaka izvan Cookove udaljenosti → nema problematičnih outliera koji bi narušavali model
*2.-5. točka - R automatski vizualno provjerava koristeći funkciju plot(model)
F(17, 114) = 5,47; p < 0,001 → model je statistički značajan
R² = 0,449 → model objašnjava 44,9% varijance CRP1
Adj. R² = 0,367 → nakon korekcije za broj prediktora, model objašnjava 36,7%
Zaključak:
Višestrukom regresijskom analizom identificirani su neovisni prediktori razine CRP-a. Na forest plotu regresijskih koeficijenata s 95% intervalima pouzdanosti crvenom bojom označeni su statistički značajni prediktori čiji intervali pouzdanosti ne prelaze nulu.
Značajni prediktori (p < 0,05):
Trop1: b = 0,095 ± 0,026 — Trop1 pozitivno korelira s CRP1; za jediničnu promjenu Trop1 promjena CRP1 iznosi 0,095 ± 0,026
Trop1: t(114) = 3,615; p < 0,001 — beta koeficijent Trop1 kao prediktora je visoko statistički značajan (potreba zadržavanja u modelu!) — Trop1 je značajno povezan s CRP1
ALT: b = -0,051 ± 0,014 — ALT negativno korelira s CRP1; za jediničnu promjenu ALT promjena CRP1 iznosi -0,051 ± 0,014
ALT: t(114) = -3,772; p < 0,001 — beta koeficijent ALT kao prediktora je visoko statistički značajan (potreba zadržavanja u modelu!) — ALT je značajno povezan s CRP1
Leukocit: b = 0,503 ± 0,164 — Leukocit pozitivno korelira s CRP1; za jediničnu promjenu Leukocita promjena CRP1 iznosi 0,503 ± 0,164
Leukocit: t(114) = 3,060; p = 0,003 — beta koeficijent Leukocita kao prediktora je statistički značajan (potreba zadržavanja u modelu!) — Leukocit je značajno povezan s CRP1
eGFR: b = -0,054 ± 0,019 — eGFR negativno korelira s CRP1; za jediničnu promjenu eGFR promjena CRP1 iznosi -0,054 ± 0,019
eGFR: t(114) = -2,859; p = 0,005 — beta koeficijent eGFR kao prediktora je statistički značajan (potreba zadržavanja u modelu!) — eGFR je značajno povezan s CRP1
Trigliceridi: b = 0,905 ± 0,428 — Trigliceridi pozitivno koreliraju s CRP1; za jediničnu promjenu Triglicerida promjena CRP1 iznosi 0,905 ± 0,428
Trigliceridi: t(114) = 2,114; p = 0,037 — beta koeficijent Triglicerida kao prediktora je statistički značajan (potreba zadržavanja u modelu!) — Trigliceridi su značajno povezani s CRP1
Ostali prediktori (SE, Trombocit, Glukoza, Urea, Kreatinin, Kalij, LDH1, Bilirubin, HDL, HSP90_1, DaniUBolnici, Killip) nisu se pokazali statistički značajnim neovisnim prediktorima CRP-a.
Model je statistički značajan (F(17, 114) = 5,47; p < 0,001) i objašnjava 44,9% varijance CRP-a (R² = 0,449; Adj. R² = 0,367), uz zadovoljene pretpostavke normalnosti reziduala i odsutnost multikolinearnosti.
2.dio: Logistička regresija
Napraviti logističku regresiju za samostalno odabrani primjer iz baze i interpretirati rezultate. Ocijenite model.
Zavisna varijabla: Spol (0 = F, 1 = M)
Nezavisna varijabla: Hemoglobin
Istraživačko pitanje:
Postoji li statistički značajna povezanost između razine hemoglobina i spola ispitanika?
H₀: Ne postoji statistički značajna povezanost između razine hemoglobina i spola ispitanika — razina hemoglobina nije značajan prediktor spola (b = 0)
H₁: Postoji statistički značajna povezanost između razine hemoglobina i spola ispitanika — razina hemoglobina je značajan prediktor spola (b ≠ 0)
# ================================================================# 2. DIO — LOGISTIČKA REGRESIJA: SPOL ~ Hgb# ================================================================# SPOL kao binarna varijabla (M=1, F=0)df$SPOL_bin <-ifelse(df$SPOL =="M", 1, 0)# Modelmodel_null <-glm(SPOL_bin ~1, data = df, family = binomial)model_log <-glm(SPOL_bin ~ Hgb, data = df, family =binomial(link ="logit"))summary(model_log)
Call:
glm(formula = SPOL_bin ~ Hgb, family = binomial(link = "logit"),
data = df)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -10.59764 2.48918 -4.257 2.07e-05 ***
Hgb 0.08830 0.01937 4.560 5.12e-06 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 158.46 on 131 degrees of freedom
Residual deviance: 129.59 on 130 degrees of freedom
AIC: 133.59
Number of Fisher Scoring iterations: 5
# OR s 95% CIexp(cbind(OR =coef(model_log), confint(model_log)))
Hgb (b = 0,088; p < 0,001) → statistički značajan prediktor spola
OR = 1,092 (95% CI: 1,050–1,138) → svaki porast Hgb za 1 g/L povećava šanse da je ispitanik muškog spola za 9,2%
Ocjena modela:
-2 Log likelihood:
Null model: 158,46 (model bez ijednog prediktora; nasumično “pogađanje”)
Model s Hgb: 129,59
Smanjenje od 28,87 → model s prediktorom bolje pristaje podacima od null modela
Hi-kvadrat test:
χ²(1) = 28,9; p < 0,001 → model je statistički značajan u cjelini — Hgb značajno poboljšava predviđanje spola u odnosu na model bez prediktora
Zaključak:
Hemoglobin je statistički značajan prediktor spola (OR = 1,092; p < 0,001). Model je statistički značajan u cjelini (χ²(1) = 28,9; p < 0,001), a smanjenje -2LL s 158,46 na 129,59 potvrđuje da prediktor značajno poboljšava prilagodbu modela.
3.dio: ROC analiza
Napraviti ROC analizu za samostalno odabrani primjer iz baze i interpretirati rezultate.
Zavisna varijabla: Spol (0 = F, 1 = M)
Nezavisna varijabla: Hemoglobin
Istraživačko pitanje:
Kolika je diskriminacijska sposobnost hemoglobina (Hgb) u razlikovanju muškog od ženskog spola u ispitivanoj skupini bolesnika?
H₀: AUC = 0,5 → hemoglobin nema diskriminacijsku sposobnost u razlikovanju muškog od ženskog spola (nije bolji od slučajnog pogađanja)
H₁: AUC > 0,5 → hemoglobin ima statistički značajnu diskriminacijsku sposobnost u razlikovanju muškog od ženskog spola
Kriterij > 126 g/L — za vrijednosti Hgb > 126 g/L ROC analiza predlaže svrstavanje ispitanika u skupinu M (muški), ostale u skupinu F (ženski).
Osjetljivost = 80,9% (95% CI: 71,2% – 88,0%) — 80,9% je udio stvarno pozitivnih (sa Hgb > 126 g/L) u skupini M
Specifičnost = 63,2% (95% CI: 46,0% – 77,7%) — 63,2% je udio stvarno negativnih (sa Hgb ≤ 126 g/L) u skupini F
+LR = 2,20 (95% CI: 1,433 – 3,373) — pozitivna prediktivna vrijednost — 2,20 puta su veći izgledi da ćemo pozitivan rezultat (Hgb > 126 g/L) naći u skupini M u odnosu na izglede da ga nađemo u skupini F
-LR = 0,302 (95% CI: 0,187 – 0,489) ≅ 1/3,31 — negativna prediktivna vrijednost — izgledi da negativan rezultat (Hgb < 126 g/L) nađemo u skupini M u odnosu na izgled da ga nađemo u skupini F su 1:3,31
Zaključak:
ROC analiza pokazala je da hemoglobin ima prihvatljivu diskriminacijsku sposobnost u razlikovanju muškog od ženskog spola (AUC = 0,774; 95% CI: 0,688–0,860). Interval pouzdanosti ne uključuje 0,5, što potvrđuje da je diskriminacija statistički značajno bolja od slučajnog pogađanja.
Pri optimalnom cut-offu od 126 g/L (određenom Youden indeksom) model postiže: