1 Kuramsal Temeller

1.1 Multinomial Lojistik Regresyon Nedir?

Multinomial lojistik regresyon (MLR), bağımlı (sonuç) değişkeninin ikiden fazla kategoriye sahip olduğu ve bu kategoriler arasında doğal bir sıralama bulunmadığı durumlar için geliştirilmiş, klasik ikili lojistik regresyonun genişletilmiş bir versiyonudur.

Bağımlı değişkenin kategorilerinden biri referans kategori olarak belirlenir; kalan tüm kategorilerin gerçekleşme olasılıkları bu referansla karşılaştırılarak odds oranları üzerinden modellenir. Eğer bağımlı değişkenin \(K\) kategorisi varsa, model arka planda eş zamanlı olarak \(K - 1\) adet ayrı denklemi kurar.

library(DiagrammeR)

grViz("
digraph karar {
  graph [layout = dot, rankdir = TB, fontname = 'Helvetica', bgcolor = '#1a1a2e']

  node [shape = diamond, style = filled, fillcolor = '#16213e',
        fontcolor = '#e0e0e0', fontsize = 13, color = '#4cc9f0']
  S1 [label = 'Bağımlı değişken\nkaç kategorili?']
  S2 [label = 'Kategoriler arasında\ndoğal sıralama var mı?']

  node [shape = rectangle, style = filled, fillcolor = '#0f3460',
        fontcolor = '#4cc9f0', fontsize = 12, color = '#4cc9f0']
  A [label = 'İkili (Binary)\nLojistik Regresyon']
  B [label = 'Ordinal\nLojistik Regresyon']
  C [label = 'Multinomial\nLojistik Regresyon']

  S1 -> A  [label = '  2  ', fontcolor = '#e0e0e0', color = '#4cc9f0']
  S1 -> S2 [label = '  3+  ', fontcolor = '#e0e0e0', color = '#4cc9f0']
  S2 -> B  [label = '  Evet  ', fontcolor = '#e0e0e0', color = '#f72585']
  S2 -> C  [label = '  Hayır  ', fontcolor = '#e0e0e0', color = '#4cc9f0']
}
")

Şekil 1. Lojistik Regresyon Ailesi

1.2 MLR’ye Neden İhtiyaç Duyuyoruz

İkili lojistik regresyon, bağımlı değişkenin tam olarak iki değer (0/1, Evet/Hayır, Geçti/Kaldı) aldığı durumlar için uygundur. Ancak pek çok gerçek dünya problemi bu ikili yapıya sığmaz: bir öğrencinin seçtiği program türü (genel / akademik / mesleki) ya da bir çalışanın meslek kategorisi üç veya daha fazla seçenekten oluşur. Böyle durumlarda standart ikili lojistik regresyonun uygulanması, tutarsız ve birbiriyle çelişen çözümlerin ortaya çıkmasına yol açar.

  • Kategorileri ikiye indirgemek: Bilgi kaybına yol açar ve araştırmanın özgün sorularını bambaşka sorulara dönüştürür. Kesinlikle önerilmez.
  • Her çift için ayrı ikili LR uygulamak: Farklı alt örneklemler üzerinde çalışıldığından sonuçlar çelişkili olabilir; üstelik tüm sonuç kategorilerinin seçilme olasılıklarının toplamı matematiksel olarak 1’i aşabilir.

MLR ise kategori karşılaştırmalarını tek bir modelde, aynı örneklem üzerinde eş zamanlı olarak tahmin eder ve olasılıkların toplamının her zaman tam olarak 1 olmasını garanti eder.

1.3 Model Yapısı

1.3.1 Referans Kategorinin Seçimi

MLR’de önce bağımlı değişkenin kategorilerinden biri referans kategori olarak belirlenir. Diğer tüm kategoriler bu referansla karşılaştırılır. Referans kategorinin seçimi araştırmacının kararına bağlıdır ve tamamen keyfi bir karardır; modelin matematiksel geçerliliğini ya da genel uyumunu etkilemez. Değişen tek şey, katsayıların ve odds oranlarının hangi gruba göre yorumlanacağıdır. Bu nedenle kuramsal olarak en anlamlı veya en yaygın kategoriyi referans seçmek, yorumlamayı kolaylaştırır.

1.4 Genel Model Denklemleri

\(K\) kategorili bir nominal bağımlı değişken ve \(K\). kategori referans olmak üzere, MLR modeli \(K - 1\) adet log-odds denklemi kurar:

\[\ln\left(\frac{P(Y = k)}{P(Y = K)}\right) = \beta_{k0} + \beta_{k1}X_1 + \beta_{k2}X_2 + \cdots + \beta_{kp}X_p, \quad k = 1, 2, \ldots, K-1\]

Her denklem, \(k\). kategoride bulunmanın referans kategoriye kıyasla log-odds’unu bağımsız değişkenlerin doğrusal bir fonksiyonu olarak ifade eder. Farklı \(k\) değerleri için ayrı katsayı setleri (\(\beta_{k0}, \beta_{k1}, \ldots\)) tahmin edilir; bu da modelin parametre sayısını \(p \times (K-1)\) artı \(K-1\) sabit terim kadar büyüttüğü anlamına gelir.

1.5 Yordanan Olasılıkların Hesaplanması

Her bir gözlem için tüm kategorilerin olasılıkları, softmax (multinomial logistic) dönüşümü ile elde edilir:

\[P(Y = k \mid X) = \frac{e^{\beta_{k0} + \beta_{k1}X_1 + \cdots + \beta_{kp}X_p}}{1 + \sum_{j=1}^{K-1} e^{\beta_{j0} + \beta_{j1}X_1 + \cdots + \beta_{jp}X_p}}\]

Referans kategori (\(K\)) için ise:

\[P(Y = K \mid X) = \frac{1}{1 + \sum_{j=1}^{K-1} e^{\beta_{j0} + \beta_{j1}X_1 + \cdots + \beta_{jp}X_p}}\]

Bu formüller, tüm kategorilerin olasılıklarının her gözlem için toplamının her zaman kesin olarak \(\sum_{k=1}^{K} P(Y=k \mid X) = 1\) olduğunu garanti eder.

grViz("
digraph model_yapi {
  graph [layout = dot, rankdir = LR, fontname = 'Helvetica', bgcolor = '#1a1a2e']

  node [shape = rectangle, style = filled, fillcolor = '#0f3460',
        fontcolor = '#4cc9f0', fontsize = 11, color = '#4cc9f0']
  X [label = 'Bağımsız\\nDeğişkenler\\nX₁, X₂, …, Xₚ']

  node [fillcolor = '#16213e', fontcolor = '#f8961e', color = '#f8961e']
  L1 [label = 'Logit 1\\nln(P(k=1) / P(ref))']
  L2 [label = 'Logit 2\\nln(P(k=2) / P(ref))']
  LK [label = 'Logit K−1\\nln(P(k=K-1) / P(ref))']

  node [fillcolor = '#16213e', fontcolor = '#b5179e', color = '#b5179e']
  SM [label = 'Softmax\\nDönüşümü']

  node [fillcolor = '#16213e', fontcolor = '#4cc9f0', color = '#4cc9f0']
  P1 [label = 'P(Y = k₁)']
  P2 [label = 'P(Y = k₂)']
  PK [label = 'P(Y = ref)']

  node [shape = oval, fillcolor = '#f72585', fontcolor = 'white', color = '#f72585']
  SC [label = 'Sınıflama\\n(argmax P)']

  X  -> L1; X  -> L2; X  -> LK
  L1 -> SM; L2 -> SM; LK -> SM
  SM -> P1; SM -> P2; SM -> PK
  P1 -> SC; P2 -> SC; PK -> SC
}
")

Şekil 2. Multinomial Lojistik Regresyon Model Yapısı

1.6 Katsayıların ve Odds Oranlarının Yorumlanması

1.6.1 Logit Katsayıları (\(\beta\))

\(k\). denklemdeki \(\beta_{kj}\) katsayısı şu anlama gelir: diğer tüm değişkenler sabit tutulduğunda, \(X_j\)’deki bir birimlik artış, \(Y = k\) kategorisinin referans kategoriye kıyasla gerçekleşme log-odds değerini \(\beta_{kj}\) birim değiştirir.

Katsayı pozitifse \(X_j\) arttıkça \(k\). kategorinin tercih edilme log-odds’u artmaktadır; negatifse azalmaktadır. Kategorik bağımsız değişkenler söz konusu olduğunda ise katsayı, ilgili grubun referans gruba kıyasla \(k\). kategoride bulunma log-odds farkını ifade eder.

1.6.2 Odds Oranları (\(e^\beta\) — Göreli Risk Oranı)

Katsayıların üssü alınarak elde edilen \(e^{\beta_{kj}}\) değeri, Odds Oranı (OR) ya da multinomial bağlamda Göreli Risk Oranı (Relative Risk Ratio, RRR) olarak adlandırılır:

\[\text{OR}_{kj} = e^{\beta_{kj}}\]

Yorumlama: Diğer değişkenler sabit tutulduğunda, \(X_j\)’deki bir birimlik artış, \(Y = k\) kategorisinin referans kategoriye tercih edilme odds’unu \(e^{\beta_{kj}}\) katına çıkarmaktadır.

\(e^{\beta_{kj}}\) değeri Anlam
\(> 1\) \(X_j\) arttıkça \(k\). kategori lehine odds artıyor
\(= 1\) \(X_j\)’nin etkisi yok
\(< 1\) \(X_j\) arttıkça \(k\). kategori lehine odds azalıyor

Güven aralıkları: Her OR için %95 güven aralığı şu formülle hesaplanır:

\[\text{GA}_{0.95} = \left(e^{\beta_{kj} - 1.96 \cdot \text{SH}_{kj}},\; e^{\beta_{kj} + 1.96 \cdot \text{SH}_{kj}}\right)\]

Güven aralığı 1 değerini kapsamıyorsa, ilgili karşılaştırma için odds oranı istatistiksel olarak anlamlıdır.

1.7 İstatistiksel Anlamlılık Testleri

1.7.1 Olabilirlik Oranı Testi (Likelihood Ratio Test — LRT)

LRT, bir bağımsız değişkenin MLR modelindeki genel (toplu) anlamlılığını sınamak için kullanılan en güçlü ve tercih edilen yöntemdir. İlgili değişkenin modelde bulunduğu tam model (full model) ile çıkarıldığı indirgenmiş model (reduced model) arasındaki log-olabilirlik farkını test eder:

\[\chi^2 = -2[\ln L_{\text{indirgenmiş}} - \ln L_{\text{tam}}]\]

Bu istatistik, \(df = K - 1\) serbestlik derecesiyle ki-kare dağılımına uyar. LRT’nin en büyük avantajı, söz konusu değişkenin tüm kategori karşılaştırmaları üzerindeki bütünleşik etkisini tek bir testle ölçmesidir.

1.7.2 Wald Testi

Wald testi ise bir bağımsız değişkenin yalnızca belirli bir logit denklemindeki (tek bir kategori karşılaştırmasındaki) anlamlılığını sınar:

\[W = \left(\frac{\hat{\beta}_{kj}}{\text{SH}_{kj}}\right)^2 \sim \chi^2_{(1)}\]

ya da eşdeğer olarak \(z = \hat{\beta}_{kj} / \text{SH}_{kj}\) standart normal dağılıma uyar. Wald testi büyük örneklemlerde güvenilirdir; ancak küçük örneklemlerde veya katsayılar sıfıra yakın olduğunda LRT’ye kıyasla güç kaybeder.

1.8 Model Uyumu ve Kalite Metrikleri

1.8.1 Sözde R² Ölçüleri (Pseudo R²)

Doğrusal regresyondaki gibi gerçek bir \(R^2\) hesaplanamadığından, modelin açıklama gücünü ölçmek için çeşitli sözde \(R^2\) indeksleri kullanılır. En yaygın kullanılanı McFadden \(R^2\)’dir:

\[R^2_{\text{McFadden}} = 1 - \frac{\ln L_{\text{tam}}}{\ln L_{\text{boş}}}\]

Burada \(\ln L_{\text{boş}}\), yalnızca sabit terimi içeren (hiçbir bağımsız değişken olmayan) modelin log-olabilirlik değeridir. McFadden \(R^2\) için genel kabul görmüş eşik değerleri şöyledir:

Değer aralığı Yorum
\(0.10 - 0.20\) Kabul edilebilir
\(0.20 - 0.40\) İyi
\(> 0.40\) Mükemmel

Cox & Snell ve Nagelkerke \(R^2\) değerleri de yaygın olarak raporlanır. Nagelkerke, Cox & Snell değerini teorik maksimuma göre ölçeklendirerek 1’e ulaşmasını mümkün kılar.

1.8.2 Bilgi Kriterleri: AIC ve BIC

Aynı veri üzerinde kurulan alternatif modelleri karşılaştırmak için bilgi kriteri tabanlı metrikler kullanılır. Her ikisinde de düşük değer daha iyi modeli işaret eder.

\[\text{AIC} = -2\ln L + 2p\]

\[\text{BIC} = -2\ln L + p \cdot \ln(n)\]

Burada \(p\) model parametrelerinin sayısını, \(n\) ise gözlem sayısını gösterir. BIC, AIC’e göre model karmaşıklığını daha ağır cezalandırır; bu nedenle büyük örneklemlerde daha sade (tutumlu) modelleri tercih eder. Araştırmacı iki modeli karşılaştırırken AIC ya da BIC’teki farkın pratikte anlamlı sayılabilmesi için genellikle \(\Delta \geq 2\) eşiği baz alınır.

1.8.3 Uyum İyiliği Testleri

a) Sapma ve Ki-Kare

Model ile doymuş (saturated) model arasındaki farkı ölçen bu testlerde yüksek (anlamsız) p-değeri beklenir; bu durum modelin veriyle çelişmediğini, yani iyi uyduğunu gösterir. Ancak yeterli hücre sayısının bulunmadığı seyrek tablolarda bu testlerin güvenilirliği azalır.

b) Fagerland’ın Hosmer-Lemeshow Uzantısı (\(C_M\) İstatistiği)

