Eğitim öğretim olarak 9.haftadanın ödevi bu ama bir hafta dersimiz iptal olmuştu. Bir hafta da vize sınavı olduk ama ben takip edebilmek için işlenen derslere hafta sayıyorum.

7. HAFTA TEKRARI

Normal regresyonda her gözlem birbirinden bağımsız diye varsayarız ama gerçek hayatta veriler iç içe geçmiş (yuvalanmış) yapıdadır. Öğrenciler sınıfların içinde, sınıflar okulların içinde. Aynı sınıftaki çocuklar birbirine benzer çünkü aynı öğretmeni dinliyorlar, aynı ortamı paylaşıyorlar. İşte bu benzerlik yüzünden normal regresyon bozuluyor aslında.

HLM = bu iç içe geçmişliği hesaba katan regresyondur

Yanlışlıkla normal regresyon yaparsak ne olur?

  • Standart hatalar küçük çıkıyor. Gözlemler bağımsız değil ama öyleymiş gibi davranıyor. Her şey anlamlı görünüyor.
  • Tip I hata şişiyor aslında anlamsız etkiler anlamlı çıkıyor. Sahte bulgular üretiyoruz.
  • Bilgi kaybı.
    • O zaman okul ortalaması alayım dersek → grup içi varyansı göz ardı ederiz (aggregation hatası)
    • Okul değişkenini her öğrenciye kopyalayayım dersek → bağımsızlığı daha da bozarız (disaggregation hatası)

Yuvalanmış yapı

Düzey 1 (L1) = en alt birim. Öğrenci, hasta, ölçüm zamanı.

Düzey 2 (L2) = gruplama birimi. Okul, klinik, birey (boylamsal veride).

Yani: öğrenciler okulların içinde.

İndeksleme: Y_ij = j. okuldaki i. öğrencinin puanı.

İki tip yuvalanma var:

  • Bağlamsal model
    • Öğrenciler (L1) okullarda (L2). Derste popular2 verisi böyleydi.
  • Büyüme modeli
    • Tekrarlı ölçümler (L1) bireylerin (L2) içinde. Boylamsal veri. Aşağıda sleepstudy böyle çünkü aynı bireyin içinde uyku verileri.

ICC

ICC (Sınıfiçi Korelasyon Katsayısı) = toplam varyansın yüzde kaçı gruplar arasından geliyor?

Formül: ρ = τ₀₀ / (τ₀₀ + σ²)

  • τ₀₀ = gruplar arası varyans (okullar birbirinden ne kadar farklı)
  • σ² = grup içi varyans (aynı okuldaki öğrenciler birbirinden ne kadar farklı)

ÖRNEK::: ICC = .36 diyorsa → varyansın %36’sı okullar arasından, %64’ü öğrenciler arasından. Yani ICC aslında birey değil küme etkisini söyler yani aynı okuldan rastgele iki öğrenci seçersem, puanları arasındaki beklenen korelasyon .36.

ICC küçükse HLM’ye gerek olabilir çünkü DEFF = 1 + (n̄ - 1) × ρ. ICC = .01 bile olsa küme büyüklüğü 200 ise DEFF = 2.99 → standart hatalar 3 kat büyütüldü gibi bişi oluyor

Sabit etki / rastgele etki

  • Sabit etki (γ)
    • Tüm gruplar için aynı olan katsayı. Klasik regresyon katsayısı gibi düşün. Evrendeki genel ortalama
  • Rastgele etki (u)
    • Her grubun bu genel ortalamadan ne kadar saptığı. Bir dağılımdan çekilir: u ~ N(0, τ). Modelin tahmin ettiği şey u’nun kendisi değil, u’nun varyansı (τ)
  • β₀j = γ₀₀ + u₀j demek: j. okulun kesişimi = genel ortalama + o okulun sapması.

Shrinkage

Küçük örneklemli gruplarda OLS çok dağınık tahmin verir. HLM bu grupların tahminlerini genel ortalamaya doğru çeker (shrinkage). Verisi az olan gruplar daha çok çekilir, verisi çok olanlar daha az. Buna partial pooling deniyor.

Modeller

  • Model 0 (Boş model): Yordayıcı yok, sadece varyansı bölüyorsun. ICC çıkar.

    • Gruplar farklılaşıyor mu?
  • Model 1 (Rastgele katsayı): L1’e yordayıcı ekle, hem kesişim hem eğim rastgele.

    • X’in etkisi gruptan gruba değişiyor mu?
  • Model 2 (Tam model): L2’ye yordayıcı ekle. Çapraz düzey etkileşim (γ₁₁)

    • Bir üst düzey değişken, alt düzey ilişkisini nasıl etkiliyor?

