Bu çalışma kapsamında, Stanford Üniversitesi Kalp Nakli Programı’ndan elde edilen ve kalp nakli bekleyen hastaların hayatta kalma süreleri ile demografik özelliklerini içeren heart_transplant veri seti analiz edilmiştir. Çalışmanın temel amacı, nakil işleminin hasta yaşam süresi üzerindeki etkisini modern istatistiksel yöntemlerle değerlendirmektir.
data("heart_transplant")
## Warning in data("heart_transplant"): data set 'heart_transplant' not found
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.2
library(openintro)
## Warning: package 'openintro' was built under R version 4.5.2
## Zorunlu paket yükleniyor: airports
## Zorunlu paket yükleniyor: cherryblossom
## Zorunlu paket yükleniyor: usdata
# grafiğini çiz
ggplot(data = heart_transplant, aes(x = age, y = survived)) +
geom_jitter(width = 0, height = 0.05, alpha = 0.5)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
heart_transplant <- heart_transplant |>
mutate(is_alive = ifelse(survived == "alive", 1, 0))
data_space <- ggplot(data = heart_transplant, aes(x = age, y = is_alive)) +
geom_jitter(width = 0, height = 0.05, alpha = 0.5)
data_space
data_space +
geom_smooth(method = "lm", se = FALSE)
## `geom_smooth()` using formula = 'y ~ x'
# Model
model <- glm(formula = is_alive ~ age, family = binomial, data = heart_transplant)
model
##
## Call: glm(formula = is_alive ~ age, family = binomial, data = heart_transplant)
##
## Coefficients:
## (Intercept) age
## 1.56438 -0.05847
##
## Degrees of Freedom: 102 Total (i.e. Null); 101 Residual
## Null Deviance: 120.5
## Residual Deviance: 113.7 AIC: 117.7
Lojistik Regresyon Model Bulgularının Yorumlanması
Kalp nakli verileri üzerinden kurulan lojistik regresyon modelinde
Katsayılar ve Log-Odds DüzeyiModel çıktısında yer alan -0.05847 değeri doğrudan bir olasılık değil, log-odds birimidir. Yaş değişkenine ait bu katsayının negatif olması, yaş ile hayatta kalma durumu arasında ters yönlü bir ilişki olduğunu gösterir. Yani, hastanın yaşı arttıkça hayatta kalma (sağkalım) şansı sistematik olarak azalmaktadır.
Odds Oranı (OR) ve Yüzdesel DeğişimLog-odds değerleri yorumlanması güç birimler olduğu için, bu değerin eksponansiyeli alınarak (e^{-0.05847} approx 0.943) odds oranına ulaşılmıştır.Elde edilen 0.943 değeri, yaşın her 1 birimlik (1 yıl) artışında hayatta kalma odds’unun bir önceki yıla göre yaklaşık %5.7 (1 - 0.943 = 0.057) oranında azaldığını ifade eder.
Lojistik regresyonda değişkenler arasındaki ilişki doğrusal değil, çarpımsal (multiplicative) bir yapıdadır. Bu nedenle etki sabit bir miktar değil, katlanarak (eksponansiyel) değişir.
Lojistik regresyonun doğrusal olmayan yapısı gereği, 10 yıllık bir yaş artışının etkisi katsayının 10 ile çarpılmasıyla değil, katsayının 10. kuvvetinin alınmasıyla hesaplanır:0.943^{10} approx 0.55. Bu hesaplama, yaşın 10 yıl artması durumunda hayatta kalma odds’unun yaklaşık %45 (1 - 0.55 = 0.45) oranında azalacağını göstermektedir. Bu durum, modelin yaş ilerledikçe riski nasıl katlayarak artırdığını kanıtlamaktadır.
# Odds Ratio
exp(coef(model))
## (Intercept) age
## 4.7797050 0.9432099
Modelde yaş değişkeni için hesaplanan odds oranı 0.943’tür. Bu değer 1’den küçük olduğu için yaş ile hayatta kalma durumu arasında negatif bir ilişki olduğunu teyit eder.
Sabit terimin odds değeri 4.780 olarak hesaplanmıştır.Bu değer, yaş değişkeninin “0” olduğu durumdaki hayatta kalma odds’unu temsil eder. Matematiksel olarak, yeni doğmuş bir birey için hayatta kalma odds’unun hayatta kalmama odds’una göre yaklaşık 4.8 kat daha fazla olduğunu söyler.
library(ggplot2)
ggplot(heart_transplant, aes(x = age, y = is_alive)) +
geom_jitter(width = 0, height = 0.05, alpha = 0.5) +
stat_smooth(
method = "glm",
method.args = list(family = "binomial"),
se = FALSE,
color = "red"
)
## `geom_smooth()` using formula = 'y ~ x'
library(ggplot2)
ggplot(heart_transplant, aes(x = age, y = as.numeric(is_alive) - 1)) +
geom_point(alpha = 0.4, color = "black") + # Veri noktaları
# 1. Doğrusal Regresyon Çizgisi (Düz ve Koyu)
geom_smooth(method = "lm",
se = FALSE,
color = "black",
linewidth = 1.5) +
# 2. Lojistik Regresyon Eğrisi (Düz ve Koyu Mavi)
geom_smooth(method = "glm",
method.args = list(family = "binomial"),
se = FALSE,
color = "blue",
linewidth = 1.5) +
theme_minimal() +
labs(title = "Doğrusal vs. Lojistik Regresyon",
x = "age",
y = "is_alive")
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Failed to fit group -1.
## Caused by error:
## ! y değerleri 0 <= y <= 1 olmalı
#Tahmin Olasılıkları
library(broom)
## Warning: package 'broom' was built under R version 4.5.2
heart_transplant_plus <- model %>%
augment(type.predict = "response") %>%
mutate(y_hat = .fitted)
ggplot(heart_transplant_plus, aes(x = age, y = y_hat)) +
geom_point(alpha = 0.5) +
geom_line(color = "red") +
scale_y_continuous("Probability of being alive", limits = c(0, 1)) +
labs(x = "Age")
heart_transplant_plus <- heart_transplant_plus %>%
mutate(odds_hat = y_hat / (1 - y_hat))
ggplot(heart_transplant_plus, aes(x = age, y = odds_hat)) +
geom_point(alpha = 0.5) +
geom_line(color = "red") +
labs(x = "Age", y = "Odds of being alive")
# log-odds hesaplama
heart_transplant_plus <- heart_transplant_plus %>%
mutate(log_odds = log(odds_hat))
# log-odds grafiği
ggplot(heart_transplant_plus, aes(x = age, y = log_odds)) +
geom_point(alpha = 0.5) +
geom_line() +
labs(x = "age", y = "Log(odds) of being alive")
İlgili modelden elde edilen kestirimler üç ayrı ölçekte (olasılık, odds ve log-odds) analiz edilmiştir. Elde edilen bulgular, yaş değişkeni ile hayatta kalma durumu arasındaki ters yönlü ilişkiyi net bir şekilde ortaya koymaktadır. Olasılık grafiğinde görüldüğü üzere, genç yaşlarda .75 civarında seyreden hayatta kalma şansı, yaşlandıkça matematiksel sınır olan 0’a yaklaşarak .10 seviyesine inmektedir. Odds değerleri üzerinden yapılan inceleme ise bu düşüşün şiddetini daha belirgin kılmaktadır; zira başlangıçta hayatta kalma şansı kalmama şansının 3 katıyken (odds=3), ileri yaşlarda bu oran 1’in altına sarkarak dengenin tersine döndüğünü göstermektedir. Özellikle odds değerinin 1’den büyük olması genç yaş grubunda sağ kalma lehine bir durum olduğunu simgelerken, yaş artışıyla bu avantaj kaybolmaktadır. Tüm bu süreç log-odds ölçeğine taşındığında ise yaşın hayatta kalma üzerindeki etkisinin sabit ve doğrusal bir trend izlediği saptanmıştır.
Çalışmanın bu bölümünde, sağkalım durumları sadece yaş değişkeni üzerinden değil, nakil yapılıp yapılmadığı durumuyla birlikte ele alınmaktadır. Yaşın hayatta kalma üzerindeki etkisi bilinmekle birlikte, asıl odak noktası kalp naklinin bu sürece sağladığı katma değeri saptamaktır. Uygulanan lojistik regresyon analizinde nakil değişkeni modele dahil edilerek yaş faktörü kontrol altına alınmış ve müdahalenin (nakil) hayatta kalma olasılığını ne yönde değiştirdiği incelenmiştir. Bu yaklaşım, nakil yapılan bireylerin kontrol grubundaki benzer yaştaki kişilere oranla sağkalım avantajına sahip olup olmadığını objektif verilerle ortaya koymaktadır.
library(dplyr)
# model2
model2 <- glm(is_alive ~ age + transplant,
data = heart_transplant,
family = binomial)
summary(model2)
##
## Call:
## glm(formula = is_alive ~ age + transplant, family = binomial,
## data = heart_transplant)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.97311 1.07683 0.904 0.36616
## age -0.07632 0.02551 -2.992 0.00277 **
## transplanttreatment 1.82316 0.66799 2.729 0.00635 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 120.53 on 102 degrees of freedom
## Residual deviance: 103.90 on 100 degrees of freedom
## AIC: 109.9
##
## Number of Fisher Scoring iterations: 5
exp(coef(model2))
## (Intercept) age transplanttreatment
## 2.6461676 0.9265153 6.1914009
Kurulan regresyon modeli çerçevesinde elde edilen katsayılar, yaş ve nakil durumunun hayatta kalma üzerindeki rollerini farklı yönlerde ortaya koymuştur. Yaş faktörü, negatif katsayısı ile sağkalım ihtimalini azaltan bir risk unsuru olarak öne çıkmaktadır; yaşın bir birimlik artışı sağkalım odds’unda %7’lik bir azalmaya tekabül etmektedir. Diğer yandan, transplantasyonun sağkalım üzerindeki pozitif ve güçlü etkisi dikkat çekicidir. Nakil değişkeni için elde edilen 6.2’lik odds değeri, operasyonun hayatta kalma olasılığını nakil yapılmayan duruma göre yaklaşık 6 kat artırdığını kanıtlamaktadır. Modeldeki her iki değişkenin de p-değerleri açısından anlamlılık sınırları içinde kalması, bu etkilerin şans eseri oluşmadığını ve modelin sağkalımı öngörmede güçlü bir yapı sergilediğini göstermektedir
augment(model2, type.predict = "response")
## # A tibble: 103 × 9
## is_alive age transplant .fitted .resid .hat .sigma .cooksd .std.resid
## <dbl> <int> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 0 53 control 0.0443 -0.301 0.0219 1.02 0.000354 -0.304
## 2 0 43 control 0.0904 -0.435 0.0295 1.02 0.00104 -0.442
## 3 0 52 control 0.0476 -0.312 0.0225 1.02 0.000392 -0.316
## 4 0 52 control 0.0476 -0.312 0.0225 1.02 0.000392 -0.316
## 5 0 54 control 0.0412 -0.290 0.0213 1.02 0.000319 -0.293
## 6 0 36 control 0.145 -0.560 0.0403 1.02 0.00248 -0.571
## 7 0 47 control 0.0682 -0.376 0.0259 1.02 0.000666 -0.381
## 8 0 41 treatment 0.418 -1.04 0.0192 1.02 0.00477 -1.05
## 9 0 47 control 0.0682 -0.376 0.0259 1.02 0.000666 -0.381
## 10 0 51 control 0.0512 -0.324 0.0231 1.02 0.000436 -0.328
## # ℹ 93 more rows
Modelden elde edilen bulguları veri düzeyine taşımak için kullanılan augment() işlevi, her bir gözlem için tahmin edilen değerleri yeni bir veri setine dönüştürür. Analiz aşamasında type.predict = ‘response’ komutunun tercih edilmesiyle, .fitted çıktılarının olasılık değerleri cinsinden elde edilmesi mümkün olmaktadır. Nitekim modelin öngörü gücü test edildiğinde; nakil yapılmayan 53 yaşındaki bir hastanın sağkalım olasılığının %4.4 gibi düşük bir seviyede kaldığı saptanmıştır.
Lojistik regresyon analizi, değişkenler arasındaki karmaşık ilişkileri anlamlandırmak açısından oldukça verimli bir çalışma alanı sunmuştur. Analiz sürecinde, model denkleminin kurulması ve elde edilen katsayıların (odds ratio ve log-odds) teorik çerçeveyle uyumlu şekilde yorumlanması üzerine kapsamlı notlar oluşturulmuştur. Özellikle katsayıların sağkalım olasılıkları üzerindeki yansımalarını detaylandırmak, konunun mantığını pekiştirmek açısından öğretici olmuştur. Yapılan bu detaylı incelemelerin, modelin kestirim gücünü ve istatistiksel anlamlılığını kavrama noktasında üst düzey bir verimlilik sağladığı düşünülmektedir.