Klasik Hosmer-Lemeshow testi yalnızca ikili lojistik regresyon için tasarlanmıştır ve MLR’ye doğrudan uygulanamaz. Bu boşluğu doldurmak amacıyla Fagerland ve arkadaşları tarafından geliştirilen \(C_M\) istatistiği, multinomial modele özgü bir uyum iyiliği ölçütüdür.

Çalışma prensibi şöyledir: 1. Her gözlem için referans kategoride olmama olasılığı hesaplanır. 2. Bu olasılığa göre tüm gözlemler genellikle 10 eşit gruba ayrılır. 3. Her grup × her kategori kombinasyonu için gözlemlenen ve beklenen frekanslar bir matris tablosunda karşılaştırılır. 4. Test istatistiği ki-kare dağılımına uyar; yüksek p-değeri iyi uyumu işaret eder.

1.8.4 Sınıflama Performansı

Modelin pratik tahmin başarısını değerlendirmek için yordanan olasılıklar üzerinden her gözlem en yüksek olasılıklı kategoriye atanır ve gerçek sınıflamalarla karşılaştırılır. Bu karşılaştırma, doğru sınıflama oranı (accuracy) ve kategoriye özgü duyarlılık (sensitivity) değerlerini üretir.

1.9 Yordanan Olasılıkların İncelenmesi ve Görselleştirme

