1 Giriş

Bu çalışmada kaynakçada sunulan kaynaklar detaylı bir şekilde incelenerek HLM konusunda ayrıntılı bir ders notu özeti hazırlamak amaçlanmıştır. Not hazırlanırken kaynaklar Notebook LM’e yüklenmiş ve aklıma gelen sorular sorularak alınan cevaplardan dağınık bir ders notu çıkmıştır. Daha sonra ders notu okunarak mantıksal bir bütünlük olacak şekilde düzenlenmeye çalışılmıştır. Belgenin ayarları ve kod blokları için ise Claude Opus 4.6’dan destek alınmıştır.

2 Neden Hiyerarşik Modeller?

Sosyal bilimlerde ve eğitim araştırmalarında karşılaşılan verilerin önemli bir kısmı yuvalanmış (nested) bir yapıya sahiptir. Öğrenciler sınıflarda, sınıflar okullarda, okullar illerde; hastalar kliniklerde; çalışanlar firmalarda; tekrarlı ölçümler bireylerin içinde yuvalanır. Bu yapının en kritik istatistiksel sonucu tek bir cümlede özetlenebilir: aynı kümeye ait gözlemler, farklı kümelerdeki gözlemlere kıyasla birbirine daha çok benzer.

set.seed(12)
okullar <- c("Okul A", "Okul B", "Okul C")
ogrenciler <- expand.grid(ogrenci = 1:4, okul = okullar)
ogrenciler$x <- as.numeric(factor(ogrenciler$okul)) * 3 +
                (ogrenciler$ogrenci - 2.5) * 0.6
ogrenciler$y <- 1

okul_df <- data.frame(okul = okullar,
                      x = seq_along(okullar) * 3,
                      y = 2.6)
toplum_df <- data.frame(x = mean(okul_df$x), y = 4.2)

ggplot() +
  # çizgiler: okul -> toplum
  geom_segment(data = okul_df,
               aes(x = x, y = y + 0.25, xend = toplum_df$x[1],
                   yend = toplum_df$y[1] - 0.25),
               color = "#6a7490", linewidth = 0.6) +
  # çizgiler: öğrenci -> okul
  geom_segment(data = ogrenciler,
               aes(x = x, y = y + 0.25,
                   xend = as.numeric(factor(okul)) * 3,
                   yend = 2.6 - 0.25),
               color = "#6a7490", linewidth = 0.6) +
  # Noktalar
  geom_point(data = ogrenciler, aes(x = x, y = y, color = okul),
             size = 9) +
  geom_point(data = okul_df, aes(x = x, y = y),
             size = 17, color = renk_vurgu, shape = 15) +
  geom_point(data = toplum_df, aes(x = x, y = y),
             size = 23, color = renk_mor, shape = 18) +
  # Etiketler
  geom_text(data = ogrenciler, aes(x = x, y = y, label = ogrenci),
            color = "#1a1e2e", fontface = "bold", size = 3.8) +
  geom_text(data = okul_df, aes(x = x, y = y, label = okul),
            color = "#1a1e2e", fontface = "bold", size = 4.2) +
  geom_text(data = toplum_df, aes(x = x, y = y, label = "Toplum"),
            color = "#1a1e2e", fontface = "bold", size = 4.2) +
  # Düzey etiketleri (sol taraf)
  annotate("text", x = 0.5, y = 1,   label = "Düzey 1\n(öğrenci)",
           color = renk_ana, fontface = "bold", size = 4.3, hjust = 0) +
  annotate("text", x = 0.5, y = 2.6, label = "Düzey 2\n(okul)",
           color = renk_vurgu, fontface = "bold", size = 4.3, hjust = 0) +
  annotate("text", x = 0.5, y = 4.2, label = "Popülasyon",
           color = renk_mor, fontface = "bold", size = 4.3, hjust = 0) +
  scale_color_manual(values = renk_grup[1:3], guide = "none") +
  xlim(0, 11) + ylim(0.5, 4.8) +
  theme_void() +
  theme(plot.background = element_rect(fill = "#1a1e2e", color = NA),
        plot.title = element_text(color = "#9ecbe6", face = "bold",
                                  hjust = 0.5, size = 15,
                                  margin = margin(b = 12)),
        plot.caption = element_text(color = "#9ecbdc", size = 10,
                                    face = "italic", hjust = 0)) +
  labs(title = "Yuvalanmış (hiyerarşik) veri yapısı",
       caption = "Aynı okulun öğrencileri paylaşılan bir çevre nedeniyle birbirine benzer.")
Şekil 1. İki düzeyli yuvalanmış yapı — öğrenciler okulların içinde yuvalanır. Aynı okuldaki öğrenciler paylaşılan bir çevre nedeniyle birbirine benzer; bu benzerlik bağımsızlık varsayımını ihlal eder.

Şekil 1. İki düzeyli yuvalanmış yapı — öğrenciler okulların içinde yuvalanır. Aynı okuldaki öğrenciler paylaşılan bir çevre nedeniyle birbirine benzer; bu benzerlik bağımsızlık varsayımını ihlal eder.

Standart Sıradan En Küçük Kareler (OLS) regresyonunun en temel varsayımlarından biri olan hataların bağımsızlığı, yuvalanmış verilerde doğrudan ihlal edilir. Bu ihlal yalnızca “teknik bir detay” değildir; parametre kestiriminin geçerliliğini kökünden sarsan bir sorundur.

2.1 Kümelenmenin OLS Üzerindeki Bozucu Etkileri

Yuvalanmış veriye standart OLS uygulandığında üç temel sorun ortaya çıkar:

  1. Standart hatalarda aşağı yönlü yanlılık. OLS, gözlemlerin bağımsız olduğunu varsaydığı için kümelenmeyi yok sayar. Bu, regresyon katsayılarının standart hatalarının olması gerekenden daha küçük hesaplanmasına yol açar.

  2. Tip I hata enflasyonu. Standart hataların küçümsenmesi \(t\) ve \(z\) istatistiklerinin yapay olarak büyümesine; dolayısıyla aslında anlamsız olan etkilerin “anlamlı” gözükmesine neden olur. Yanlış pozitif bulgu oranı artar.

  3. Bilgi kaybı ve yanlılık. Sorunu “çözmek” için yapılan iki klasik hamle de başka yanlılıklar doğurur:

Toplama (aggregation): Grup ortalamalarıyla çalışmak — grup içi varyansı tamamen atar; serbestlik derecesi çöker, güç düşer ve ekolojik yanılgıya (grup düzeyindeki ilişkiyi bireye yorumlamak) yol açar.

Alt düzeye yayma (disaggregation): Grup özelliklerini her bireye kopyalamak — bağımsızlık varsayımını daha da ağır ihlal eder ve atomistik yanılgıya (bireysel bulguları gruba yorumlamak) kapı açar.

2.2 Dizayn Etkisi (Design Effect) ve ICC Eşiği

Kümelenmenin standart hatalar üzerindeki bozucu etkisinin büyüklüğü Dizayn Etkisi (Design Effect — DEFF) ile nicelenir:

DİZAYN ETKİSİ \[ \mathrm{DEFF} = 1 + (\bar{n} - 1)\,\rho \]

Burada \(\bar{n}\) küme başına ortalama gözlem sayısı, \(\rho\) ise Sınıfiçi Korelasyon Katsayısı (ICC)’dır. DEFF değeri \(1\)’den ne kadar büyükse, OLS’nin hesapladığı standart hatalar gerçek değerinden o kadar sapmalıdır.

Bu formülün can alıcı sonucu şudur: Literatürde sık sık dile getirilen “ICC < .05 ise HLM’ye gerek yok” tarzı eşik değerler yanıltıcıdır. Çünkü DEFF yalnızca ICC’ye değil, küme büyüklüğüne de bağlıdır.

df_deff <- expand.grid(rho = seq(0.01, 0.3, length.out = 60),
                       n   = seq(5, 500, length.out = 60))
df_deff$deff <- 1 + (df_deff$n - 1) * df_deff$rho

ggplot(df_deff, aes(x = n, y = rho, fill = deff)) +
  geom_raster(interpolate = TRUE) +
  geom_contour(aes(z = deff), color = "#ffffff",
               breaks = c(1.5, 2, 3, 5, 10, 20, 50), linewidth = 0.4,
               alpha = 0.55) +
  scale_fill_gradientn(
    colors = c("#1a2340", "#2e4a7a", "#4dc4ff", "#7ee787",
               "#ffd866", "#ffb347", "#ff7b7b"),
    values = scales::rescale(c(1, 2, 4, 8, 20, 50, 150)),
    name   = "DEFF",
    trans  = "log",
    breaks = c(1, 2, 5, 10, 30, 100)
  ) +
  labs(
    title    = "Dizayn etkisi (DEFF): ICC × küme büyüklüğü",
    subtitle = "DEFF = 1 + (n̄ − 1) · ρ    ·    Beyaz konturlar DEFF düzey eğrileridir",
    x = "Küme başına ortalama gözlem sayısı (n̄)",
    y = expression(paste("ICC (", rho, ")"))
  ) +
  tema_hlm +
  theme(legend.position = "right",
        legend.key.height = unit(1.2, "cm"))
Şekil 2. Dizayn etkisinin ICC ve küme büyüklüğüne göre değişimi. Koyu kırmızı-turuncu alanlar OLS'nin standart hataları ciddi oranda yanlış hesapladığı bölgelere karşılık gelir. ICC = .01 gibi 'küçük' bir değerde bile küme büyüklüğü 200'ü aşınca standart hatalar yarıya düşer — yani güven aralıkları yapay daralır, Tip I hata enflasyonu doğar.

Şekil 2. Dizayn etkisinin ICC ve küme büyüklüğüne göre değişimi. Koyu kırmızı-turuncu alanlar OLS’nin standart hataları ciddi oranda yanlış hesapladığı bölgelere karşılık gelir. ICC = .01 gibi ‘küçük’ bir değerde bile küme büyüklüğü 200’ü aşınca standart hatalar yarıya düşer — yani güven aralıkları yapay daralır, Tip I hata enflasyonu doğar.

Veride kümelenme yapısı varsa, ICC ne kadar küçük olursa olsun çok düzeyli modellemeyi tercih etmek güvenli yoldur. HLM’yi atlamanın tek meşru gerekçesi, verinin yapısal olarak yuvalanmamış olmasıdır.

2.3 HLM İle Sunulan Çözüm

Hiyerarşik Doğrusal Modeller

  • Farklı düzeyleri eşzamanlı olarak modeller; aggregation veya disaggregation hamlelerine gerek kalmaz.
  • Toplam varyansı düzeylere göre ayrıştırır; hangi varyasyonun bireyden, hangisinin gruptan geldiği nicel olarak belirlenir.
  • Grupların yalnızca ortalama seviyesinin değil, değişkenler arası ilişkilerin (eğimlerin) de farklılaşmasına izin verir.
  • Farklı düzeylerdeki yordayıcıları aynı modelde kullanarak çapraz düzey etkileşimlerini test etmeye imkân tanır.
  • Dengesiz verilerle (her grupta eşit olmayan gözlem sayısı) ve kısmi kayıp veriyle başa çıkar.