Merkezleme

SES = 0 diye bir şey yok. Merkezleme yapılmazsa kesişimin hiçbir anlamı yok.

  • CGM (genel ortalama merkezleme): Puandan genel ortalama çıkarılır.
    • Kesişim = ortalama X’e sahip biri.
  • CWC (grup ortalaması merkezleme): Puandan kendi grubunun ortalaması çıkarılır.

NOT:::: Çapraz düzey etkileşim varsa → CWC + grup ortalamasını L2’ye ekle. CGM kullanırsan within ve between karışır.

ML / REML

  • ML: Varyansları biraz küçük tahmin eder. Model karşılaştırma için zorunlu (sabit etki farkı varsa).
  • REML: Varyansları düzgün tahmin eder. Nihai rapor için.

NOT::::: ML ile karşılaştırmada kullanılıe → nihai modeli REML ile raporlanır

Model karşılaştırma

  • Deviance = -2 × log(L). Küçük olan daha iyi.
  • İç içe modeller: LRT (ki-kare fark testi). anova(m0, m1).
  • AIC/BIC: küçük olan daha iyi.

FARKLI VERİ SETİ İLE UYGULAMA: sleepstudy

İleride boylamsal veri ile yapmak istediğim çalışmalar için tekrarlı ölçüm olan bu veri seti önerisi youtube’dan alınmıştır.

lme4 paketinin kendi sleepstudy verisini kullanacağım. 18 kişi 10 gün uyku kısıtlaması deneyine katılmış. Her gün reaksiyon süreleri ölçülmüş. tekrarlı ölçümler (L1 = gün) bireyler (L2 = kişi) içinde yuvalanmış.

library(lme4)
library(lmerTest)
library(dplyr)
library(ggplot2)
library(knitr)
library(performance)
data(sleepstudy)
head(sleepstudy)
##   Reaction Days Subject
## 1      250    0     308
## 2      259    1     308
## 3      251    2     308
## 4      321    3     308
## 5      357    4     308
## 6      415    5     308
str(sleepstudy)
## 'data.frame':    180 obs. of  3 variables:
##  $ Reaction: num  250 259 251 321 357 ...
##  $ Days    : num  0 1 2 3 4 5 6 7 8 9 ...
##  $ Subject : Factor w/ 18 levels "308","309","310",..: 1 1 1 1 1 1 1 1 1 1 ...

r length(unique(sleepstudy$Subject)) katılımcı, toplam r nrow(sleepstudy) gözlem. Her katılımcıdan 10 gün ölçüm alınmış

sleepstudy %>%
  group_by(Subject) %>%
  summarise(n = n(), 
            ort_rt = round(mean(Reaction), 1),
            sd_rt = round(sd(Reaction), 1)) %>%
  head(10) %>%
  kable()
Subject n ort_rt sd_rt
308 10 342 79.8
309 10 215 10.8
310 10 231 21.9
330 10 303 22.9
331 10 309 27.2
332 10 307 64.3
333 10 316 30.1
334 10 295 41.9
335 10 250 13.8
337 10 376 59.6

Bireysel eğriler

ggplot(sleepstudy, aes(x = Days, y = Reaction)) +
  geom_line(alpha = 0.6) +
  geom_point(size = 1.5, alpha = 0.6) +
  facet_wrap(~ Subject, ncol = 6) +
  theme_minimal() +
  labs(x = "Gün", y = "Reaksiyon süresi")

Bazıları hızlı kötüleşiyor, bazıları stabil. Başlangıç düzeyleri de farklı. hem kesişim hem eğim kişiden kişiye değişiyor.

Model 0

m0 <- lmer(Reaction ~ 1 + (1 | Subject), data = sleepstudy)
summary(m0)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: Reaction ~ 1 + (1 | Subject)
##    Data: sleepstudy
## 
## REML criterion at convergence: 1904
## 
## Scaled residuals: 
##    Min     1Q Median     3Q    Max 
## -2.498 -0.550 -0.148  0.512  3.345 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  Subject  (Intercept) 1278     35.8    
##  Residual             1959     44.3    
## Number of obs: 180, groups:  Subject, 18
## 
## Fixed effects:
##             Estimate Std. Error     df t value Pr(>|t|)    
## (Intercept)   298.51       9.05  17.00      33   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
vc <- as.data.frame(VarCorr(m0))
tau00 <- vc$vcov[1]
sigma2 <- vc$vcov[2]
icc_val <- tau00 / (tau00 + sigma2)
cat("τ₀₀", round(tau00, 2), "\n")
## τ₀₀ 1278
cat("σ²", round(sigma2, 2), "\n")
## σ² 1959
cat("ICC", round(icc_val, 3), "\n")
## ICC 0.395