Katsayı tabloları MLR modelinin matematiksel yapısını özetler; ancak yordanan olasılıklar modelin pratik anlamını en sezgisel biçimde aktarır. Bu nedenle araştırmacılar genellikle bağımsız değişkenlerin belirli değerleri için tahmin edilen olasılık profillerini hesaplar ve görselleştirir.

Ortalamadaki tahmin: Sürekli değişkenler kendi ortalamalarında sabitlenirken kategorik değişkenin her düzeyi için olasılıklar hesaplanır. Bu yöntem, kategorik değişkenin saf etkisini izole eder.

Grid tahmini: Sürekli bir değişken belirli bir aralıkta (örn. minimum ile maksimum arası) adım adım değiştirilirken diğer değişkenler sabitlenir ve her noktadaki olasılıklar hesaplanır. Sonuçlar çizgi grafiği ile görselleştirildiğinde, bağımsız değişkenin olasılık profilleri üzerindeki eğilimi ortaya çıkar.

1.10 Varsayımlar

MLR’nin sağlıklı sonuçlar üretebilmesi için aşağıdaki koşulların sağlanması beklenir:

  1. Bağımlı değişkenin nominal yapıda olması: Kategoriler arasında sıralama ilişkisi bulunmamalıdır. Sıralı yapı varsa sıralı (ordinal) lojistik regresyon tercih edilmelidir.
  2. Bağımsız gözlemler: Her gözlem birbirinden bağımsız olmalı; tekrarlı ölçüm ya da hiyerarşik yapılar (öğrencilerin okullara göre iç içe geçmesi gibi) varsa uygun düzeltmeler yapılmalıdır.
  3. Çoklu bağlantı (multicollinearity) yokluğu: Bağımsız değişkenler arasında yüksek korelasyon katsayı tahminlerini kararsız hale getirir; VIF değerleri 10’un altında olmalıdır.
  4. Yeterli örneklem büyüklüğü: MLR çok denklemli bir yapı olduğundan geniş örneklem gerektirir. Genel kural olarak her kategoride ve her bağımsız değişken başına en az 10-15 gözlem önerilir.
  5. Aşırı seyreklik (complete separation) yokluğu: Bir bağımsız değişken bağımlı değişkeni mükemmel biçimde ayırıyorsa maximum likelihood kestirimi yakınsamaz.
  6. Sürekli değişkenler ile log-odds arasındaki doğrusallık: Sürekli bağımsız değişkenler ile her logit denklemi arasındaki ilişkinin doğrusal olması beklenir. Bu varsayım Box-Tidwell testi ile sınanabilir.

2 Uygulama

library(carData)       # Prestige veri seti
library(tidyverse)     # veri manipülasyonu ve görselleştirme
library(nnet)          # multinom() — multinomial LR
library(kableExtra)    # tablo biçimlendirme
library(DiagrammeR)    # akış şemaları
library(lmtest)        # lrtest() — olabilirlik oranı testi
library(scales)        # eksen etiket biçimlendirme

2.1 Veri Setinin Tanıtılması

Bu bölümde analizde kullanılacak Prestige veri setinin yapısı, değişkenleri ve gözlem sayısı kısaca tanıtılmaya çalışılmıştır.

data("Prestige", package = "carData")

head(Prestige)
glimpse(Prestige)
## Rows: 102
## Columns: 6
## $ education <dbl> 13.11, 12.26, 12.77, 11.42, 14.62, 15.64, 15.09, 15.44, 14.5…
## $ income    <int> 12351, 25879, 9271, 8865, 8403, 11030, 8258, 14163, 11377, 1…
## $ women     <dbl> 11.16, 4.02, 15.70, 9.11, 11.68, 5.13, 25.65, 2.69, 1.03, 0.…
## $ prestige  <dbl> 68.8, 69.1, 63.4, 56.8, 73.5, 77.6, 72.6, 78.1, 73.1, 68.8, …
## $ census    <int> 1113, 1130, 1171, 1175, 2111, 2113, 2133, 2141, 2143, 2153, …
## $ type      <fct> prof, prof, prof, prof, prof, prof, prof, prof, prof, prof, …

Prestige veri seti, 1971 yılı Kanada Nüfus Sayımı’ndan derlenen 102 meslek grubu için 6 değişken içermektedir. Bağımlı değişken olan type, meslek türünü üç nominal kategoriyle ifade etmektedir: mavi yaka (bc), beyaz yaka (wc) ve profesyonel (prof).

2.2 Değişkenlerin Türkçeleştirilmesi ve Veri Hazırlama

Bu kısımda tüm değişken adları Türkçeleştirilmiş, kategorik değişkenin etiketleri anlamlı Türkçe karşılıklarıyla yeniden kodlanmış ve kayıp değere sahip gözlemler listwise silme yöntemiyle analiz dışı bırakılmıştır.

veri <- Prestige %>%
  rename(
    egitim      = education,   # ortalama eğitim yılı
    gelir       = income,      # ortalama yıllık gelir (USD)
    kadin_orani = women,       # kadın çalışan oranı (%)
    prestij     = prestige,    # Pineo-Porter prestij puanı
    meslek_turu = type
  ) %>%
  mutate(
    meslek_turu = factor(meslek_turu,
                         levels = c("bc", "wc", "prof"),
                         labels = c("Mavi Yaka", "Beyaz Yaka", "Profesyonel"))
  ) %>%
  drop_na(meslek_turu)