3 Yuvalanmış Veri Yapısı ve Notasyon

3.1 Düzeyler ve İndeksler

Çok düzeyli bir yapıda birimler bulundukları seviyeye göre adlandırılır:

Terim Düzey Anlamı
Gözlemsel birim Düzey 1 (L1) En alt seviye — öğrenci, hasta, ölçüm zamanı
Deneysel birim Düzey 2 (L2) Kümeleme faktörü — okul, klinik, birey (boylamsal)

İki düzeyli bağlamsal modellerde standart notasyon şudur:

  • \(i\) indeksi → Düzey-1 birimleri (öğrenci)
  • \(j\) indeksi → Düzey-2 birimleri (okul)
  • \(Y_{ij}\)\(j.\) okuldaki \(i.\) öğrencinin puanı
  • \(X_{ij}\)\(j.\) okuldaki \(i.\) öğrencinin bir özelliğine ait puan (Düzey-1 yordayıcı)
  • \(W_j\)\(j.\) okulun bir özelliğine ait puan (Düzey-2 yordayıcı)

3.2 İki Farklı Hiyerarşik Yapı Tipi

Finch, Bolin ve Kelley iki temel yapıyı birbirinden ayırır:

Bağlamsal (Contextual) Modeller. Bireyler gruplar içinde yuvalanmıştır. Düzey 1 = birey, Düzey 2 = grup. Örnek: öğrencilerin okullarda yuvalanması.

Büyüme (Growth) Modelleri. Tekrarlı ölçümler bireyler içinde yuvalanmıştır. Düzey 1 = zaman/ölçüm, Düzey 2 = birey. Boylamsal tasarımlar için kullanılır.

Bağımlı değişken her zaman en alt düzeyde (Düzey 1) bulunmalıdır. Düzey 2’de bir bağımlı değişken tanımlamak analizin doğasını değiştirir ve mikro-makro modelleri gerektirir.

3.3 Üç ve Daha Fazla Düzey

Hiyerarşi daha derin olabilir:

  • Düzey 1: Tekrarlı ölçümler (\(t\) indeksi)
  • Düzey 2: Öğrenciler (\(i\) indeksi)
  • Düzey 3: Okullar (\(j\) indeksi)

Genel prensip aynıdır: her düzey kendi hata terimini ve varyans bileşenini üretir; model her seviyede ayrı bir denklem olarak yazılır ve sonra birleştirilir.


4 Temel Kavramlar

Bu bölüm, ileride sürekli başvurulacak terimlerin yoğun tanımlarını içerir.

ICC (Intraclass Correlation Coefficient). Bağımlı değişkendeki toplam varyansın ne kadarının kümeler arasındaki farktan kaynaklandığını gösteren oran. Eşdeğer yorumu: aynı kümeden rastgele çekilen iki bireyin bağımlı değişken skorları arasındaki beklenen korelasyon. \(\rho = \tau_{00} / (\tau_{00} + \sigma^2)\)

Sabit Etki (Fixed Effect). Popülasyondaki tüm gruplar için ortak olduğu varsayılan, evren ortalamasını temsil eden değişmeyen regresyon katsayısı. Notasyonda \(\gamma\) ile gösterilir.

Rastgele Etki (Random Effect). Kümeler arasında değişkenlik gösterdiği varsayılan, sıfır ortalamalı ve belirli bir varyansa sahip gruba özgü sapma. Notasyonda \(u\) ile gösterilir.

Deviance (−2LL). Modelin verilere uyumsuzluğunun ölçüsü; \(-2 \times \ln(L)\) ile hesaplanır. Küçük değer daha iyi uyum demektir.

Merkezleme (Centering). Bir yordayıcının her değerinden sabit bir ortalamanın (genel ortalama veya grup ortalaması) çıkarılması. Kesişimin yorumlanabilirliğini, çoklu bağlantının azalmasını ve çapraz düzey etkileşimlerin netliğini sağlar.

BLUP (Best Linear Unbiased Predictors). Rastgele etkiler için kullanılan “en iyi doğrusal yansız yordayıcılar”. Bireysel grupların kesişim ve eğim kestirimlerini verir; shrinkage özelliği sayesinde küçük örneklemli gruplarda OLS’nin verdiği gürültülü kestirimlerden kaçınmayı sağlar.

Shrinkage (Küçültme). BLUP kestirimlerinin, grup örneklemi küçüldükçe genel ortalamaya doğru çekilmesi özelliği. Empirical Bayes mantığının doğrudan sonucudur.

Plausible Value (Olası Değer — PV). IRT tabanlı ölçeklendirmelerde (PISA, TIMSS, PIRLS gibi), öğrencinin gizil yetenek dağılımından çekilen çoklu (genellikle 5 veya 10) olası puan. Ölçüm belirsizliğini analize taşır.

Olası Değerler Aralığı (Plausible Values Range). Rastgele bir katsayının (örn. L1 eğiminin) L2 birimlerinin %95’inde hangi aralıkta bulunmasının beklendiğini gösteren tanımlayıcı aralık: \(\hat{\gamma} \pm 1.96 \sqrt{\hat{\tau}}\).

Dizayn Etkisi (DEFF). Kümelenmenin OLS standart hatalarını ne kadar yanlı hesaplattığını gösteren çarpan: \(1 + (\bar{n} - 1)\rho\).


5 Sabit ve Rastgele Etkiler

HLM’de bir parametrenin sabit mi rastgele mi olduğu ayrımı son derece önemlidir.

5.1 Sabit Etki

Bir parametre sabit kabul edildiğinde, o parametrenin tüm kümeler için aynı olduğu varsayılır. Yordayıcı değişkenin bağımlı değişken üzerindeki etkisi, grubun kimliğinden bağımsız evrensel bir büyüklüktür. Sabit etki standart regresyon katsayısına en yakın kavramdır.

5.2 Rastgele Etki

Bir parametre rastgele kabul edildiğinde, bu parametrenin değeri gruptan gruba değişir ve bu değişim rastgeledir. Değerler, ortalaması genel etki (\(\gamma\)) olan bir dağılımdan çekilmiş gibi düşünülür. Rastgele etki doğrudan bir katsayı değil, varyans bileşenidir (ve varyans sıfırdan farklıysa grup farklılaşması vardır).

RASTGELE KESİŞİMİN YAPISI \[ \beta_{0j} = \gamma_{00} + u_{0j}, \qquad u_{0j} \sim \mathcal{N}(0,\;\tau_{00}) \]

Burada \(\gamma_{00}\) sabit etkidir (tüm okullar için ortak kesişim ortalaması); \(u_{0j}\) ise \(j.\) okulun bu ortalamadan ne kadar saptığını gösteren rastgele etkidir. Modelin tahmin ettiği asıl yeni parametre \(\tau_{00}\) — yani \(u_{0j}\)’lerin varyansıdır.

5.3 Üç Havuzlama Yaklaşımı: Pooling Trilemması

Kümelenmiş veriye bakıldığında üç temel yaklaşım vardır, ve HLM bunlar arasındaki en dengeli orta yolu oluşturur.

set.seed(7)
n_grup <- 6
n_ici <- c(30, 25, 20, 8, 5, 4)
genel_int <- 50
genel_eg  <- 2
tau00 <- 25; tau11 <- 0.6; sig <- 4

ver <- do.call(rbind, lapply(seq_len(n_grup), function(j) {
  u0 <- rnorm(1, 0, sqrt(tau00))
  u1 <- rnorm(1, 0, sqrt(tau11))
  x <- runif(n_ici[j], 0, 10)
  y <- (genel_int + u0) + (genel_eg + u1) * x + rnorm(n_ici[j], 0, sig)
  data.frame(grup = factor(j), x = x, y = y)
}))

cp <- coef(lm(y ~ x, data = ver))

np <- ver %>% group_by(grup) %>%
  group_modify(~ as.data.frame(t(coef(lm(y ~ x, data = .x)))))

ver_s <- ver %>% group_by(grup) %>% summarise(n = n(),
                                              xb = mean(x),
                                              yb = mean(y))
agirlik <- sig^2 / (sig^2 + ver_s$n * tau00)
ver_s$int_np <- np$`(Intercept)`
ver_s$eg_np  <- np$x
ver_s$int_pp <- (1 - agirlik) * ver_s$int_np + agirlik * cp[1]
ver_s$eg_pp  <- (1 - agirlik) * ver_s$eg_np  + agirlik * cp[2]

x_grid <- seq(0, 10, length.out = 50)

cizgi_df <- function(ints, egs, tur) {
  do.call(rbind, lapply(seq_along(ints), function(j) {
    data.frame(grup = factor(j), x = x_grid,
               y = ints[j] + egs[j] * x_grid, tur = tur)
  }))
}

np_l <- cizgi_df(ver_s$int_np, ver_s$eg_np, "No pooling")
pp_l <- cizgi_df(ver_s$int_pp, ver_s$eg_pp, "Partial pooling (HLM)")
cp_l <- do.call(rbind, lapply(seq_len(n_grup), function(j) {
  data.frame(grup = factor(j), x = x_grid,
             y = cp[1] + cp[2] * x_grid, tur = "Complete pooling")
}))

ver$tur <- "Complete pooling"
veri_3 <- do.call(rbind, lapply(c("Complete pooling",
                                  "No pooling",
                                  "Partial pooling (HLM)"),
                                function(t) { v <- ver; v$tur <- t; v }))
cizgiler <- rbind(cp_l, np_l, pp_l)
cizgiler$tur <- factor(cizgiler$tur,
                       levels = c("Complete pooling","No pooling",
                                  "Partial pooling (HLM)"))
veri_3$tur <- factor(veri_3$tur, levels = levels(cizgiler$tur))

ggplot() +
  geom_point(data = veri_3, aes(x, y, color = grup),
             alpha = 0.65, size = 1.9) +
  geom_line(data = cizgiler, aes(x, y, color = grup, group = grup),
            linewidth = 1.1) +
  facet_wrap(~ tur) +
  scale_color_manual(values = renk_grup[1:6], name = "Grup") +
  labs(title = "Complete / No / Partial pooling: üç yaklaşımın karşılaştırması",
       x = "X", y = "Y") +
  tema_hlm +
  theme(legend.position = "bottom")
Şekil 3. Üç havuzlama stratejisi. Sol: Complete pooling — gruplar göz ardı edilir, tek çizgi çizilir. Orta: No pooling — her grup kendi OLS'sine sahip olur, hiçbir bilgi paylaşılmaz, örneklemi az olan gruplarda aşırı gürültü üretir. Sağ: Partial pooling (HLM) — her grup kendi çizgisine sahip olur ama grup çizgileri genel eğilime doğru 'çekilir'. Küçük örneklemli gruplarda bu çekilme daha belirgindir.