Model 1

m1 <- lmer(Reaction ~ Days + (1 + Days | Subject), data = sleepstudy)
summary(m1)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: Reaction ~ Days + (1 + Days | Subject)
##    Data: sleepstudy
## 
## REML criterion at convergence: 1744
## 
## Scaled residuals: 
##    Min     1Q Median     3Q    Max 
## -3.954 -0.463  0.023  0.463  5.179 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev. Corr
##  Subject  (Intercept) 612.1    24.74        
##           Days         35.1     5.92    0.07
##  Residual             654.9    25.59        
## Number of obs: 180, groups:  Subject, 18
## 
## Fixed effects:
##             Estimate Std. Error     df t value Pr(>|t|)    
## (Intercept)   251.41       6.82  17.00   36.84  < 2e-16 ***
## Days           10.47       1.55  17.00    6.77  3.3e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##      (Intr)
## Days -0.138
sigma2_m1 <- sigma(m1)^2
R2_L1 <- (sigma2 - sigma2_m1) / sigma2
cat("σ²boş", round(sigma2, 2), "\n")
## σ²boş 1959
cat("σ² modle", round(sigma2_m1, 2), "\n")
## σ² modle 655
cat("L1 Pseudo", round(R2_L1, 3), "\n")
## L1 Pseudo 0.666

Model Karşılaştırma

anova(m0, m1)
## Data: sleepstudy
## Models:
## m0: Reaction ~ 1 + (1 | Subject)
## m1: Reaction ~ Days + (1 + Days | Subject)
##    npar  AIC  BIC logLik -2*log(L) Chisq Df Pr(>Chisq)    
## m0    3 1917 1926   -955      1911                        
## m1    6 1764 1783   -876      1752   159  3     <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Rastgele Etkiler

re <- ranef(m1)$Subject
re$Subject <- rownames(re)
names(re)[1:2] <- c("u0_kesisim", "u1_egim")

ggplot(re, aes(x = u0_kesisim, y = u1_egim)) +
  geom_point(size = 3, color = "blue") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "pink") +
  geom_vline(xintercept = 0, linetype = "dashed", color = "pink") +
  theme_minimal() +
  labs(title = "Her kişinin genel ortalamadan sapması",
       subtitle = "Sağ üst = başlangıçta yavaş + hızlı kötüleşen,Sol alt = başlangıçta hızlı + stabil",
       x = "Kesişim sapması başlangıç düzeyi farkı",
       y = "Eğim sapması kötüleşme hızı farkı")

Model Uyumu

performance::r2(m1)
## # R2 for Mixed Models
## 
##   Conditional R2: 0.799
##      Marginal R2: 0.279

YANSITMA

HLM ne kadar önemli bir konuymuş. Boylamsal veriler, tekrarşlı ölçümler, gurpların iç içeliği gibi çok önemli ve mevcut durumlarda tercih edilmesigerekiyormuş. HLM aslında her grup için ayrı regresyon yap ama sonra hepsini akıllıca birleştir demek aslında ama düz birleştirme değil verisi az olan grupların tahminlerini genel ortalamaya doğru çekerek (shrinkage) dağınıklığı (dağılımı, saçılımı …) azaltıyor. ICC’nin küçük olmasının HLM’yi gereksiz kılmadığını öğrendiğimde şaşırdım çünkü yl da bu şekilde ezber bilgi gibi klavramıştım. Dizayn etkisi formülü bunu çok net gösteriyor: ICC = .01, küme = 200 → DEFF = 3. Yani veride yuvalanma varsa, ICC ne olursa olsun HLM düşünülmeli. sleepstudy ile çalışmak güzeldi çünkü bireysel eğrileri görünce evet, herkesin eğimi farklı diye hemen anlaşılıyor. Derste popular2 bağlamsal modeldi (öğrenci-sınıf), sleepstudy büyüme modeli (ölçüm-birey). İki yapıyı da görmüş oldum. İkincisini bireysel görmek daha kolay oldu neden hlm gerektiğini anlamak. Merkezleme konusu hala tam oturmadı kafamda diğer konularda da kullandığımızda tam anlayamamıştım. Ne zaman CWC ne zaman CGM? Yine de çoklu regresyon-aralıcık-düzenleyicilik konularına göre LR>MLR>HLM gibi zorluk sıralaması yapabilirim. Buradaki yorumlanacak persudo değerlerini daha önce gördüğümüz için daha kolay çıktıları yorumlayabildim ve yegane anladığım şey veri setimizi çok iyi tanımalıyız ve doğru analizi seçmemiz gerekiyormuş.