cat("Analize dahil edilen gözlem sayısı:", nrow(veri), "\n")
## Analize dahil edilen gözlem sayısı: 98
cat("Meslek türü dağılımı:\n")
## Meslek türü dağılımı:
table(veri$meslek_turu)
## 
##   Mavi Yaka  Beyaz Yaka Profesyonel 
##          44          23          31

2.3 Betimsel İstatistikler

2.3.1 Sürekli Değişkenler

Değişkenlerin merkezi eğilim ve yayılım özelliklerini meslek türleri bazında ortaya koymak amacıyla grup içi betimsel istatistikler hesaplanmıştır.

betimsel <- veri %>%
  select(meslek_turu, egitim, gelir, kadin_orani) %>%
  pivot_longer(cols = c(egitim, gelir, kadin_orani),
               names_to = "degisken", values_to = "deger") %>%
  group_by(meslek_turu, degisken) %>%
  summarise(
    Ort  = mean(deger),
    SS   = sd(deger),
    Min  = min(deger),
    Maks = max(deger),
    .groups = "drop"
  ) %>%
  mutate(
    degisken = case_when(
      degisken == "egitim"      ~ "Eğitim Yılı",
      degisken == "gelir"       ~ "Yıllık Gelir (USD)",
      degisken == "kadin_orani" ~ "Kadın Oranı (%)"
    )
  ) %>%
  rename(`Meslek Türü` = meslek_turu,
         Değişken = degisken,
         Ortalama = Ort,
         `Std. Sapma` = SS,
         Minimum = Min,
         Maksimum = Maks)

betimsel %>%
  kbl(digits = 2,
      caption = "Tablo 1. Sürekli Değişkenlerin Meslek Türüne Göre Betimsel İstatistikleri",
      align   = c("l", "l", "r", "r", "r", "r")) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"),
    full_width  = FALSE,
    position    = "center",
    font_size   = 13
  ) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#2C3E50") %>%
  column_spec(1, bold = TRUE) %>%
  collapse_rows(columns = 1, valign = "middle")
Tablo 1. Sürekli Değişkenlerin Meslek Türüne Göre Betimsel İstatistikleri
Meslek Türü Değişken Ortalama Std. Sapma Minimum Maksimum
Mavi Yaka Eğitim Yılı 8.36 1.16 6.38 10.93
Yıllık Gelir (USD) 5374.14 2004.33 1656.00 8895.00
Kadın Oranı (%) 18.97 26.15 0.00 90.67
Beyaz Yaka Eğitim Yılı 11.02 0.92 9.17 12.79
Yıllık Gelir (USD) 5052.30 1944.32 2448.00 8780.00
Kadın Oranı (%) 52.83 33.11 3.16 97.51
Profesyonel Eğitim Yılı 14.08 1.39 11.09 15.97
Yıllık Gelir (USD) 10559.45 5422.82 4614.00 25879.00
Kadın Oranı (%) 25.51 28.37 0.58 96.12

Tablo 1 incelendiğinde meslek türleri arasında belirgin farklılıklar dikkat çekmektedir. Profesyonel meslek grubunun ortalama eğitim yılı en yüksek düzeyde seyrederken gelir ortalaması da diğer grupları önemli ölçüde aşmaktadır. Mavi yaka grubunda ise her iki değişken de belirgin biçimde düşük düzeyde kalmaktadır. Kadın oranı açısından en yüksek değer beyaz yaka grubunda gözlemlenmektedir.

2.4 Bağımsız Değişkenlerin Meslek Türlerine Göre Dağılımı

renk_paleti <- c("Mavi Yaka"   = "#4cc9f0",
                 "Beyaz Yaka"  = "#f8961e",
                 "Profesyonel" = "#f72585")

veri %>%
  select(meslek_turu, egitim, gelir, kadin_orani) %>%
  pivot_longer(cols = -meslek_turu,
               names_to  = "degisken",
               values_to = "deger") %>%
  mutate(degisken = case_when(
    degisken == "egitim"      ~ "Eğitim Yılı",
    degisken == "gelir"       ~ "Yıllık Gelir (USD)",
    degisken == "kadin_orani" ~ "Kadın Oranı (%)"
  )) %>%
  ggplot(aes(x = meslek_turu, y = deger, fill = meslek_turu)) +
  geom_violin(alpha = 0.6, trim = FALSE, color = NA) +
  geom_boxplot(width = 0.18, outlier.shape = 21,
               outlier.fill = "white", outlier.size = 2,
               color = "#2C3E50", fill = "white", alpha = 0.7) +
  facet_wrap(~ degisken, scales = "free_y", nrow = 1) +
  scale_fill_manual(values = renk_paleti) +
  labs(
    title    = "Şekil 3. Bağımsız Değişkenlerin Meslek Türlerine Göre Dağılımı",
    x        = NULL,
    y        = "Değer",
    fill     = "Meslek Türü"
  ) +
  theme_minimal(base_size = 13) +
  theme(
    plot.title       = element_text(face = "bold", hjust = 0.5, size = 13),
    strip.text       = element_text(face = "bold", size = 12),
    legend.position  = "bottom",
    panel.grid.minor = element_blank(),
    axis.text.x      = element_blank()
  )
Şekil 3. Bağımsız Değişkenlerin Meslek Türlerine Göre Dağılımı (Violin + Boxplot)

Şekil 3. Bağımsız Değişkenlerin Meslek Türlerine Göre Dağılımı (Violin + Boxplot)

Şekil 3, üç bağımsız değişkenin meslek türlerine göre dağılımını violin ve kutu grafiği kombinasyonuyla sunmaktadır. Profesyonel meslek grubunun eğitim ve gelir dağılımları belirgin biçimde diğer gruplardan ayrışmıştır. Bu görsel, gruplar arası farklılaşmanın bağımsız değişkenlere yansıdığını ve MLR modelinin bu ayrışmayı yakalayabileceğine dair ilk kanıtı sunmaktadır.

2.4.1 Meslek Türlerinin Frekans ve Yüzde Dağılımı

frekans <- veri %>%
  count(meslek_turu, name = "n") %>%
  mutate(Yüzde = paste0(round(n / sum(n) * 100, 1), "%")) %>%
  rename(`Meslek Türü` = meslek_turu, `Frekans (n)` = n)

frekans %>%
  kbl(caption = "Tablo 2. Bağımlı Değişken: Meslek Türü Frekans Dağılımı",
      align = c("l", "r", "r")) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover"),
    full_width = FALSE, position = "center", font_size = 13
  ) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#2C3E50") %>%
  row_spec(nrow(frekans), bold = TRUE)
Tablo 2. Bağımlı Değişken: Meslek Türü Frekans Dağılımı
Meslek Türü Frekans (n) Yüzde
Mavi Yaka 44 44.9%
Beyaz Yaka 23 23.5%
Profesyonel 31 31.6%