Şekil 3. Üç havuzlama stratejisi. Sol: Complete pooling — gruplar göz ardı edilir, tek çizgi çizilir. Orta: No pooling — her grup kendi OLS’sine sahip olur, hiçbir bilgi paylaşılmaz, örneklemi az olan gruplarda aşırı gürültü üretir. Sağ: Partial pooling (HLM) — her grup kendi çizgisine sahip olur ama grup çizgileri genel eğilime doğru ‘çekilir’. Küçük örneklemli gruplarda bu çekilme daha belirgindir.

Partial pooling HLM’nin teknik adıdır. Her grubun ilişkisini ayrı modeller ama grup kestirimlerini “genel eğilime doğru” çeker (shrinkage). Bu, özellikle küçük örneklemli gruplarda OLS’nin aşırı gürültülü kestirimlerinden kaçınmanın yolu — ve HLM’nin neden bu kadar güvenilir olduğunun temel gerekçelerinden biridir.

5.4 Hangi Parametre Rastgele Olmalı?

Model kurma sürecinde temel soru: “Bu parametrenin gruptan gruba farklılaşmasına izin vermek için kuramsal gerekçem var mı?”

  • Kesişimi her zaman rastgele tutmak varsayılan başlangıçtır — kümelenme varsa zaten ortalamalar arasında fark var demektir.
  • Eğimi rastgele tutmak ancak (a) kuramsal gerekçe varsa ve (b) yeterli veri noktası varsa önerilir. Gereksiz rastgele eğimler modelin yakınsamamasına (convergence failure) veya singular fit uyarılarına yol açar.

6 Üç Temel Model

6.1 Rastgele Etkiler ANOVA (Boş / Koşulsuz Model)

Fully Unconditional Model veya Intercept-Only Model olarak da bilinir. Hiçbir yordayıcı içermez; amaç toplam varyansı düzeylere ayrıştırmaktır.

6.1.1 Denklemler

Düzey 1 (Öğrenci düzeyi):

\[ Y_{ij} = \beta_{0j} + r_{ij}, \qquad r_{ij} \sim \mathcal{N}(0,\;\sigma^2) \]

Düzey 2 (Okul düzeyi):

\[ \beta_{0j} = \gamma_{00} + u_{0j}, \qquad u_{0j} \sim \mathcal{N}(0,\;\tau_{00}) \]

Birleşik (karma) model:

\[ Y_{ij} = \gamma_{00} + u_{0j} + r_{ij} \]

Standart ANOVA’nın \(Y_{ij} = \mu + \alpha_j + \varepsilon_{ij}\) gösterimi akılda tutulabilir. Temel fark: HLM’de \(u_{0j}\) sabit grup etkileri değil, bir dağılımdan çekilmiş rastgele sapmalar olarak modellenir.

6.1.2 Bu Modelin Sağladığı Bilgiler

  1. Genel ortalama kestirimi \((\gamma_{00})\) ve güven aralığı: \(\gamma_{00} \pm 1.96 \cdot SE(\gamma_{00})\)
  2. Kesişim için olası değerler aralığı (okul ortalamalarının evrende nerede dolaştığını gösterir): \(\gamma_{00} \pm 1.96 \sqrt{\tau_{00}}\)
  3. Sınıfiçi Korelasyon Katsayısı: \(\rho = \tau_{00}/(\tau_{00} + \sigma^2)\)
  4. Deviance baseline’ı — sonraki modellerle karşılaştırma için referans noktası.

6.1.3 ICC’nin Görsel Anlamı

ICC yalnızca bir rakam değildir; verinin nasıl göründüğünü doğrudan belirler.

set.seed(42)
senaryo <- function(rho) {
  sig_b <- sqrt(rho); sig_w <- sqrt(1 - rho)
  ort <- rnorm(8, 0, sig_b)
  do.call(rbind, lapply(seq_along(ort), function(j) {
    data.frame(grup = factor(j),
               y = rnorm(25, ort[j], sig_w))
  }))
}

icc_ler <- c(0.02, 0.15, 0.40, 0.70)
veri_icc <- do.call(rbind, lapply(icc_ler, function(r) {
  s <- senaryo(r); s$icc <- paste0("ICC = ", r); s
}))
veri_icc$icc <- factor(veri_icc$icc, levels = paste0("ICC = ", icc_ler))

ort_df <- veri_icc %>% group_by(icc, grup) %>%
  summarise(ort = mean(y), .groups = "drop")

ggplot(veri_icc, aes(x = grup, y = y, color = grup)) +
  geom_jitter(width = 0.22, alpha = 0.65, size = 1.8) +
  geom_point(data = ort_df, aes(x = grup, y = ort),
             color = "#ffffff", size = 3.6, shape = 18) +
  facet_wrap(~ icc, nrow = 1) +
  scale_color_manual(values = renk_grup, guide = "none") +
  labs(title = "ICC'nin görsel anlamı",
       subtitle = "ICC büyüdükçe gruplar arası ayrışma belirginleşir",
       x = "Grup", y = "Y") +
  tema_hlm +
  theme(axis.text.x = element_blank())
Şekil 4. Aynı marjinal ortalama ve varyansa sahip dört farklı küme yapısı, farklı ICC değerlerinde. ICC arttıkça gruplar arasındaki ayrışma belirginleşir; ICC = 0'a yakınken gruplar iç içe geçer, ICC yüksekken gruplar birbirinden kopar. Beyaz elmas grubun ortalaması.

Şekil 4. Aynı marjinal ortalama ve varyansa sahip dört farklı küme yapısı, farklı ICC değerlerinde. ICC arttıkça gruplar arasındaki ayrışma belirginleşir; ICC = 0’a yakınken gruplar iç içe geçer, ICC yüksekken gruplar birbirinden kopar. Beyaz elmas grubun ortalaması.

ICC yorumu. \(\rho = 0{,}15\) olan bir modelde: “Bağımlı değişkendeki toplam varyansın %15’i gruplar arası farklılıklardan, %85’i grup içi (bireyler arası) farklılıklardan kaynaklanmaktadır.”

Ancak unutmayın: küçük ICC, HLM’ye gerek olmadığı anlamına gelmez. Dizayn etkisi formülü devreye girer.

6.2 Rastgele-Katsayı Modeli

Bu modelde Düzey 1’e en az bir yordayıcı eklenir ve hem kesişimin hem de eğimin gruplar arasında rastgele değişmesine izin verilir.

6.2.1 Denklemler

Düzey 1:

\[ Y_{ij} = \beta_{0j} + \beta_{1j} X_{ij} + r_{ij} \]

Düzey 2:

\[ \beta_{0j} = \gamma_{00} + u_{0j}, \qquad \beta_{1j} = \gamma_{10} + u_{1j} \]

Birleşik:

\[ Y_{ij} = \gamma_{00} + \gamma_{10} X_{ij} + u_{0j} + u_{1j} X_{ij} + r_{ij} \]

Rastgele etkiler artık iki boyutlu bir dağılımdan gelir:

\[ \begin{pmatrix} u_{0j} \\ u_{1j} \end{pmatrix} \sim \mathcal{N}\!\left(\mathbf{0},\; \begin{pmatrix} \tau_{00} & \tau_{01} \\ \tau_{01} & \tau_{11} \end{pmatrix}\right) \]

6.2.2 Rastgele Kesişim vs. Rastgele Eğim

set.seed(3)
x <- seq(0, 10, length.out = 80)
# Sadece rastgele kesişim
int1 <- c(40, 48, 55, 62)
eg1  <- rep(3, 4)
# Rastgele kesişim + eğim
int2 <- c(40, 48, 55, 62)
eg2  <- c(1.2, 2.4, 3.6, 4.8)

df1 <- do.call(rbind, lapply(1:4, function(j) {
  data.frame(okul = factor(paste("Okul", j)), x = x,
             y = int1[j] + eg1[j] * x, tur = "Rastgele kesişim (paralel)")
}))
df2 <- do.call(rbind, lapply(1:4, function(j) {
  data.frame(okul = factor(paste("Okul", j)), x = x,
             y = int2[j] + eg2[j] * x, tur = "Rastgele kesişim + eğim")
}))

ggplot(rbind(df1, df2), aes(x, y, color = okul)) +
  geom_line(linewidth = 1.3) +
  facet_wrap(~ tur) +
  scale_color_manual(values = renk_grup[1:4], name = NULL) +
  labs(title = "İki farklı rastgele-etki yapısı",
       x = "X (öğrenci düzeyi yordayıcı)",
       y = "Y (yordanan)") +
  tema_hlm +
  theme(legend.position = "bottom")
Şekil 5. Rastgele kesişim yalnız (solda) ile rastgele kesişim + rastgele eğim (sağda) modellerinin görsel farkı. Solda tüm okulların eğimi aynıdır, kesişimler paraleldir. Sağda hem seviye hem de X-Y ilişkisinin gücü okuldan okula değişir.

Şekil 5. Rastgele kesişim yalnız (solda) ile rastgele kesişim + rastgele eğim (sağda) modellerinin görsel farkı. Solda tüm okulların eğimi aynıdır, kesişimler paraleldir. Sağda hem seviye hem de X-Y ilişkisinin gücü okuldan okula değişir.

6.2.3 Kesişim-Eğim Kovaryansı ve Matthew Etkisi

\(\tau_{01}\) kesişim ile eğim arasındaki kovaryanstır:

  • Pozitif \(\tau_{01}\): yüksek ortalamaya sahip gruplarda eğim de daha diktir — “Zengin daha da zenginleşir” (Matthew etkisi).
  • Negatif \(\tau_{01}\): yüksek ortalamalı gruplarda eğim daha yumuşaktır — yakınsama (convergence) veya tavan etkisi.
  • \(\tau_{01} \approx 0\): kesişim ve eğim birbirinden bağımsızdır.
set.seed(11)
yap_kov <- function(kov_isaret) {
  n_o <- 12
  u0 <- rnorm(n_o, 0, sqrt(20))
  u1 <- kov_isaret * 0.35 * u0 + rnorm(n_o, 0, 0.3)
  do.call(rbind, lapply(seq_len(n_o), function(j) {
    data.frame(okul = factor(j),
               x = seq(0, 10, length.out = 30),
               y = (50 + u0[j]) + (2 + u1[j]) * seq(0, 10, length.out = 30))
  }))
}

df_kov <- rbind(
  cbind(yap_kov(+1), tur = "Pozitif kovaryans (τ₀₁ > 0)"),
  cbind(yap_kov( 0), tur = "Sıfıra yakın (τ₀₁ ≈ 0)"),
  cbind(yap_kov(-1), tur = "Negatif kovaryans (τ₀₁ < 0)")
)
df_kov$tur <- factor(df_kov$tur,
                     levels = c("Pozitif kovaryans (τ₀₁ > 0)",
                                "Sıfıra yakın (τ₀₁ ≈ 0)",
                                "Negatif kovaryans (τ₀₁ < 0)"))

