Bağımlı değişkenin hiyerarşik bir sıra izlemeyen üç veya daha fazla kategoriden oluştuğu durumlarda, değişkenler arasındaki karmaşık ağ yapısını çözümlemek adına Multinominal Lojistik Regresyon tercih edilir. Bu yöntem, sürekli veya kategorik yapıdaki yordayıcı değişkenlerin, bireyin hangi sınıfa ait olma olasılığını nasıl etkilediğini Maksimum Olabilirlik (Maximum Likelihood) kestirimi üzerinden belirler. Analizin doğası gereği, tahminlerin kararlılığı ve modelin güvenilirliği açısından geniş veri setleri üzerinde çalışılması kritik önem taşır.
Bağımlı Değişken Yapısına Göre Alternatif Analiz Yaklaşımları
Kategorik bağımlı değişkenlerle çalışırken doğru yöntemi seçmek hem verinin doğasını korumak hem de istatistiksel geçerliliği sağlamak açısından kritiktir. İşte temel yaklaşımlar ve tercih kriterleri:
• Multinominal Lojistik Regresyon (MLR): Sıralı olmayan (nominal) çoklu kategoriler için standart ve en yaygın yaklaşımdır.
• Multinominal Probit Regresyon: MLR’ye benzerdir; ancak hata terimlerinin normal dağıldığı varsayımına dayanır.
• Diskriminant (Ayırma) Analizi: Kategorileri birbirinden ayıran fonksiyonlar oluşturur; ancak bağımsız değişkenlerin çok değişkenli normal dağılım göstermesi gibi daha katı varsayımları vardır.
• Sıralı (Ordinal) Lojistik Regresyon: Eğer kategoriler arasında “düşükten yükseğe” gibi bir hiyerarşi varsa, modeli basitleştirmek ve daha anlamlı sonuçlar almak için MLR yerine bu yöntem tercih edilmelidir.
Kaçınılması Gereken Yanlış Yaklaşımlar
Araştırmacılar bazen kolaylık olsun diye şu yollara başvurabilmektedir, ancak bu yöntemler ciddi riskler barındırır:
Ayrı Ayrı İkili (Binary) Lojistik Regresyonlar Yapmak: Her çift için ayrı analiz yapmak, toplam olasılığın 1’i geçmesine (matematiksel tutarsızlık) ve her analizde farklı alt gruplarla çalışılmasına neden olur.
Kategorileri Birleştirerek İkiye İndirgenmesi: Analizi basitleştirir gibi görünse de, verideki orijinal varyansın ve bilginin kaybolmasına yol açarak araştırmanın doğasını bozar.
Bu çalışmada, eğitim bilimleri literatüründe sıkça kullanılan ve 200 öğrenciye ait verileri içeren “High School and Beyond” (hsb2) veri seti üzerinden, öğrencilerin kayıtlı oldukları program türlerini (Academic, General, Vocational) yordamaya yönelik bir analiz gerçekleştirilmiştir.
Amaç, öğrencilerin akademik başarıları ile sosyo-ekonomik arka planlarının, kariyer basamaklarının ilk adımı olan “program seçimi” üzerindeki etkisini incelemektir.
Analiz kapsamında, bağımlı değişkenimiz olan ve hiyerarşik bir sıra izlemeyen üç kategorili program türü değişkeni, Multinominal Lojistik Regresyon yöntemiyle modellenmiştir. Bu yöntem seçilirken:
Bağımlı değişkenin nominal (kategorik) yapısı,
Bağımsız değişkenlerin (Matematik, Yazma puanları ve SES düzeyi) bu kategoriler arasındaki geçiş olasılıklarını nasıl etkilediğinin belirlenmesi hedeflenmiştir.
Araştırma Soruları
Matematik ve Yazma gibi akademik başarı göstergeleri, öğrencinin akademik bir program yerine mesleki veya genel bir programa yönelme olasılığını anlamlı şekilde yordamakta mıdır?
Sosyo-ekonomik statü (SES) ve cinsiyet, program seçiminde belirleyici bir rol oynamakta mıdır?
library(foreign)
hsb2 <- read.dta("https://stats.idre.ucla.edu/stat/data/hsb2.dta")
table(hsb2$prog)
##
## general academic vocation
## 45 105 50
hsb2$prog <- factor(hsb2$prog,
levels = c("general", "academic", "vocation"),
labels = c("General", "Academic", "Vocational"))
hsb2$prog <- relevel(hsb2$prog, ref = "Academic")
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
hsb2 %>%
group_by(prog) %>%
summarise(
n = n(),
ort_matematik = mean(math, na.rm = TRUE),
ort_yazma = mean(write, na.rm = TRUE)
)
## # A tibble: 3 × 4
## prog n ort_matematik ort_yazma
## <fct> <int> <dbl> <dbl>
## 1 Academic 105 56.7 56.3
## 2 General 45 50.0 51.3
## 3 Vocational 50 46.4 46.8
# Bağımlı Değişken:
hsb2$prog <- factor(hsb2$prog)
hsb2$prog <- relevel(hsb2$prog, ref = "Academic")
# Bağımsız Değişken 1: Sosyo-Ekonomik Statü (ses)
# Orijinal veride 1=Low, 2=Middle, 3=High şeklindedir
hsb2$ses_f <- factor(hsb2$ses,
levels = c(1, 2, 3),
labels = c("Low", "Middle", "High"))
hsb2$ses_f <- relevel(hsb2$ses_f, ref = "Low") # Düşük statü referans
# Bağımsız Değişken 2: Cinsiyet (female)
# 0=Male, 1=Female
hsb2$gender_f <- factor(hsb2$female,
levels = c(0, 1),
labels = c("Male", "Female"))
hsb2$gender_f <- relevel(hsb2$gender_f, ref = "Male") # Erkek referans
library(nnet)
hsb2$prog <- as.character(hsb2$prog)
hsb2$prog <- factor(hsb2$prog, levels = c("Academic", "General", "Vocational"))
hsb2$prog <- relevel(hsb2$prog, ref = "Academic")
hsb2$ses_f <- as.factor(hsb2$ses) # 1, 2, 3 değerlerini doğrudan faktör yapar
hsb2$gender_f <- as.factor(hsb2$female)
# MODEL
model_final <- multinom(prog ~ ses_f + gender_f + math + write, data = hsb2)
## # weights: 21 (12 variable)
## initial value 219.722458
## iter 10 value 172.652565
## final value 170.512658
## converged
summary(model_final)
## Call:
## multinom(formula = prog ~ ses_f + gender_f + math + write, data = hsb2)
##
## Coefficients:
## (Intercept) ses_fmiddle ses_fhigh gender_ffemale math
## General 4.401806 -0.3621525 -0.9469469 -0.1541278 -0.07263304
## Vocational 8.148832 0.6311263 -0.5073960 0.2380012 -0.11493012
## write
## General -0.01586247
## Vocational -0.06527091
##
## Std. Errors:
## (Intercept) ses_fmiddle ses_fhigh gender_ffemale math
## General 1.361424 0.4654473 0.5411263 0.4114992 0.02803071
## Vocational 1.523287 0.5084379 0.6321947 0.4466727 0.03190387
## write
## General 0.02691947
## Vocational 0.02790919
##
## Residual Deviance: 341.0253
## AIC: 365.0253
# Z istatistiklerini hesaplama
z <- summary(model_final)$coefficients / summary(model_final)$standard.errors
# P-değerlerini hesaplama
p <- (1 - pnorm(abs(z), 0, 1)) * 2
# Odds Ratio (Üstel katsayılar) - Yorumlama
odds_ratios <- exp(coef(model_final))
print(p)
## (Intercept) ses_fmiddle ses_fhigh gender_ffemale math
## General 1.223962e-03 0.4365253 0.08012598 0.7079939 0.0095643221
## Vocational 8.819520e-08 0.2144932 0.42220913 0.5941503 0.0003153066
## write
## General 0.55568926
## Vocational 0.01935155
print(odds_ratios)
## (Intercept) ses_fmiddle ses_fhigh gender_ffemale math write
## General 81.5981 0.6961762 0.3879236 0.8571625 0.9299420 0.9842627
## Vocational 3459.3366 1.8797265 0.6020613 1.2687108 0.8914284 0.9368136
library(sjPlot)
## Warning: package 'sjPlot' was built under R version 4.5.3
# Senin modelin için profesyonel tablo
tab_model(model_final,
show.p = TRUE, # P değerlerini göster
transform = "exp", # Katsayıları Odds Ratio'ya (Üstel) çevir
show.ci = 0.95, # %95 Güven Aralığını ekle
p.style = "numeric", # P değerlerini sayısal göster (yıldız yerine)
dv.labels = c("General vs Academic", "Vocational vs Academic"), # Başlıklar
string.est = "Odds Ratio") # Sütun ismini düzelt
| General vs Academic | Vocational vs Academic | |||
|---|---|---|---|---|
| Predictors | Odds Ratio | CI | p | Response |
| (Intercept) | 81.60 | 5.56 – 1196.84 | 0.001 | General |
| ses f [middle] | 0.70 | 0.28 – 1.74 | 0.438 | General |
| ses f [high] | 0.39 | 0.13 – 1.13 | 0.082 | General |
| gender f [female] | 0.86 | 0.38 – 1.93 | 0.708 | General |
| math | 0.93 | 0.88 – 0.98 | 0.010 | General |
| write | 0.98 | 0.93 – 1.04 | 0.556 | General |
| (Intercept) | 3459.34 | 171.38 – 69826.15 | <0.001 | Vocational |
| ses f [middle] | 1.88 | 0.69 – 5.12 | 0.216 | Vocational |
| ses f [high] | 0.60 | 0.17 – 2.10 | 0.423 | Vocational |
| gender f [female] | 1.27 | 0.53 – 3.06 | 0.595 | Vocational |
| math | 0.89 | 0.84 – 0.95 | <0.001 | Vocational |
| write | 0.94 | 0.89 – 0.99 | 0.020 | Vocational |
| Observations | 200 | |||
| R2 / R2 adjusted | 0.165 / 0.160 | |||
Tablodaki değerlerin 0.05’ten küçük olması, o değişkenin istatistiksel olarak anlamlı olduğunu gösterir.
Matematik (math): Hem General (p=0.009) hem de Vocational (p=0.0003) için çok anlamlı. Matematik puanı program seçiminde en belirleyici faktör.
Yazma (write): Vocational için anlamlı (p=0.019), ancak General için anlamlı değil (p=0.55).SES (Sosyo-Ekonomik Statü): Burada ilginç bir durum var; ses_fhigh General için sınırda (p=0.08) ama teknik olarak 0.05’in üzerinde kaldığı için “istatistiksel olarak anlamlı değil” diyebiliriz.
Matematik (math): Vocational satırında OR = 0.89.Yorum: Matematik puanındaki her 1 birimlik artış, öğrencinin Vocational (Mesleki) programa gitme olasılığını, Academic programa göre yaklaşık %11 (1 - 0.89 = 0.11) azaltmaktadır. Yani puan arttıkça öğrenci “Academic”e kaçıyor!
Cinsiyet (gender_female): Vocational için OR = 1.26.Yorum: Kız öğrencilerin (referans erkeklere göre) Vocational programı seçme olasılığı, Academic’e göre %26 daha fazladır (ancak p=0.59 olduğu için bu örneklemde anlamlı değil, sadece bir eğilim).
SES (Middle): Vocational için OR = 1.87.Yorum: Orta sosyo-ekonomik statüdeki bir öğrencinin Vocational seçme olasılığı, düşük statüdeki bir öğrenciye göre 1.87 kat daha fazladır.
Yapılan Multinominal Lojistik Regresyon analizi sonucunda, akademik programın referans kategori olarak alındığı modelde; matematik başarısının program seçiminde en istikrarlı ve anlamlı yordayıcı olduğu görülmüştür. Matematik puanı arttıkça, öğrencilerin mesleki ve genel programlara yönelme eğilimi anlamlı şekilde düşmektedir.
# Olasılıkları hesapla ve ilk 6 satırı gör
prob_table <- head(fitted(model_final))
round(prob_table, 3)
## Academic General Vocational
## 1 0.259 0.471 0.270
## 2 0.555 0.225 0.220
## 3 0.538 0.200 0.262
## 4 0.488 0.253 0.259
## 5 0.585 0.232 0.183
## 6 0.448 0.274 0.278
Modelin Bireysel Tahmin Olasılıkları (Predicted Probabilities) Katsayıların anlamlılığını test ettikten sonra, modelin verideki her bir öğrenci için sunduğu olasılık tahminleri incelenmiştir. Bu analiz, modelin bağımsız değişkenlerden (matematik, yazma puanı vb.) yola çıkarak bir öğrenciyi hangi kategoride sınıflandırdığını sayısal olarak ortaya koymaktadır.
Öğrenci 2: Model bu öğrenci için %55.5 olasılıkla “Academic” program tahmininde bulunmuştur. Bu yüksek olasılık, öğrencinin akademik başarı puanlarının referans grubun özellikleriyle güçlü bir örtüşme gösterdiğine işaret eder.
Öğrenci 1: Modelin en yüksek olasılığı %47.1 ile “General” programı için vermesi, bu öğrencinin puan profilinin genel eğitim programına daha yakın olduğunu göstermektedir.
hsb2$gender_f <- factor(hsb2$female, labels = c("Male", "Female"))
hsb2$ses_f <- factor(hsb2$ses, labels = c("Low", "Middle", "High"))
model_final <- multinom(prog ~ ses_f + gender_f + math + write, data = hsb2)
## # weights: 21 (12 variable)
## initial value 219.722458
## iter 10 value 172.652565
## final value 170.512658
## converged
yeni_veri_grid <- expand.grid(
math = seq(30, 80, by = 1),
gender_f = levels(hsb2$gender_f),
ses_f = levels(hsb2$ses_f)[1],
write = mean(hsb2$write, na.rm = TRUE)
)
olasiliklar_grid <- predict(model_final, newdata = yeni_veri_grid, type = "probs")
tahmin_verisi <- cbind(yeni_veri_grid, olasiliklar_grid)
# UZUN FORMAT VE GÖRSELLEŞTİRME
library(tidyr)
tahmin_uzun <- tahmin_verisi %>%
pivot_longer(
cols = c("Academic", "General", "Vocational"),
names_to = "Program",
values_to = "Olasilik"
)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.2
##
## Attaching package: 'ggplot2'
## The following object is masked from 'package:sjPlot':
##
## set_theme
ggplot(tahmin_uzun, aes(x = math, y = Olasilik, color = gender_f)) +
geom_line(linewidth = 1.2) +
facet_wrap(~ Program) +
labs(title = "Matematik Puanının Program Secimi Olasılıkları uzerindeki Etkisi",
subtitle = "hsb2 Veri Seti - Multinominal Lojistik Regresyon",
x = "Matematik Puanı", y = "Yordanan Olasılık", color = "Cinsiyet") +
theme_minimal()
Academic Paneli (En Güçlü Etki) Matematik puanı arttıkça (30’dan 80’e), bu programı seçme olasılığı inanılmaz bir hızla artıyor. Matematik başarısı yüksek olan öğrenciler, cinsiyet fark etmeksizin çok yüksek bir ihtimalle (%80’lerin üzerinde) akademik programı tercih ediyor. Bu, modelindeki math katsayısının neden bu kadar baskın ve anlamlı olduğunu görselleştiriyor.
General ve Vocational Panelleri (Zıt Etki) Matematik puanı yükseldikçe, her iki programın da seçilme olasılığı hızla düşüyor.Düşük matematik puanına sahip öğrencilerde mesleki (Vocational) ve genel (General) program eğilimi daha yüksekken, başarı arttıkça bu eğilim sönümleniyor. Özellikle Vocational kısmında, 30 puanda olasılık %40-50 civarındayken, 80 puanda neredeyse sıfıra iniyor.
Cinsiyet Farkı (Kırmızı ve Mavi Çizgiler) Academic: Çizgiler neredeyse üst üste. Bu, yüksek başarıda cinsiyetin tercih üzerinde bir fark yaratmadığını gösterir.
General: Erkeklerin (kırmızı) genel programı seçme olasılığı kadınlara (mavi) göre biraz daha yüksek görünüyor.
Vocational: Burada ilginç bir fark var; düşük matematik puanlarında kız öğrencilerin (mavi) mesleki programa yönelme olasılığı erkeklerden (kırmızı) daha yüksek başlamış, ancak puan arttıkça bu fark kapanıyor.
Görselleştirilen yordanan olasılıklar grafiği incelendiğinde; matematik başarısının program seçiminde ‘ayırıcı’ bir görev gördüğü saptanmıştır. Özellikle matematik puanındaki artışın, akademik program seçme olasılığını logaritmik bir eğilimle artırdığı, buna karşın mesleki ve genel program tercihlerini anlamlı düzeyde baskıladığı görülmektedir. Cinsiyet değişkeni ise özellikle düşük başarı düzeylerinde programlar arasında hafif bir ayrışmaya neden olsa da, başarı arttıkça bu etkinin azaldığı gözlemlenmiştir.