Tablo 2 incelendiğinde bağımlı değişkenin kategorileri arasında belirgin bir dengesizlik bulunduğu görülmektedir. Mavi yaka grubu örneklemin yaklaşık yarısını (%44.9) oluştururken, beyaz yaka grubu en az temsil edilen kategori konumundadır (%23.5). Bu dengesizlik, MLR modelinin özellikle beyaz yaka kategorisine ilişkin kestirimlerinde standart hataların görece büyümesine ve sınıflama başarısının bu kategori için düşmesine yol açabilir; bu olasılık ilerleyen bölümlerde karmaşıklık matrisi üzerinden değerlendirilecektir.

2.5 Varsayım Kontrolleri

MLR modelinin kurulmasından önce, kuramsal bölümde sıralanan temel varsayımlardan uygulanabilir olan ikisi — çoklu bağlantı (VIF) ve örneklem yeterliliği — sınanmıştır.

library(car)

vif_model   <- lm(as.numeric(meslek_turu) ~ egitim + gelir + kadin_orani,
                  data = veri)
vif_deger   <- vif(vif_model)

p_sayisi    <- 3
min_gerekli <- 10 * p_sayisi
kategori_n  <- table(veri$meslek_turu)

varsayim_tablo <- data.frame(
  Varsayım = c("VIF (Eğitim Yılı)", "VIF (Yıllık Gelir)", "VIF (Kadın Oranı)",
               "n (Mavi Yaka)", "n (Beyaz Yaka)", "n (Profesyonel)"),
  Değer    = c(round(vif_deger, 2),
               as.integer(kategori_n["Mavi Yaka"]),
               as.integer(kategori_n["Beyaz Yaka"]),
               as.integer(kategori_n["Profesyonel"])),
  Eşik     = c("< 10", "< 10", "< 10",
               paste("≥", min_gerekli), paste("≥", min_gerekli),
               paste("≥", min_gerekli)),
  Durum    = c(ifelse(vif_deger < 10, "Karşılanıyor", "Karşılanmıyor"),
               ifelse(kategori_n >= min_gerekli, "Karşılanıyor", "Karşılanmıyor"))
)

varsayim_tablo %>%
  kbl(caption = "Tablo 3. MLR Varsayım Kontrolleri",
      align = c("l", "r", "l", "c")) %>%
  kable_styling(bootstrap_options = c("striped", "hover"),
                full_width = FALSE, position = "center", font_size = 13) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#2C3E50") %>%
  column_spec(1, bold = TRUE)
Tablo 3. MLR Varsayım Kontrolleri
Varsayım Değer Eşik Durum
egitim VIF (Eğitim Yılı) 1.84 < 10 Karşılanıyor
gelir VIF (Yıllık Gelir) 2.29 < 10 Karşılanıyor
kadin_orani VIF (Kadın Oranı) 1.54 < 10 Karşılanıyor
Mavi Yaka n (Mavi Yaka) 44.00 ≥ 30 Karşılanıyor
Beyaz Yaka n (Beyaz Yaka) 23.00 ≥ 30 Karşılanmıyor
Profesyonel n (Profesyonel) 31.00 ≥ 30 Karşılanıyor

Sonuçlara göre üç bağımsız değişkene ilişkin VIF değerlerinin tümü 10 eşiğinin belirgin biçimde altında kalmakta, dolayısıyla çoklu bağlantı sorunu bulunmamaktadır. Örneklem yeterliliği açısından her bağımsız değişken başına önerilen asgari 10 gözlem kuralı (kategori başına ≥ 30) mavi yaka (n = 44) ve profesyonel (n = 31) grupları için sağlanmakta; beyaz yaka grubunda (n = 23) ise sınırlı düzeyde eksiklik bulunmaktadır. Bu sınır durum, ilerleyen tablolarda bu kategoriye ait güven aralıklarının görece geniş olmasının olası açıklayıcılarından biri olarak not edilmiştir. Bağımsız gözlem ve nominal ölçek varsayımları ise veri setinin yapısı gereği karşılanmaktadır.

2.6 Multinomial Lojistik Regresyon Modeli

2.6.1 Model Kurulumu

nnet::multinom() fonksiyonu ile multinomial lojistik regresyon modeli kurmak, referans kategoriyi belirlemek ve model çıktısını elde etmek amacıyla aşağıdaki işlemler gerçekleştirilmiştir. Mavi Yaka referans kategori olarak belirlenmiştir.

Aşağıdaki summary() çıktısı, her iki logit denklemi için kestirilen katsayıları, standart hataları ve artık sapma değerini ham biçimde sunmaktadır. Bu çıktı doğrudan yoruma uygun olmadığından, katsayılar sonraki bölümde odds oranlarına dönüştürülerek %95 güven aralıkları ve Wald p-değerleriyle birlikte akademik biçimde raporlanmıştır.

# Referans kategorinin belirlenmesi
veri$meslek_turu <- relevel(veri$meslek_turu, ref = "Mavi Yaka")

# Tam model
model_tam  <- multinom(meslek_turu ~ egitim + gelir + kadin_orani,
                       data = veri, trace = FALSE)

# Boş model (genel model anlamlılığı için)
model_bos  <- multinom(meslek_turu ~ 1,
                       data = veri, trace = FALSE)

summary(model_tam)

2.6.2 Genel Model Anlamlılığı: Olabilirlik Oranı Testi

Tam modelin boş modele (yalnızca sabit terim) kıyasla istatistiksel olarak anlamlı bir iyileşme sağlayıp sağlamadığını belirlemek amacıyla Olabilirlik Oranı Testi (LRT) uygulanmıştır.

# Genel LRT (tam vs. boş)
G2      <- -2 * (as.numeric(logLik(model_bos)) - as.numeric(logLik(model_tam)))
df_fark <- attr(logLik(model_tam), "df") - attr(logLik(model_bos), "df")
p_genel <- pchisq(G2, df_fark, lower.tail = FALSE)

# Değişken bazlı LRT (birer birer çıkarma)
m_no_egitim <- multinom(meslek_turu ~ gelir + kadin_orani, data = veri, trace = FALSE)
m_no_gelir  <- multinom(meslek_turu ~ egitim + kadin_orani, data = veri, trace = FALSE)
m_no_kadin  <- multinom(meslek_turu ~ egitim + gelir, data = veri, trace = FALSE)

lrt_hesapla <- function(model_ind, model_tam) {
  G2 <- -2 * (as.numeric(logLik(model_ind)) - as.numeric(logLik(model_tam)))
  df <- attr(logLik(model_tam), "df") - attr(logLik(model_ind), "df")
  p  <- pchisq(G2, df, lower.tail = FALSE)
  c(G2 = round(G2, 3), df = df, p = round(p, 4))
}

lrt_tablo <- rbind(
  c(Değişken = "Genel Model",   lrt_hesapla(model_bos,      model_tam)),
  c(Değişken = "Eğitim Yılı",  lrt_hesapla(m_no_egitim,    model_tam)),
  c(Değişken = "Yıllık Gelir", lrt_hesapla(m_no_gelir,     model_tam)),
  c(Değişken = "Kadın Oranı",  lrt_hesapla(m_no_kadin,     model_tam))
) %>%
  as.data.frame() %>%
  rename(`χ²` = G2, `sd` = df, `p` = p)