ggplot(df_kov, aes(x, y, color = okul, group = okul)) +
  geom_line(alpha = 0.85, linewidth = 0.9) +
  facet_wrap(~ tur) +
  scale_color_manual(values = rep(renk_grup, 2)[1:12], guide = "none") +
  labs(title = "Kesişim-eğim kovaryansının (τ₀₁) üç tipi",
       x = "X", y = "Y") +
  tema_hlm
Şekil 6. Pozitif (solda), sıfıra yakın (ortada) ve negatif (sağda) kesişim-eğim kovaryansının görünümü. Pozitif kovaryans: yüksek ortalamalı okullarda eğim dik — Matthew etkisi. Negatif kovaryans: yüksek ortalamalı okullarda eğim yumuşak — yakınsama / tavan etkisi.

Şekil 6. Pozitif (solda), sıfıra yakın (ortada) ve negatif (sağda) kesişim-eğim kovaryansının görünümü. Pozitif kovaryans: yüksek ortalamalı okullarda eğim dik — Matthew etkisi. Negatif kovaryans: yüksek ortalamalı okullarda eğim yumuşak — yakınsama / tavan etkisi.

6.2.4 Düzey-1 Açıklanan Varyans

DÜZEY-1 PSEUDO R² \[ R^2_1 = \frac{\sigma^2_{\text{boş}} - \sigma^2_{\text{dolu}}} {\sigma^2_{\text{boş}}} \]

6.3 Kesişim ve Eğimin Bağımlı Değişken Olduğu Model

Intercepts and Slopes as Outcomes Model veya Full Model. Düzey 2’ye yordayıcı eklenerek, L1 kesişim ve eğimlerinin gruplar arası varyansı açıklanmaya çalışılır.

6.3.1 Denklemler

Düzey 1: \[ Y_{ij} = \beta_{0j} + \beta_{1j} X_{ij} + r_{ij} \]

Düzey 2: \[ \beta_{0j} = \gamma_{00} + \gamma_{01} W_j + u_{0j} \] \[ \beta_{1j} = \gamma_{10} + \gamma_{11} W_j + u_{1j} \]

Birleşik:

\[ Y_{ij} = \gamma_{00} + \gamma_{01} W_j + \gamma_{10} X_{ij} + \gamma_{11}(W_j \cdot X_{ij}) + u_{0j} + u_{1j} X_{ij} + r_{ij} \]

6.3.2 Parametrelerin Yorumu

Parametre Anlamı
\(\gamma_{00}\) \(W = 0\) olan bir grupta, \(X = 0\) olan bireyin yordanan \(Y\)’si
\(\gamma_{01}\) \(W\)’nin L1 kesişimi üzerindeki ana etkisi
\(\gamma_{10}\) \(W = 0\) olan grupta \(X\)’in \(Y\) üzerindeki eğimi
\(\gamma_{11}\) \(W\)’nin \(X\)\(Y\) eğimi üzerindeki etkisi — çapraz düzey etkileşimi
\(u_{0j}\) \(W\) kontrol edildikten sonra kesişimde kalan grup-spesifik sapma
\(u_{1j}\) \(W\) kontrol edildikten sonra eğimde kalan grup-spesifik sapma

6.3.3 Çapraz Düzey Etkileşim

\(\gamma_{11}\), HLM’nin gücünü en belirgin gösteren parametredir: “Bir üst düzey değişken (\(W\)), alt düzey bir ilişkinin (\(X \rightarrow Y\)) gücünü nasıl düzenliyor?”

set.seed(20)
x <- seq(0, 10, length.out = 100)
deneyim <- c("Az deneyim (W düşük)",
             "Orta deneyim (W orta)",
             "Çok deneyim (W yüksek)")
egimler <- c(0.8, 2.2, 4.0)
kesisimler <- c(45, 50, 55)

df_cl <- do.call(rbind, lapply(seq_along(deneyim), function(j) {
  data.frame(Deneyim = deneyim[j], x = x,
             y = kesisimler[j] + egimler[j] * x)
}))
df_cl$Deneyim <- factor(df_cl$Deneyim, levels = deneyim)

ggplot(df_cl, aes(x, y, color = Deneyim)) +
  geom_line(linewidth = 1.6) +
  scale_color_manual(values = c(renk_kirmizi, renk_vurgu, renk_yesil)) +
  labs(title = "Çapraz düzey etkileşim: W öğrenci-level eğimi moderatör eder",
       subtitle = "γ₁₁: W'nin L1 eğimi üzerindeki etkisi",
       x = "X (öğrenci motivasyonu, L1)",
       y = "Y (yordanan başarı)") +
  tema_hlm +
  theme(legend.position = "bottom")
Şekil 7. Çapraz düzey etkileşim: öğretmen deneyimi (L2 değişkeni, W) öğrencinin motivasyonu (L1 değişkeni, X) ile başarı (Y) arasındaki eğimi moderatör eder. Düşük deneyimli öğretmenlerde motivasyonun etkisi sınırlı; yüksek deneyimli öğretmenlerde eğim çok daha dik. Bu γ₁₁ katsayısının işaretidir.

Şekil 7. Çapraz düzey etkileşim: öğretmen deneyimi (L2 değişkeni, W) öğrencinin motivasyonu (L1 değişkeni, X) ile başarı (Y) arasındaki eğimi moderatör eder. Düşük deneyimli öğretmenlerde motivasyonun etkisi sınırlı; yüksek deneyimli öğretmenlerde eğim çok daha dik. Bu γ₁₁ katsayısının işaretidir.

6.3.4 Düzey-2 Pseudo \(R^2\) Hesapları

\[ R^2_{\text{Intercept}} = \frac{\tau_{00, \text{(rastgele-katsayı)}} - \tau_{00, \text{(bu model)}}} {\tau_{00, \text{(rastgele-katsayı)}}} \]

\[ R^2_{\text{Slope}} = \frac{\tau_{11, \text{(rastgele-katsayı)}} - \tau_{11, \text{(bu model)}}} {\tau_{11, \text{(rastgele-katsayı)}}} \]


7 Merkezleme (Centering)

Merkezleme yalnızca teknik bir önceden-işleme adımı değildir; kesişimin ve eğimlerin ne anlama geldiğini köklü biçimde değiştirir.

7.1 Neden Merkezleme?

Ham değerlerde kesişim \(\beta_0\), tüm yordayıcıların \(0\) olduğu noktadaki yordanan değerdir. SES, zeka, yaş gibi değişkenlerde \(0\) değeri çoğu zaman anlamsızdır veya ölçüm aralığı dışındadır. Merkezleme, kesişime anlamlı bir referans noktası kazandırır.

7.2 Üç Yaklaşım

7.2.1 1. Genel-Ortalama Merkezleme (CGM — Grand-Mean Centering)

Tüm veri seti üzerinden hesaplanan genel ortalama çıkarılır:

\[X^{CGM}_{ij} = X_{ij} - \overline{X}_{..}\]

Kesişim yorumu: *“Evrenin genel ortalama değerine sahip bir bireyin yordanan* \(Y\) değeri.”

Özellik: CGM, eğim katsayılarının büyüklüğünü değiştirmez ama yorumlarını etkiler. Tahmin edilen eğim, grup içi ve gruplar arası etkilerin karışımıdır (blended / conflated effect).

7.2.2 2. Grup-Ortalaması Merkezleme (CWC — Cluster-Within Centering)

Her gözlem kendi grubunun ortalamasından çıkarılır:

\[X^{CWC}_{ij} = X_{ij} - \overline{X}_{.j}\]

Kesişim yorumu: *“Kendi okulunun ortalama* \(X\) düzeyine sahip bir bireyin yordanan \(Y\) değeri.”

Özellik: CWC, yordayıcıdaki tüm gruplar-arası varyansı atar ve değişkeni saf bir grup içi (within) etki hâline getirir.

set.seed(5)
n <- 20; J <- 4
okul_ort <- c(-3, -1, 2, 5)
df_m <- do.call(rbind, lapply(seq_len(J), function(j) {
  data.frame(okul = factor(paste("Okul", j)),
             x = rnorm(n, okul_ort[j], 1.2))
}))
genel <- mean(df_m$x)
df_m <- df_m %>% group_by(okul) %>%
  mutate(grup_ort = mean(x)) %>% ungroup()
df_m$ham <- df_m$x
df_m$cgm <- df_m$x - genel
df_m$cwc <- df_m$x - df_m$grup_ort

df_long <- df_m %>%
  select(okul, ham, cgm, cwc) %>%
  pivot_longer(-okul, names_to = "tur", values_to = "deger") %>%
  mutate(tur = case_when(tur == "ham" ~ "Ham (merkezlenmemiş)",
                          tur == "cgm" ~ "CGM (genel ortalama = 0)",
                          tur == "cwc" ~ "CWC (grup ortalaması = 0)"),
         tur = factor(tur,
                      levels = c("Ham (merkezlenmemiş)",
                                 "CGM (genel ortalama = 0)",
                                 "CWC (grup ortalaması = 0)")))

ggplot(df_long, aes(deger, okul, color = okul)) +
  geom_vline(xintercept = 0, color = renk_vurgu,
             linetype = "dashed", linewidth = 0.7) +
  geom_jitter(height = 0.15, size = 2, alpha = 0.8) +
  stat_summary(geom = "point", fun = mean,
               shape = 18, size = 5, color = "#ffffff") +
  facet_wrap(~ tur, nrow = 1) +
  scale_color_manual(values = renk_grup[1:4], guide = "none") +
  labs(title = "Üç merkezleme türünün görsel karşılaştırması",
       subtitle = "Kesik amber çizgi: sıfır noktası.    Beyaz elmas: grup ortalaması.",
       x = "X değeri", y = NULL) +
  tema_hlm
Şekil 8. Üç merkezleme yaklaşımının görsel karşılaştırması. Üstte ham skorlar; altta CGM ve CWC uygulandığında aynı verinin nasıl göründüğü. CGM'de tüm okullar beraber genel ortalamaya kaydırılır (dağılım korunur). CWC'de her okul kendi ortalamasına sıfırlanır (gruplar-arası varyans atılır). Kesişimin yorumu her durumda değişir.

Şekil 8. Üç merkezleme yaklaşımının görsel karşılaştırması. Üstte ham skorlar; altta CGM ve CWC uygulandığında aynı verinin nasıl göründüğü. CGM’de tüm okullar beraber genel ortalamaya kaydırılır (dağılım korunur). CWC’de her okul kendi ortalamasına sıfırlanır (gruplar-arası varyans atılır). Kesişimin yorumu her durumda değişir.

7.2.3 3. Belirli Bir Değerde Merkezleme

Ham skordan teorik olarak anlamlı sabit bir değer çıkarılır (örn. \(X = 100\) için IQ ölçeği). Tam anlamıyla “merkezleme” sayılmaz çünkü değişkenin ortalamasını sıfıra eşitlemez; ancak kesişim yorumunu anlamlı hâle getirir.

7.3 Enders ve Tofighi Kuralı

Hangi yaklaşım doğru? Cevap araştırmanın sorusuna bağlıdır.

Çapraz düzey etkileşim test ediliyorsa (bir L2 değişkeninin bir L1 eğimini nasıl moderatör ettiği soruluyorsa), L1 yordayıcısı için CWC kullanılmalı ve grup ortalamaları ayrı bir L2 yordayıcısı olarak modele eklenmelidir.

Gerekçe: CWC, L1 değişkenini gruplar-arası varyansından arındırır; böylece gruplar-arası etki ayrı bir değişkenle (grup ortalaması) temsil edilebilir. Aksi takdirde çapraz düzey etkileşim, within ve between etkilerin karışımıyla bulanıklaşır (conflation).

Değişken türü Önerilen merkezleme
L1 sürekli yordayıcı — çapraz düzey etkileşim var CWC + grup ortalamasını L2’ye ekle
L1 sürekli yordayıcı — yalnızca within etki ilgi çekiyor CWC
L1 sürekli yordayıcı — between etki ilgi çekiyor CGM (veya CWC + grup ortalaması)
L1 ikili kategorik yordayıcı Genellikle merkezlenmez (0/1 korunur)
L2 sürekli yordayıcı Merkezlenmez veya CGM
L2 sürekli yordayıcı (gruplar arası fark yorumu) CGM

7.4 R’da Merkezleme

library(dplyr)
# library(MLMusingR)  # group_center() ve group_mean() fonksiyonları için

# 1) GENEL ORTALAMA MERKEZLEME (CGM)
veri$X_cgm <- veri$X - mean(veri$X, na.rm = TRUE)

# 2) GRUP ORTALAMASI MERKEZLEME (CWC) — Base R
veri$X_grup_ort <- ave(veri$X, veri$okul,
                       FUN = function(z) mean(z, na.rm = TRUE))
veri$X_cwc      <- veri$X - veri$X_grup_ort

# 3) dplyr ile CWC (daha okunaklı)
veri <- veri %>%
  group_by(okul) %>%
  mutate(X_grup_ort = mean(X, na.rm = TRUE),
         X_cwc      = X - X_grup_ort) %>%
  ungroup()

# 4) MLMusingR paketiyle tek adımda
# veri$X_cwc <- MLMusingR::group_center(veri$X, veri$okul)

# ÖNEMLİ: Çapraz düzey etkileşim test edilecekse grup ortalaması da
# L2 yordayıcısı olarak modele eklenmeli.

8 ML ve REML Kestirimleri

HLM’de varyans bileşenleri ve sabit etkiler Maksimum Olabilirlik (ML) veya Kısıtlanmış Maksimum Olabilirlik (REML) ile kestirilir.

8.1 Teknik Fark

Tam ML (Full Maximum Likelihood). Varyans bileşenlerini kestirirken sabit etkilerin kestiriminde harcanan serbestlik derecelerini dikkate almaz. Sonuç: varyans bileşenleri yanlı (olması gerekenden küçük) kestirilir. Özellikle küçük örneklemlerde bu yanlılık ciddi boyutlara ulaşır.

REML. Sabit etkileri kısıtlı bir dönüşümle çıkararak yalnızca varyans bileşenlerine ait olabilirliği maksimize eder. Serbestlik derecesi kaybını hesaba kattığı için varyans kestirimleri yansız ve daha doğrudur.

J_grid <- seq(5, 100, by = 5)
ml_bias   <- -1 / (J_grid)       # kavramsal eğri
reml_bias <-  0 * J_grid         # REML ~ yansız

df_mlreml <- data.frame(
  J = rep(J_grid, 2),
  yanlik = c(ml_bias, reml_bias),
  yontem = rep(c("ML", "REML"), each = length(J_grid))
)

ggplot(df_mlreml, aes(J, yanlik, color = yontem)) +
  geom_hline(yintercept = 0, color = "#e8e8e8",
             linetype = "dashed", linewidth = 0.5) +
  geom_line(linewidth = 1.6) +
  geom_point(size = 2.6) +
  scale_color_manual(values = c(ML = renk_kirmizi, REML = renk_yesil)) +
  labs(title = "ML ve REML'nin küme sayısına bağlı yanlılığı (kavramsal)",
       subtitle = "REML yansız; ML küçük J'de varyansı olduğundan küçük kestirir",
       x = "Küme sayısı (J)",
       y = "Varyans kestiriminde yanlılık",
       color = NULL) +
  tema_hlm +
  theme(legend.position = "bottom")
Şekil 9. ML ile REML arasındaki varyans kestirimi farkının küme sayısına bağlı yanlılığı. Küçük J'de ML'nin varyans kestirimi gerçek değerin altında kalır; REML bu yanlılığı düzeltir. J büyüdükçe fark önemsizleşir.

Şekil 9. ML ile REML arasındaki varyans kestirimi farkının küme sayısına bağlı yanlılığı. Küçük J’de ML’nin varyans kestirimi gerçek değerin altında kalır; REML bu yanlılığı düzeltir. J büyüdükçe fark önemsizleşir.

8.2 Ne Zaman Hangisi?

Amaç Önerilen yöntem
Varyans bileşenlerini (rastgele etkileri) kestirmek REML (varsayılan)
Rastgele etkileri farklı olan modelleri LRT ile karşılaştırmak REML
Sabit etkileri farklı olan modelleri LRT ile karşılaştırmak ML (zorunlu)
AIC/BIC hesaplamak (sabit etkiler aynı değilse) ML
Nihai raporlama REML

Altın kural: Sabit etki yapısı farklı olan modelleri REML ile karşılaştırmayın — LRT geçerli olmaz. ML ile karşılaştırıp, nihai modelin raporlanacak kestirimlerini REML ile yeniden hesaplayın.

8.3 R’da Kontrol

library(lme4)

# REML (varsayılan) — nihai kestirim için
model_reml <- lmer(Y ~ X1 + X2 + (1 | okul), data = veri)

# ML — sabit etki yapısı farklı modelleri karşılaştırmak için
model_ml_1 <- lmer(Y ~ X1 + (1 | okul), data = veri, REML = FALSE)
model_ml_2 <- lmer(Y ~ X1 + X2 + (1 | okul), data = veri, REML = FALSE)

anova(model_ml_1, model_ml_2)  # LRT — sabit etki farkı testi

9 Varsayımlar ve Tanılar

HLM, standart regresyonun varsayımlarını miras alır ve yuvalanmış yapıya özgü yeni kısıtlamalar ekler.

9.1 Temel Varsayımlar

  1. Düzey-1 kalıntılarının normalliği, bağımsızlığı ve homoscedasticity’si. \(r_{ij} \sim \mathcal{N}(0, \sigma^2)\); bağımsızlık yalnızca grup içi düzeyde geçerlidir (gruplar arası bağımlılık zaten modellenmektedir).

  2. Düzey-2 rastgele etkilerinin çok değişkenli normalliği. \(u_{0j}, u_{1j}, \dots \sim \mathcal{N}(\mathbf{0}, \mathbf{T})\); kesişim ve eğim sapmaları birlikte çok değişkenli normal dağılımdan gelmelidir.

  3. Düzeyler arası bağımsızlık. L1 kalıntıları (\(r_{ij}\)), L2 rastgele etkileriyle (\(u_{qj}\)) ilişkisiz olmalıdır.

  4. Yordayıcı-kalıntı bağımsızlığı. L1 yordayıcıları L1 kalıntılarıyla; L2 yordayıcıları L2 rastgele etkileriyle ilişkisiz olmalıdır. Endojenlik bu varsayımın ihlalidir.

  5. Doğrusallık. Yordayıcılar ile bağımlı değişken arasındaki ilişki doğrusal olmalıdır.

  6. Çoklu bağlantı olmaması. Hem aynı düzey içinde hem de düzeyler arası değişkenlerin birbirleriyle aşırı yüksek korelasyonlu olmaması gerekir.

9.2 Tanı Yöntemleri

Varsayım Kontrol araçları
Doğrusallık Saçılım grafikleri + lowess eğrileri
Homoscedasticity Kalıntı-tahmin değeri grafikleri; H istatistiği
L1 normalliği Q-Q grafiği, histogram, yoğunluk eğrisi
L2 çok değişkenli normallik Mahalanobis uzaklık grafiği
Çoklu bağlantı VIF (\(>5\) veya \(>10\) sorunludur)
Aykırı değerler Boxplot, standartlaştırılmış kalıntılar
Etkili gözlemler Cook’s D, MDFFITS, COVRATIO, leverage

9.3 R’da Tanı

library(lme4)
library(performance)  # check_model() tüm tanıları tek grafikte sunar
library(HLMdiag)      # hiyerarşik tanı araçları
library(influence.ME) # etkili gözlemler

# Hızlı genel bakış
performance::check_model(model)

# Düzey-1 kalıntıları
r1 <- HLMdiag::hlm_resid(model, level = 1)

# Düzey-2 (grup düzeyi) kalıntılar
r2 <- HLMdiag::hlm_resid(model, level = "okul")

# Etkili gözlemler — Cook's Distance
infl <- influence.ME::influence(model, group = "okul")
plot(infl, which = "cook")

10 Model Karşılaştırma ve Uyum Ölçütleri

10.1 Deviance ve Olabilirlik Oranı Testi (LRT)

İç içe (nested) modellerin karşılaştırmasında temel araç. Deviance farkı yaklaşık olarak \(\chi^2\) dağılımına uyar; serbestlik derecesi = parametre sayısı farkı:

LRT FORMÜLÜ \[ \chi^2_{LRT} = D_{\text{basit}} - D_{\text{karmaşık}}, \quad df = p_{\text{karmaşık}} - p_{\text{basit}} \]

Anlamlı düşüş (\(p < 0.05\)) → karmaşık model tercih edilir.

Uyarı 1. Sabit etki farkı içeren karşılaştırmalarda ML kullanın; REML geçersizdir.

Uyarı 2. Varyans bileşeni testleri (örn. rastgele eğim eklemek) \(\chi^2\) dağılımına tam uymayan sınır (boundary) testleridir. Daha kesin sonuç için karma \(\chi^2\) dağılımı veya bootstrap LRT kullanılmalıdır.

10.2 Bilgi Kriterleri

Hem iç içe hem de iç içe olmayan modellerin karşılaştırmasında kullanılır. Temel mantık: veri uyumu + model sadeliği (parsimony).

\[ \mathrm{AIC} = D + 2q \] \[ \mathrm{BIC} = D + q \cdot \ln(N) \] \[ \mathrm{aBIC} = D + q \cdot \ln\!\left(\frac{N+2}{24}\right) \]