lrt_tablo %>%
  kbl(caption = "Tablo 4. Değişken Bazlı Olabilirlik Oranı Testi Sonuçları",
      align = c("l", "r", "r", "r")) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"),
    full_width = FALSE, position = "center", font_size = 13
  ) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#2C3E50") %>%
  row_spec(1, bold = TRUE, background = "#EBF5FB")
Tablo 4. Değişken Bazlı Olabilirlik Oranı Testi Sonuçları
Değişken χ² sd p
Genel Model 160.316 6 0
Eğitim Yılı 74.627 2 0
Yıllık Gelir 1.388 2 0.4997
Kadın Oranı 1.697 2 0.428

Tablo 4’teki sonuçlar, tam modelin boş modele kıyasla veriyi istatistiksel olarak anlamlı biçimde daha iyi açıkladığını ortaya koymaktadır (χ² = 160.32, sd = 6, p < .001). Değişken bazlı LRT sonuçları incelendiğinde modele anlamlı katkı sağlayan tek değişkenin eğitim yılı olduğu anlaşılmaktadır (χ² = 74.63, sd = 2, p < .001). Buna karşın yıllık gelir (χ² = 1.39, p = .500) ve kadın oranı (χ² = 1.70, p = .428) değişkenleri modele anlamlı katkı sağlamamaktadır. Bu bulgular, meslek türü ayrışmasında eğitim düzeyinin başat belirleyici olduğunu göstermektedir.

2.6.3 Model Katsayıları, Odds Oranları ve %95 Güven Aralıkları

Her bağımsız değişkenin her bir kategori karşılaştırması üzerindeki etkisini log-odds ve odds oranı düzeyinde raporlamak, Wald testi aracılığıyla istatistiksel anlamlılığı değerlendirmek amacıyla katsayı tablosu oluşturulmuştur.

katsayilar <- coef(model_tam)
std_hatalar <- summary(model_tam)$standard.errors

# z skoru ve p değerleri
z_skorlari <- katsayilar / std_hatalar
p_degerleri <- (1 - pnorm(abs(z_skorlari), 0, 1)) * 2

# OR ve %95 GA
or       <- exp(katsayilar)
ci_alt   <- exp(katsayilar - 1.96 * std_hatalar)
ci_ust   <- exp(katsayilar + 1.96 * std_hatalar)

# Tablo oluşturma
satirlar <- list()
for (k in rownames(katsayilar)) {
  for (j in colnames(katsayilar)) {
    if (j == "(Intercept)") next
    satirlar[[length(satirlar) + 1]] <- data.frame(
      Karşılaştırma   = k,
      Değişken        = j,
      β               = round(katsayilar[k, j], 3),
      `OR`            = round(or[k, j], 3),
      `%95 GA Alt`    = round(ci_alt[k, j], 3),
      `%95 GA Üst`    = round(ci_ust[k, j], 3),
      `p`             = round(p_degerleri[k, j], 4),
      check.names = FALSE
    )
  }
}

kat_tablo <- bind_rows(satirlar) %>%
  mutate(
    Değişken = case_when(
      Değişken == "egitim"      ~ "Eğitim Yılı",
      Değişken == "gelir"       ~ "Yıllık Gelir",
      Değişken == "kadin_orani" ~ "Kadın Oranı"
    ),
    `p` = ifelse(`p` < 0.001, "< .001", as.character(`p`))
  )

kat_tablo %>%
  kbl(caption = "Tablo 5. MLR Katsayıları, Odds Oranları ve %95 Güven Aralıkları (Referans: Mavi Yaka)",
      align = c("l","l","r","r","r","r","r")) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"),
    full_width = FALSE, position = "center", font_size = 13
  ) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#2C3E50") %>%
  column_spec(4, bold = TRUE) %>%
  column_spec(7, italic = TRUE) %>%
  collapse_rows(columns = 1, valign = "middle") %>%
  pack_rows("Beyaz Yaka (vs. Mavi Yaka)", 1, 3) %>%
  pack_rows("Profesyonel (vs. Mavi Yaka)", 4, 6)
Tablo 5. MLR Katsayıları, Odds Oranları ve %95 Güven Aralıkları (Referans: Mavi Yaka)
Karşılaştırma Değişken β OR %95 GA Alt %95 GA Üst p
Beyaz Yaka (vs. Mavi Yaka)
Beyaz Yaka Eğitim Yılı 2.248 9.472 6.079 14.759 < .001
Yıllık Gelir 0.000 1.000 0.999 1.000 0.4581
Kadın Oranı 0.027 1.028 0.984 1.073 0.219
Profesyonel (vs. Mavi Yaka)
Profesyonel Eğitim Yılı 4.381 79.889 40.156 158.934 < .001
Yıllık Gelir 0.000 1.000 0.999 1.001 0.8728
Kadın Oranı 0.013 1.014 0.949 1.082 0.6879

Tablo 5, eğitim yılının her iki karşılaştırmada da istatistiksel olarak anlamlı bir yordayıcı olduğunu ortaya koymaktadır. Eğitim yılındaki bir birimlik artış, beyaz yaka grubunda yer alma odds’unu mavi yakaya kıyasla 9.47 katına (%95 GA [6.08, 14.76]; p < .001), profesyonel grupta yer alma odds’unu ise 79.89 katına (%95 GA [40.16, 158.93]; p < .001) çıkarmaktadır. Profesyonel grup için gözlenen etki büyüklüğünün oldukça yüksek olması, eğitim yılı ile profesyonel meslek üyeliği arasındaki güçlü bağıntıyı yansıtmaktadır. Yıllık gelir (p = .458; p = .873) ve kadın oranı (p = .219; p = .688) ise hiçbir karşılaştırmada anlamlı bir etki göstermemiş; güven aralıklarının 1 değerini kapsaması bu bulguyu doğrulamaktadır.

2.6.4 Model Uyum Metrikleri

Modelin genel kalitesini ve açıklama gücünü değerlendirmek amacıyla log-olabilirlik, AIC, BIC ve McFadden sözde R² değerleri raporlanmıştır.

ll_tam  <- as.numeric(logLik(model_tam))
ll_bos  <- as.numeric(logLik(model_bos))
n       <- nrow(veri)
p_param <- attr(logLik(model_tam), "df")

mcfadden <- round(1 - (ll_tam / ll_bos), 4)
aic_val  <- round(AIC(model_tam), 2)
bic_val  <- round(BIC(model_tam), 2)

uyum_tablo <- data.frame(
  Metrik  = c("-2 Log L (Tam Model)", "-2 Log L (Boş Model)",
              "McFadden R²", "AIC", "BIC"),
  Değer   = c(round(-2 * ll_tam, 2), round(-2 * ll_bos, 2),
              mcfadden, aic_val, bic_val),
  Yorum   = c("Düşük → İyi uyum", "Karşılaştırma referansı",
              "> 0.40 → Mükemmel", "Düşük → Daha iyi model",
              "Düşük → Daha tutumlu model")
)