Burada \(q\) tahmin edilen parametre sayısı, \(N\) örneklem büyüklüğüdür. Daha küçük değer daha iyi model. BIC, AIC’den daha ağır parsimony cezası uygular; karmaşık modeller AIC’ye göre BIC’de genellikle daha geç tercih edilir.

df_prog <- data.frame(
  Adim = factor(c("Boş model","+ L1 sabit","+ L2 sabit",
                  "+ Rastgele eğim","+ Çapraz düzey"),
                levels = c("Boş model","+ L1 sabit","+ L2 sabit",
                           "+ Rastgele eğim","+ Çapraz düzey")),
  Deviance = c(5112, 4336, 4280, 4268, 4258),
  AIC      = c(5118, 4346, 4294, 4288, 4282)
)

df_long <- df_prog %>% pivot_longer(-Adim, names_to = "Olcum",
                                    values_to = "Deger")

ggplot(df_long, aes(Adim, Deger, color = Olcum, group = Olcum)) +
  geom_line(linewidth = 1.3) +
  geom_point(size = 4.2) +
  geom_text(aes(label = Deger), vjust = -1.4,
            size = 3.8, color = "#ffffff", fontface = "bold") +
  scale_color_manual(values = c(Deviance = renk_ana, AIC = renk_vurgu)) +
  coord_cartesian(ylim = c(4180, 5250)) +
  labs(title = "Bottom-up model kurma: deviance ve AIC eğrileri",
       subtitle = "Her adımda model uyumu iyileşir ama marjinal fayda azalır",
       x = NULL, y = "Değer", color = NULL) +
  tema_hlm +
  theme(legend.position = "top",
        axis.text.x = element_text(angle = 15, hjust = 1))
Şekil 10. Beş adımlı model kurma stratejisinde deviance düşüşünün tipik görünümü. Her yeni adım model uyumunu artırır (deviance düşer) ama marjinal fayda azalır. Son adımlarda düşüşün durması — yani platoya ulaşmak — modelin maksimum bilgiyi çıkardığını gösterir.

Şekil 10. Beş adımlı model kurma stratejisinde deviance düşüşünün tipik görünümü. Her yeni adım model uyumunu artırır (deviance düşer) ama marjinal fayda azalır. Son adımlarda düşüşün durması — yani platoya ulaşmak — modelin maksimum bilgiyi çıkardığını gösterir.

10.3 Açıklanan Varyans Oranları (Pseudo \(R^2\))

Tek düzeyli \(R^2\) kavramının HLM’deki karşılıkları birden fazladır. Her yaklaşımın farklı bir kuramsal dayanağı vardır.

10.3.1 Raudenbush ve Bryk [-@raudenbush2002] Yaklaşımı

Düzeylere özgü hesaplanır. “Bir önceki modelin kalıntı varyansında ne kadar düşüş oldu?” sorusunun cevabı:

\[ R^2_{\text{L1}} = \frac{\sigma^2_{\text{boş}} - \sigma^2_{\text{dolu}}} {\sigma^2_{\text{boş}}} \]

\[ R^2_{\text{L2 (intercept)}} = \frac{\tau_{00, \text{boş}} - \tau_{00, \text{dolu}}} {\tau_{00, \text{boş}}} \]

Problem: Rastgele eğimler eklendiğinde kalıntı varyansının yapay olarak artabileceği, hatta negatif \(R^2\)’ye yol açabileceği durumlar vardır. Bu, R&B formülünün bilinen sınırlılığıdır.

10.3.2 Snijders ve Bosker Düzeltmesi

Sadece tek bir düzeyin varyansını değil, toplam varyansı kullanarak daha tutarlı bir kestirim sunar. Rastgele eğim problemlerine daha dayanıklıdır.

10.3.3 Nakagawa ve Schielzeth Yaklaşımı

Genel bir toplam \(R^2\) sunar. İki ölçü verir:

Marjinal \(R^2\): Yalnızca sabit etkilerin açıkladığı varyans oranı.

Koşullu (Conditional) \(R^2\): Sabit + rastgele etkilerin birlikte açıkladığı toplam varyans oranı.

GLMM’lerde (lojistik, Poisson vb.) özellikle kullanışlıdır. R’da performance::r2() veya MuMIn::r.squaredGLMM() ile hesaplanır.

10.3.4 Rights ve Sterba Çerçevesi

En ayrıntılı ve modern yaklaşım. Toplam açıklanan varyansı şu bileşenlere ayrıştırır:

  • L1 sabit etkilerinin açıkladığı varyans
  • L2 sabit etkilerinin açıkladığı varyans
  • Rastgele kesişim varyansının açıkladığı (küme ortalamalarındaki sistematik farklar)
  • Rastgele eğim varyansının açıkladığı (küme-spesifik ilişkiler)

R’da r2mlm paketiyle hesaplanır.

10.4 Bayesçi Uyum Ölçütleri

MCMC tabanlı kestirimlerde (örn. MCMCglmm, brms):

  • DIC (Deviance Information Criterion): AIC/BIC mantığında; küçük daha iyi.
  • PPP (Posterior Predictive P-value): Model-veri uyumu testi. 0.5 civarı optimum; 0 veya 1’e yakınlık uyumsuzluğa işaret eder.
  • WAIC ve LOO-IC: Modern Bayesçi alternatifler (loo paketi).

10.5 Çok Düzeyli SEM Uyum İndeksleri

Çok düzeyli faktör analizi veya MSEM yapıldığında:

İndeks İyi uyum Yeterli uyum
\(\chi^2\) \(p > 0.05\) (büyük N’de duyarsız)
RMSEA \(\leq 0.05\) \(0.05\)\(0.08\)
CFI / TLI \(\geq 0.95\) \(\geq 0.90\)
SRMR \(\leq 0.08\)

MSEM’de genel uyum indeksleri L1’in büyük gözlem sayısı nedeniyle alt düzeye dominated olur. SRMR\(_{\text{within}}\) ve SRMR\(_{\text{between}}\) ayrı ayrı incelenmelidir.


11 Etki Büyüklüğü

Etki büyüklüğü, istatistiksel anlamlılık ötesinde pratik önem sorusuna yanıt arar. HLM’de üç ana çerçeve kullanılır.

11.1 Pseudo \(R^2\)

Yukarıda ayrıntıyla işlendi — düzeye özgü, toplam, marjinal/koşullu biçimleri vardır.

11.2 Cohen’s d (Standartlaştırılmış Ortalama Farkı)

Özellikle küme-randomize müdahale çalışmalarında (CRT):

\[ d = \frac{\bar{Y}_T - \bar{Y}_C}{s} \]

Yorum:

  • \(d = 0.20\) → küçük etki
  • \(d = 0.50\) → orta etki
  • \(d = 0.80\) → büyük etki

HLM’de standart sapma olarak hangi bileşenin (L1, L2, toplam) kullanılacağı literatürde tartışmalıdır. Hedges’in CRT için önerdiği formüller vardır.

11.3 Standartlaştırılmış Regresyon Katsayıları

Farklı ölçekteki yordayıcıların göreli önemini karşılaştırmak için:

\[ \beta^* = \beta \cdot \frac{s_X}{s_Y} \]

HLM’de \(s_X\) ve \(s_Y\) olarak hangi düzeyin standart sapması kullanılmalı sorusu karmaşıktır. En pratik yaklaşım: tüm değişkenleri modele sokmadan önce \(z\)-skoruna dönüştürmek — ancak bu rastgele etki yapısını etkileyebileceğinden dikkatle uygulanmalıdır.

11.4 HGLM için Etki Büyüklüğü

Lojistik veya Poisson gibi genelleştirilmiş çok düzeyli modellerde (HGLM):

  • L1 kalıntı varyansı modele göre sabittir (lojistikte \(\pi^2/3 \approx 3.29\)); klasik \(R^2\) hesabı mümkün değildir.
  • Bunun yerine McFadden, Cox & Snell, Nagelkerke, McKelvey & Zavoina Pseudo-\(R^2\) indeksleri kullanılır.
  • Katsayılar Odds Ratio (OR) olarak raporlanır: \(e^\beta\).

12 Örneklem Ağırlıkları (Sample Weights)

PISA, TIMSS, PIRLS gibi büyük ölçekli değerlendirmelerde karmaşık örnekleme tasarımları kullanılır: çok aşamalı küme örneklemesi, orantısız tabakalama, küçük alt grupların aşırı örneklenmesi (oversampling).

Ağırlık kullanılmazsa:

  1. Parametre yanlılığı. Analitik örneklem popülasyonu temsil etmediği için kestirimler aşırı örneklenen grupların yönüne sapar.
  2. Standart hata yanlılığı. Dizayn etkisi göz ardı edilirse standart hatalar küçük hesaplanır ve Tip I hata artar.

HLM’de ağırlıklar düzeylere göre ayrı sağlanır:

  • L1 ağırlık (örn. öğrenci ağırlığı)
  • L2 ağırlık (örn. okul ağırlığı)

R’da WeMix, survey, BIFIEsurvey gibi paketler bu yapıyı destekler.


13 Plausible Values, IRT ve Rubin Kuralları

Bu bölüm özellikle büyük ölçekli değerlendirme verileriyle çalışan araştırmacılar için kritiktir.

13.1 PV Nedir, Neden Var?

Madde Tepki Kuramı (IRT), gözlemlenen yanıtları gizil bir yeteneğe (\(\theta\)) bağlar. Öğrencinin gerçek yeteneği hiçbir zaman sıfır hatayla ölçülemez; her kestirimde ölçüm belirsizliği vardır.

Sadece tek bir nokta tahmini (örn. tek bir \(\hat{\theta}\)) kullanılırsa bu belirsizlik yok sayılır ve standart hatalar yapay biçimde küçük hesaplanır. Yanıltıcı derecede “kesin” sonuçlar üretilir.

Çözüm: Her öğrenci için tek puan yerine, gizil yetenek dağılımından çoklu olası değerler (genellikle 5 veya 10 tane) çekilir. Bu, eksik veri analizindeki Çoklu Atama (Multiple Imputation — MI) mantığının psikometrik uygulamasıdır.

df_pv <- data.frame(
  x = c(1, 1, 1, 1, 1,     3, 3, 3, 3, 3,     5,  7),
  y = c(5, 4, 3, 2, 1,     5, 4, 3, 2, 1,     3, 3),
  etiket = c("PV1","PV2","PV3","PV4","PV5",
             "Model 1","Model 2","Model 3","Model 4","Model 5",
             "Rubin\nBirleştirme",
             "Nihai\nsonuç"),
  renk = c(rep("veri", 5), rep("model", 5), "rubin", "nihai")
)

oklar1 <- data.frame(x = 1.45, xend = 2.55,
                     y = 1:5, yend = 1:5)
oklar2 <- data.frame(x = 3.45, xend = 4.55,
                     y = 1:5, yend = 3)
ok3 <- data.frame(x = 5.5, xend = 6.55, y = 3, yend = 3)