uyum_tablo %>%
  kbl(caption = "Tablo 6. Multinomial Lojistik Regresyon Model Uyum Metrikleri",
      align = c("l", "r", "l")) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover"),
    full_width = FALSE, position = "center", font_size = 13
  ) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#2C3E50") %>%
  row_spec(3, bold = TRUE, background = "#EBF5FB")
Tablo 6. Multinomial Lojistik Regresyon Model Uyum Metrikleri
Metrik Değer Yorum
-2 Log L (Tam Model) 48.1900 Düşük → İyi uyum
-2 Log L (Boş Model) 208.5000 Karşılaştırma referansı
McFadden R² 0.7689 > 0.40 → Mükemmel
AIC 64.1900 Düşük → Daha iyi model
BIC 84.8700 Düşük → Daha tutumlu model

Tablo 6 incelendiğinde modelin güçlü bir açıklama gücüne sahip olduğu görülmektedir. McFadden R² değeri (0.77), genel kabul gören eşiklere göre mükemmel uyum aralığında yer almaktadır (> 0.40). -2 Log L değerinin boş modele (208.50) kıyasla tam modelde 48.19’a düşmesi, eklenen yordayıcıların veriyi açıklama gücünü belirgin biçimde artırdığına işaret etmektedir. AIC (64.19) ve BIC (84.87) değerleri de modelin karmaşıklığı cezalandırıldıktan sonra dahi yüksek açıklayıcılığını korumaktadır. Ancak bu denli yüksek bir McFadden değeri, tek bir yordayıcının (eğitim yılı) grupları neredeyse bütünüyle ayırt etmesinden kaynaklanmaktadır; bu durum Tablo 4 LRT sonuçlarıyla tutarlıdır.

2.6.5 Sınıflama Performansı (Karmaşıklık Matrisi)

tahmin_sinif <- predict(model_tam, type = "class")
gercek       <- veri$meslek_turu

conf_mat <- table(Tahmin = tahmin_sinif, Gerçek = gercek)
dogru_oran <- round(sum(diag(conf_mat)) / sum(conf_mat) * 100, 1)

conf_mat %>%
  as.data.frame.matrix() %>%
  rownames_to_column("Tahmin \\ Gerçek") %>%
  kbl(caption = paste0("Tablo 7. Karmaşıklık Matrisi (Doğru Sınıflama Oranı: %", dogru_oran, ")"),
      align = c("l", "r", "r", "r")) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover"),
    full_width = FALSE, position = "center", font_size = 13
  ) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#2C3E50") %>%
  column_spec(1, bold = TRUE)
Tablo 7. Karmaşıklık Matrisi (Doğru Sınıflama Oranı: %89.8)
Tahmin  Gerçek Mavi Yaka Beyaz Yaka Profesyonel
Mavi Yaka 42 3 0
Beyaz Yaka 2 18 3
Profesyonel 0 2 28

Sınıflama tablosu, modelin gözlemlerin %89.8’ini doğru sınıflandırdığını ortaya koymaktadır. Genel doğruluk oranının yanı sıra modelin her kategorideki performansını ayrıntılı değerlendirmek amacıyla duyarlılık, kesinlik, özgüllük ve F1 skoru hesaplanmıştır.

metrik_hesapla <- function(cm, sinif) {
  TP <- cm[sinif, sinif]
  FN <- sum(cm[, sinif]) - TP
  FP <- sum(cm[sinif, ]) - TP
  TN <- sum(cm) - TP - FN - FP
  data.frame(
    Kategori                   = sinif,
    `Duyarlılık (Sensitivity)` = round(TP / (TP + FN), 3),
    `Kesinlik (Precision)`     = round(TP / (TP + FP), 3),
    `Özgüllük (Specificity)`   = round(TN / (TN + FP), 3),
    `F1 Skoru`                 = round(2 * TP / (2 * TP + FP + FN), 3),
    check.names = FALSE
  )
}

performans <- bind_rows(
  metrik_hesapla(conf_mat, "Mavi Yaka"),
  metrik_hesapla(conf_mat, "Beyaz Yaka"),
  metrik_hesapla(conf_mat, "Profesyonel")
)

performans %>%
  kbl(caption = "Tablo 8. Kategoriye Özgü Sınıflama Performansı Metrikleri",
      align = c("l", "r", "r", "r", "r")) %>%
  kable_styling(bootstrap_options = c("striped", "hover"),
                full_width = FALSE, position = "center", font_size = 13) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#2C3E50") %>%
  column_spec(1, bold = TRUE)
Tablo 8. Kategoriye Özgü Sınıflama Performansı Metrikleri
Kategori Duyarlılık (Sensitivity) Kesinlik (Precision) Özgüllük (Specificity) F1 Skoru
Mavi Yaka 0.955 0.933 0.944 0.944
Beyaz Yaka 0.783 0.783 0.933 0.783
Profesyonel 0.903 0.933 0.970 0.918

Tablo 8 incelendiğinde duyarlılık (sensitivity) değerlerinin mavi yaka (0.95) ve profesyonel (0.90) gruplarında yüksek; beyaz yaka grubunda ise görece düşük (0.78) olduğu dikkat çekmektedir. Kesinlik (precision) değerleri sırasıyla mavi yaka için 0.93, beyaz yaka için 0.78 ve profesyonel için 0.93 olarak hesaplanmıştır. Özgüllük (specificity) tüm kategorilerde 0.90’ın üzerinde seyretmekte, F1 skorları ise mavi yaka (0.94) ve profesyonel (0.92) için yüksek, beyaz yaka (0.78) için görece düşük kalmaktadır. Bu bulgular, beyaz yaka grubunun hem yanlış-pozitif hem yanlış-negatif açıdan modelin en zorlandığı kategori olduğunu göstermekte; Tablo 2’de işaret edilen kategori dengesizliğinin pratik bir yansıması olarak yorumlanabilir.

2.7 Yordanan Olasılıklar ve Görselleştirme

2.7.1 Eğitim Yılına Göre Yordanan Meslek Türü Olasılıkları

# Geliri düşük / orta / yüksek olarak gruplandır
veri <- veri %>%
  mutate(gelir_grup = cut(gelir,
                          breaks = quantile(gelir, probs = c(0, 1/3, 2/3, 1)),
                          labels = c("Düşük Gelir", "Orta Gelir", "Yüksek Gelir"),
                          include.lowest = TRUE))

# Grid oluşturma
grid_veri <- expand.grid(
  egitim      = seq(min(veri$egitim), max(veri$egitim), length.out = 80),
  gelir       = quantile(veri$gelir, probs = c(0.25, 0.50, 0.75)),
  kadin_orani = mean(veri$kadin_orani)
) %>%
  mutate(gelir_grup = case_when(
    gelir == quantile(veri$gelir, 0.25) ~ "Düşük Gelir",
    gelir == quantile(veri$gelir, 0.50) ~ "Orta Gelir",
    gelir == quantile(veri$gelir, 0.75) ~ "Yüksek Gelir"
  ) %>% factor(levels = c("Düşük Gelir", "Orta Gelir", "Yüksek Gelir")))