ggplot() +
  geom_segment(data = oklar1, aes(x, y, xend = xend, yend = yend),
               arrow = arrow(length = unit(0.18, "cm")),
               color = "#6a7490", linewidth = 0.55) +
  geom_segment(data = oklar2, aes(x, y, xend = xend, yend = yend),
               arrow = arrow(length = unit(0.18, "cm")),
               color = "#6a7490", linewidth = 0.55) +
  geom_segment(data = ok3, aes(x, y, xend = xend, yend = yend),
               arrow = arrow(length = unit(0.28, "cm")),
               color = renk_vurgu, linewidth = 1) +
  geom_tile(data = df_pv, aes(x, y, fill = renk),
            width = 0.85, height = 0.78, color = "#1a1e2e",
            linewidth = 1) +
  geom_text(data = df_pv, aes(x, y, label = etiket),
            color = "#1a1e2e", fontface = "bold", size = 3.9) +
  scale_fill_manual(values = c(veri = renk_ana,
                               model = renk_yesil,
                               rubin = renk_mor,
                               nihai = renk_vurgu),
                    guide = "none") +
  annotate("text", x = 1, y = 5.95,
           label = "1. Öğrencinin 5 PV'si",
           color = renk_ana, fontface = "bold", size = 4.3) +
  annotate("text", x = 3, y = 5.95,
           label = "2. Her PV için ayrı HLM",
           color = renk_yesil, fontface = "bold", size = 4.3) +
  annotate("text", x = 5, y = 5.95,
           label = "3. Rubin kuralları",
           color = renk_mor, fontface = "bold", size = 4.3) +
  annotate("text", x = 7, y = 5.95,
           label = "4. Tek birleşik\nraporlama",
           color = renk_vurgu, fontface = "bold", size = 4.3) +
  xlim(0.3, 7.7) + ylim(0.3, 6.4) +
  theme_void() +
  theme(plot.background = element_rect(fill = "#1a1e2e", color = NA),
        plot.title = element_text(color = "#9ecbe6", face = "bold",
                                  hjust = 0.5, size = 15,
                                  margin = margin(b = 12)),
        plot.caption = element_text(color = "#9ecbdc", size = 10,
                                    face = "italic", hjust = 0)) +
  labs(title = "Plausible Values ile HLM — dört adımlı iş akışı",
       caption = "Ölçüm belirsizliği 5 farklı veri setinin modellemesiyle nihai standart hatalara taşınır.")
Şekil 11. Plausible Values (PV) iş akışı. Her öğrenci için IRT posterior dağılımından 5 PV çekilir; 5 ayrı tam veri seti oluşturulur; HLM her biri üzerinde ayrı çalıştırılır; sonuçlar Rubin kuralları ile birleştirilir. Böylece ölçüm belirsizliği nihai standart hatalara yansır.

Şekil 11. Plausible Values (PV) iş akışı. Her öğrenci için IRT posterior dağılımından 5 PV çekilir; 5 ayrı tam veri seti oluşturulur; HLM her biri üzerinde ayrı çalıştırılır; sonuçlar Rubin kuralları ile birleştirilir. Böylece ölçüm belirsizliği nihai standart hatalara yansır.

13.2 Rubin Kuralları

Nokta tahminlerin birleştirilmesi — basit aritmetik ortalama:

\[ \hat{\theta}_{\text{pool}} = \frac{1}{M} \sum_{m=1}^{M} \hat{\theta}_m \]

Varyansın birleştirilmesi — iki bileşen toplamı:

Atama içi varyans (Within-imputation variance): Standart hataların karelerinin ortalaması. \[\bar{U} = \frac{1}{M} \sum_{m=1}^{M} \widehat{SE}^2_m\]

Atamalar arası varyans (Between-imputation variance): Nokta tahminlerinin kendi aralarındaki varyansı. \[B = \frac{1}{M-1} \sum_{m=1}^{M} (\hat{\theta}_m - \hat{\theta}_{\text{pool}})^2\]

TOPLAM VARYANS \[ T = \bar{U} + \left(1 + \tfrac{1}{M}\right) B \] \[ SE_{\text{pool}} = \sqrt{T} \]

Böylece gizil özellikleri tahmin ederken taşınan ölçüm belirsizliği, nihai HLM modelinin standart hatalarına ve güven aralıklarına yansıtılmış olur.

13.3 R’da PV İşleme

library(mitml)    # MI birleştirme
library(lme4)
library(BIFIEsurvey)  # büyük ölçekli sınav verileri

# 5 PV için 5 model kur
modeller <- lapply(1:5, function(m) {
  lmer(as.formula(paste0("PV", m, " ~ X + (1 | okul)")),
       data = veri)
})

# Rubin kurallarıyla birleştir
birlestirilmis <- mitml::testEstimates(modeller,
                                       extra.pars = TRUE)
summary(birlestirilmis)

14 R Paket Ekosistemi

Bu bölüm, farklı paketlerin güçlü ve zayıf yönlerini tanıtır; problem türüne uygun aracı seçmek böylece kolaylaşır.

14.1 lme4 + lmerTest — Temel İkili

library(lme4)
library(lmerTest)  # mutlaka lme4'ten SONRA yüklenmeli — p-değerleri için

# Boş model (Random ANOVA)
m0 <- lmer(Y ~ 1 + (1 | okul), data = veri)

# Rastgele kesişim, sabit eğim
m1 <- lmer(Y ~ X + (1 | okul), data = veri)

# Rastgele kesişim + rastgele eğim (korelasyonlu)
m2 <- lmer(Y ~ X + (1 + X | okul), data = veri)

# Rastgele kesişim + rastgele eğim (korelasyonsuz)
m3 <- lmer(Y ~ X + (1 | okul) + (0 + X | okul), data = veri)

# Çapraz düzey etkileşim
m4 <- lmer(Y ~ X * W + (1 + X | okul), data = veri)

# Üç düzeyli yuvalama (öğrenci < okul < bölge)
m5 <- lmer(Y ~ X + (1 | bolge / okul), data = veri)

# Çapraz sınıflandırma (öğrenci hem okul hem mahalle içinde)
m6 <- lmer(Y ~ X + (1 | okul) + (1 | mahalle), data = veri)

Avantajlar: Hızlı, büyük veri setlerinde kararlı, karmaşık rastgele etki yapılarını destekler.

Dezavantajlar: lme4’ün varsayılan çıktısında p-değerleri yoktur (serbestlik derecesi tartışmaları nedeniyle). Çözüm: lmerTest (Satterthwaite) veya parameters::model_parameters() (Kenward-Roger). Ayrıca L1 hata kovaryans yapısını özelleştirmeye izin vermez; sıralı (ordinal) çok düzeyli lojistik regresyonu desteklemez.

14.2 nlme — L1 Hata Yapısı Gereken Durumlarda

Boylamsal verilerde AR(1) gibi otoregresif hata yapısı modellenmek istendiğinde tercih edilir.

library(nlme)

m_nlme <- lme(Y ~ zaman,
              random  = ~ zaman | kisi,
              correlation = corAR1(form = ~ zaman | kisi),
              data = veri)

14.3 ordinal — Çok Düzeyli Sıralı Lojistik

Bağımlı değişken 3+ sıralı kategoriden oluşuyor (örn. “Başarısız, Geçti, Üstün Başarı”).

library(ordinal)
m_ord <- clmm(as.factor(sonuc) ~ X + (1 | okul), data = veri)

14.4 MCMCglmm / brms — Bayesçi Çerçeve

Önsel bilgi dahil edilmek istendiğinde; aşırı karmaşık rastgele etki yapılarında; tam posterior dağılım gerektiğinde.

library(brms)
m_brm <- brm(Y ~ X + (1 + X | okul),
             data = veri, family = gaussian(),
             chains = 4, iter = 2000)

MCMCglmm eksik veriyle çalışmaz — na.omit() zorunlu. MCMC iterasyonlarının yakınsadığını doğrulamak (trace plot, Rhat kontrolü) kullanıcının sorumluluğudur.

14.5 lavaan — Çok Düzeyli SEM ve Faktör Analizi

Gizil yapılar, ölçüm hatası modelleme, çok düzeyli CFA için.

library(lavaan)
model <- '
  level: 1
    F1 =~ x1 + x2 + x3
    Y ~ F1
  level: 2
    F2 =~ x1 + x2 + x3
    Y ~ F2
'
fit <- sem(model, data = veri, cluster = "okul")

Avantaj: FIML ile eksik veri çözümü. Dezavantaj: Genellikle 2 düzeyle sınırlı; rastgele eğimleri henüz desteklemez.

14.6 Yardımcı Paketler Haritası

Paket İşlev
performance check_model(), r2(), icc() — tanı ve metrikler
parameters Model parametrelerini Kenward-Roger df ile raporlama
sjPlot tab_model() — yayın kalitesinde HTML/Word tabloları
broom.mixed Model çıktılarını tidy formatına çevirir
HLMdiag Hiyerarşik modeller için özelleşmiş tanı
influence.ME Etkili gözlem analizi
r2mlm Rights ve Sterba (2019) varyans ayrıştırması
MuMIn Marjinal/Koşullu \(R^2\)
mitml Çoklu atama / PV birleştirme (Rubin kuralları)
jomo Çok düzeyli çoklu atama
MLMusingR Merkezleme fonksiyonları (Huang kitabı eki)
geepack GEE — sabit etki odaklı alternatif
gamm4 Doğrusal olmayan çok düzeyli modeller (GAMM)
glmmLasso Yüksek boyutlu verilerde değişken seçimi
WeMix Örneklem ağırlıklı HLM

15 Beş Adımlı Model Kurma Stratejisi

Güçlü bir teorik model yoksa, aşağıdan yukarıya (bottom-up) yaklaşım önerilir [@hox2018; @finch2024].

adim_df <- data.frame(
  adim = 1:5,
  isim = c("Boş model\n(Null)",
           "L1 sabit\netkiler",
           "L2 sabit\netkiler",
           "Rastgele\neğim",
           "Çapraz düzey\netkileşim"),
  elde = c("ICC\nbaseline deviance",
           "L1 R²\nL1 yordayıcı anlamlılığı",
           "L2 R²_intercept\nana etkiler",
           "τ₁₁\ngrup-grup farkı",
           "γ₁₁\nmoderasyon, R²_slope")
)