# Olasılık tahmini
grid_olasilik <- predict(model_tam, newdata = grid_veri, type = "probs") %>%
  as.data.frame() %>%
  bind_cols(grid_veri) %>%
  pivot_longer(cols = c("Mavi Yaka", "Beyaz Yaka", "Profesyonel"),
               names_to = "meslek_turu", values_to = "olasilik") %>%
  mutate(meslek_turu = factor(meslek_turu,
                              levels = c("Mavi Yaka", "Beyaz Yaka", "Profesyonel")))

renk_gelir <- c("Düşük Gelir"  = "#4cc9f0",
                "Orta Gelir"   = "#f8961e",
                "Yüksek Gelir" = "#f72585")

ggplot(grid_olasilik, aes(x = egitim, y = olasilik,
                           color = gelir_grup, linetype = gelir_grup)) +
  geom_line(linewidth = 1.1) +
  facet_wrap(~ meslek_turu) +
  scale_color_manual(values = renk_gelir) +
  scale_y_continuous(labels = percent_format(accuracy = 1)) +
  labs(
    title    = "Şekil 4. Eğitim Yılına Göre Yordanan Meslek Türü Olasılıkları",
    subtitle = "Kadın oranı ortalamada sabit tutulmuş; gelir düzeyi 25., 50. ve 75. yüzdelik dilimlerinde gösterilmiştir",
    x        = "Ortalama Eğitim Yılı",
    y        = "Yordanan Olasılık",
    color    = "Gelir Düzeyi",
    linetype = "Gelir Düzeyi"
  ) +
  theme_minimal(base_size = 12) +
  theme(
    plot.title      = element_text(face = "bold", hjust = 0.5, size = 13),
    plot.subtitle   = element_text(hjust = 0.5, color = "gray40", size = 10),
    strip.text      = element_text(face = "bold", size = 11),
    legend.position = "bottom",
    panel.grid.minor = element_blank()
  )
Şekil 4. Eğitim Yılına Göre Yordanan Meslek Türü Olasılıkları (Gelir Düzeyine Göre)

Şekil 4. Eğitim Yılına Göre Yordanan Meslek Türü Olasılıkları (Gelir Düzeyine Göre)

Şekil 4, eğitim yılının meslek türü olasılıkları üzerindeki başat etkisini görselleştirmektedir. Eğitim yılı yaklaşık 8 civarındayken mavi yaka olasılığı 1’e yakın bir değer alırken, eğitim yılı 14’e ulaştığında profesyonel olma olasılığı %90’ın üzerine çıkmaktadır. Beyaz yaka grubuna ait olasılık eğrileri eğitim yılının orta bandında (10–12 yıl) tepe değerine ulaşıp sonrasında düşmekte; bu durum beyaz yakanın iki uç grup arasında bir geçiş bölgesinde konumlandığını yansıtmaktadır. Gelir düzeyleri arasındaki farkın (25., 50. ve 75. yüzdelik dilimler) olasılık eğrilerinde görece sınırlı bir kayma yaratması, Tablo 5’te gelirin istatistiksel olarak anlamlı bulunmaması ile tutarlıdır; gözlenen ufak farklar model belirsizliğine atfedilmeli, güçlü bir gelir etkisi olarak yorumlanmamalıdır.

3 Günden Kalanlar

Çok değişkenli istatistik öğrenmek benim için bir yandan çok zevkli bir yandan da biraz ürkütücü olmaya başladı. Çünkü konuları öğrendikçe, kafamdaki pek çok soruya “işte bu analizle cevap verebilirim” diyorum. Ama ilerledikçe görüyorum ki aynı soruya her seferinde daha iyi, daha farklı cevaplar verilebiliyormuş. Son online derste, çevremdeki bir sohbet esnasında ilk kez duyduğum terimlerle karşılaşmış olsam da, neler yapılabileceğine dair gerçekten ufuk açıcı fikirler edindim. Burada şunu anlıyorum; bu işin sonu yok ve bu durum beni bazen aciz hissettiriyor. “Ne zaman bir şeyler öğrendim diyebileceğim bir noktada olacağım?” diye sormadan edemiyorum. Ne yapsam hep bir şeyler eksik kalacakmış gibi bir his var içimde.

Bu anlamda Multinomial Lojistik Regresyon (MLR) benim için çok güzel bir örnek oldu. Bir eğitim araştırmasına konu olacak değişkenler nadiren “geçti-kaldı” gibi iki kategorili oluyor; çoğu zaman çok daha fazla kategoriyle çalışıyoruz. Bu yönüyle MLR, pek çok araştırma soruma cevap bulmada kullanabileceğim bir analiz. Ancak uygulaması ve yorumlaması tam oturuyor derken, zihnimde yeniden denge bozuluyor. Çok inandığımız Piaget de öğrenme sürecini tam olarak böyle; “denge-dengenin bozulması ve yeni duruma uygun dengenin kurulması” döngüsüyle açıklıyor. Belki de bu yaşadığım karmaşa, gerçekten öğreniyor olduğumun bir işaretidir.Ayrıca Henry L. Roediger, “Aklında Kalsın” isimli kitabında gerçek öğrenmenin zor, bazen acı çekmeyi gerektiren, karmaşık ve zaman alıcı bir süreç olduğunu savunuyor. Zorlanıyorum, henüz öğrenmediğim ve anlamadığım çok şey var ama bir yandan da bir şeyler öğrendiğimi derinden hissediyorum.

Ara sınav, ödevleri neden daha detaylı yapmam gerektiğinin bir kanıtı oldu benim için. Sınavda net hatırladığım her kavramın ödevlerimde detaylıca ele aldığım konular olduğunu fark ettim. Hatırlayamadıklarımı ise ya ödevlerime hiç dahil etmemiştim ya da çok kısa bir ara not olarak geçmiştim. Örneğin baskılayıcı değişken kavramına hiçbir ödevimde temas etmemiştim; sınavda öyle bir durumun varlığını genel olarak hatırlasam da hangi konuyla ilgili olduğunu veya tam olarak ne anlama geldiğini maalesef çıkaramadım.

Son olarak, iyi ki bu dersi iki dönem boyunca almışım. İlk dönem R’ı tanımam için çok kritikti. Belki bir kod ustası olmadım ama R dünyasının genişliğini ve neler yapabileceğimi anladım. Şimdi yapay zeka desteğiyle birlikte, analiz denince en temelinden en karmaşığına aklıma gelen ilk araç R oluyor. İkinci dönem ise kendi başıma öğrenemeyeceğim kadar karmaşık istatistik konularına odaklandık. Bu konuları başka yollarla öğrenmeye çalışmak çok daha maliyetli ve zaman alıcı olabilirdi. Doktora programının yapısını oluşturanlara ve her iki dersteki öğrenmemize yönelik bitmeyen çabanıza çok teşekkür ederim.

Bu arada, ödevlerimde bazen bildiğimden ve o an anladığımdan fazlasının olduğunu da belirtmek isterim. İnternet ve kaynaklara dayalı bu bilgileri, ileride ihtiyacım olduğunda elimde bir özet metni olması amacıyla ekliyorum.