ggplot(adim_df) +
  geom_segment(aes(x = adim, xend = adim + 1, y = 1, yend = 1),
               data = adim_df[-5, ],
               arrow = arrow(length = unit(0.3, "cm")),
               color = renk_vurgu, linewidth = 0.9) +
  geom_point(aes(adim, 1), size = 28, color = renk_ana, shape = 21,
             fill = "#242a40", stroke = 2.5) +
  geom_text(aes(adim, 1, label = adim),
            color = renk_ana, fontface = "bold", size = 6.5) +
  geom_text(aes(adim, 1.5, label = isim),
            color = "#ffffff", fontface = "bold", size = 4.2) +
  geom_text(aes(adim, 0.45, label = elde),
            color = "#bcd4e6", size = 3.5, fontface = "italic") +
  xlim(0.3, 5.7) + ylim(0.1, 1.95) +
  theme_void() +
  theme(plot.background = element_rect(fill = "#1a1e2e", color = NA),
        plot.title = element_text(color = "#9ecbe6", face = "bold",
                                  hjust = 0.5, size = 15,
                                  margin = margin(b = 12))) +
  labs(title = "Bottom-up beş adımlı model kurma stratejisi")
Şekil 12. Beş adımlı model kurma akışı. Her adım bir önceki modele yeni parametre ekler; LRT/AIC/BIC ile uyum iyileşmesi test edilir. Adım 5'e geçiş yalnızca Adım 4'te rastgele eğim anlamlı çıkarsa mantıklıdır.

Şekil 12. Beş adımlı model kurma akışı. Her adım bir önceki modele yeni parametre ekler; LRT/AIC/BIC ile uyum iyileşmesi test edilir. Adım 5’e geçiş yalnızca Adım 4’te rastgele eğim anlamlı çıkarsa mantıklıdır.

15.1 Adım 1 — Boş Model (Intercept-Only / Null)

Yap: Hiçbir yordayıcı olmadan yalnızca kesişim.

Elde et: ICC, baseline deviance, L1 ve L2 varyansları (\(\sigma^2, \tau_{00}\)).

m0 <- lmer(Y ~ 1 + (1 | okul), data = veri)
performance::icc(m0)

15.2 Adım 2 — L1 Sabit Etkileri Ekle

Yap: L1 yordayıcılarını sabit etki olarak ekle; eğimler henüz rastgele değil.

Elde et: L1 değişkenlerinin anlamlılığı, L1 Pseudo \(R^2\) (sığ varyans düşüşü).

m1 <- lmer(Y ~ X1 + X2 + (1 | okul), data = veri, REML = FALSE)
anova(m0, m1)

15.3 Adım 3 — L2 Sabit Etkileri Ekle

Yap: L2 yordayıcılarını ekle. “Varyans bileşeni modeli” oluşur.

Elde et: L2 yordayıcılarının anlamlılığı, L2 Pseudo \(R^2\) (kesişim varyansındaki düşüş).

m2 <- lmer(Y ~ X1 + X2 + W1 + W2 + (1 | okul), data = veri, REML = FALSE)
anova(m1, m2)

15.4 Adım 4 — Rastgele Eğimleri Değerlendir

Yap: Kuramsal olarak gruplar arası değişmesi beklenen L1 eğimlerini rastgele tut.

Elde et: Eğim varyansının (\(\tau_{11}\)) anlamlılığı, kesişim-eğim kovaryansı, uyum iyileşmesi.

m3 <- lmer(Y ~ X1 + X2 + W1 + W2 + (1 + X1 | okul),
           data = veri, REML = FALSE)
anova(m2, m3)

15.5 Adım 5 — Çapraz Düzey Etkileşimleri

Yap: Adım 4’te anlamlı rastgele eğim bulduysan, bu varyansı L2 değişkenleriyle açıkla.

Elde et: Moderasyon etkisinin anlamlılığı (\(\gamma_{11}\)), eğim varyansında düşüş (\(R^2_{\text{slope}}\)).

m4 <- lmer(Y ~ X1 * W1 + X2 + W2 + (1 + X1 | okul),
           data = veri, REML = FALSE)
anova(m3, m4)

# Nihai modelde raporlama için REML'e geçin:
m4_final <- update(m4, REML = TRUE)
summary(m4_final)

16 Yorumlama ve Raporlama Standartları

Dedrick ve arkadaşları (2009), HLM raporlarındaki sistematik eksiklikleri belgelemişlerdir. İyi bir rapor şu bileşenleri eksiksiz içermelidir.

16.1 Yöntem Bölümünde Raporlanacaklar

  • Yazılım ve paket sürümü (örn. “R 4.3.1, lme4 1.1-34”)
  • Kestirim yöntemi: REML mi ML mi? Neden?
  • Serbestlik derecesi yaklaşımı: Satterthwaite mi Kenward-Roger mı?
  • Merkezleme stratejisi: L1 için CGM mi CWC mi? Neden? (Özellikle çapraz düzey etkileşim testinde kritik.)
  • Model kurma sırası: Boş → L1 → L2 → Rastgele eğim → Çapraz düzey.
  • Kayıp veri stratejisi: Listwise? FIML? MI? PV pooling?
  • Örneklem ağırlıkları: Kullanıldıysa hangi düzeyde ve hangi paketle?

16.2 Veri Yapısı Raporlanması

  • Her düzeyde \(n\) (örn. “65 okul içinde yuvalanmış 4.059 öğrenci”)
  • Küme büyüklüğü dağılımı (min, ortanca, maks)
  • Eksik veri oranları ve kalıpları
  • Varsayım sınama sonuçları (özet)

16.3 Standart Tablo Formatı

Raporlanan HLM tablosu genellikle sütunlarda farklı modelleri, satırlarda parametre gruplarını gösterir:

Parametre Boş Model Koşullu L1 Koşullu L1+L2 Tam Model
Sabit Etkiler
\(\gamma_{00}\)
\(\gamma_{10}\)
\(\gamma_{01}\)
\(\gamma_{11}\)
Rastgele Etkiler
\(\sigma^2\) (L1)
\(\tau_{00}\)
\(\tau_{11}\)
\(\tau_{01}\)
Uyum
Deviance
AIC
BIC
Türetilmiş
ICC
\(R^2_{\text{L1}}\)
\(R^2_{\text{L2}}\)

R’da bu tablo sjPlot::tab_model() veya modelsummary::modelsummary() ile otomatik üretilebilir.

16.4 Sabit Etkilerin Yorumu

Katsayıların yorumu merkezleme seçimine sıkıca bağlıdır:

  • CGM kullanıldıysa: *“Evrenin genel ortalama* \(X\) düzeyindeki bir bireyde, \(W\)’deki 1 birimlik artış \(Y\)’de \(\gamma_{01}\) birimlik değişimle ilişkilidir.”
  • CWC kullanıldıysa: *“Kendi okulunun ortalama* \(X\) düzeyindeki bir bireyde…”

16.5 Rastgele Etkilerin Yorumu

  • \(\tau_{00}\) anlamlı ⇒ okul ortalamaları anlamlı derecede farklılaşıyor.
  • \(\tau_{11}\) anlamlı ⇒ \(X\)’in etkisi okuldan okula değişiyor — çapraz düzey etkileşim araştırmak mantıklı.
  • Olası değerler aralığı (\(\gamma_{10} \pm 1.96\sqrt{\tau_{11}}\)): aralığın sıfırı kapsaması “bazı okullarda pozitif, bazılarında negatif etki” anlamına gelir — önemli bir bulgudur.

17 Sık Yapılan Hatalar

1. ICC küçük diye HLM’yi atlamak. Dizayn etkisi formülü asıl kılavuzdur.

2. Sabit etki farkı olan modelleri REML ile LRT ile karşılaştırmak. Geçersizdir; ML kullanın.

3. Rastgele eğim varyans testlerini klasik \(\chi^2\) ile değerlendirmek. Bu sınır testleridir; sonuç muhafazakârdır.

4. Gereksiz rastgele etki eklemek. Kuramsal gerekçe yoksa model yakınsamaz veya singular fit verir. isSingular(model) kontrolü yapın.

5. Çapraz düzey etkileşimde CGM kullanmak. Within ve between etkiler karışır (conflation); CWC + grup ortalaması doğru yaklaşımdır.

6. PV’leri ortalamasını alıp tek puan olarak kullanmak. Ölçüm belirsizliği kaybolur; standart hatalar yanlı olur. Rubin kurallarını uygulayın.

7. Örneklem ağırlıklarını göz ardı etmek. Büyük ölçekli veri setlerinde popülasyon temsiliyeti kaybolur; yanlı kestirim ve Tip I hata enflasyonu ortaya çıkar.

8. Yetersiz L2 birimi ile çalışmak. \(J < 30\) olduğunda varyans bileşeni kestirimleri güvenilmez. Tercihen \(J \geq 50\), ideal olarak \(J \geq 100\).

9. Kesişim yorumunu merkezleme olmaksızın yapmak. \(X = 0\) anlamsız bir durumsa, kesişim raporu okuyucuyu yanıltır.

10. Farklı \(N\) değerli modelleri bilgi kriterleriyle karşılaştırmak. Listwise deletion yapan modeller farklı N üretiyorsa AIC/BIC karşılaştırılamaz.


18 Özet

1. Veri yuvalanmış mı? → Evet → HLM düşün.

2. Boş model kur, ICC hesapla. → Sadece ICC’ye değil, DEFF’e bak.

3. L1 yordayıcılarını ekle (sabit). → LRT ile (ML) anlamlı mı?

4. L2 yordayıcılarını ekle. → LRT ile (ML) anlamlı mı? L2 varyansı azaldı mı?

5. Kuramsal gerekçeli L1 eğimleri için rastgele eğim dene.\(\tau_{11}\) anlamlı mı? Varyans aralığı sıfırı içeriyor mu?

6. Rastgele eğim anlamlıysa çapraz düzey etkileşim ekle. → Moderasyon anlamlı mı? \(\tau_{11}\) ne kadar azaldı?

7. Nihai modelde REML ile kestirimleri yeniden hesapla. → Raporlama için.

8. Varsayım tanıları.performance::check_model(), L2 normalliği için Mahalanobis.

9. Etki büyüklüğü. → Marjinal/Koşullu \(R^2\), düzeye özgü Pseudo \(R^2\), gerekiyorsa Cohen’s d.

10. Raporla. → Dedrick et al. önerileri + merkezleme + kestirim yöntemi + kayıp veri stratejisi.


Kaynakça

Enders, C. K. ve Tofighi, D. (2007). Centering predictor variables in cross-sectional multilevel models: A new look at an old issue. Psychological Methods, 12(2), 121–138.

Finch, W. H. ve Bolin, J. E. (2017). Multilevel modeling using Mplus. CRC Press.

Finch, W. H., Bolin, J. E. ve Kelley, K. (2024). Multilevel modeling using R (3. baskı). CRC Press.

Heck, R. H., Thomas, S. L. ve Tabata, L. N. (2014). Multilevel and longitudinal modeling with IBM SPSS (2. baskı). Routledge.

Hox, J. J., Moerbeek, M. ve van de Schoot, R. (2018). Multilevel analysis: Techniques and applications (3. baskı). Routledge.

Huang, F. L. (2022). Practical multilevel modeling using R. SAGE Publications.

Raudenbush, S. W. ve Bryk, A. S. (2002). Hierarchical linear models: Applications and data analysis methods (2. baskı). Sage Publications.