Mixed-Model

線性混合模型中殘差假設違反正態性

  • June 3, 2017

我有一個問題,關於我應該如何關注線性混合模型中殘差假設的正態性可能違反。我有一個相對較小的數據集,在擬合模型後(在 R 中使用“lmer”),Shapiro-Wilks 檢驗顯示殘差與正態分佈存在顯著偏差。我的變量的對數轉換不能令人滿意地處理這個問題。

在我尋找如何處理這個問題的回應時,我遇到了不應該進行正態性測試的建議(請參閱此處類似問題的答案)。相反,建議對具有與我的殘差相同的 N 的隨機正態數據進行 QQ 圖,以查看我的殘差的 QQ 圖是否明顯不同。我發現的其他建議似乎表明推理似乎對各種違反 LMM 假設的行為具有魯棒性 (請參閱此處的博客文章)

我的問題

1)如果這是您的數據,您是否會擔心 LMM 殘差缺乏正態性(請參閱下面的數據和輸出)?

2)如果您擔心,在日誌轉換後您是否仍然擔心(再次,請參閱下面的數據和輸出)?

3)如果以上兩個答案都是“是”,我該如何處理殘差的非正態性?

數據和非轉換分析

# load relevant library
library(lme4)

#--- declare the data
study <- c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 6, 6,
          7, 7, 8, 8, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 13, 13, 
          13, 13, 14, 14, 14, 14, 14, 14, 15, 15, 16, 16, 16, 16, 17, 17)

condition <- c(1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 1, 1, 
              1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 
              2, 2, 1, 1, 2, 2, 3, 3, 1, 1, 1, 1, 2, 2, 1, 1)

age <- rep(c(1, 2), times = length(study) / 2)

congruent <- c(937, 611, 1067, 611, 1053, 943, 1097, 1015, 1155, 974, 860, 594,
              910, 605, 912, 632, 998, 660, 1989, 1176, 1337, 936, 2657, 1234, 
              1195, 999, 1010, 634, 1205, 620, 1154, 909, 1425, 1172, 1388, 
              1084, 641, 407, 1429, 810, 909, 510, 1358, 802, 1132, 639, 
              1501, 703, 1471, 955, 1342, 631, 1178, 676, 1033, 723)

incongruent <- c(1025, 705, 1204, 705, 1119, 1008, 1184, 1046, 1225, 1013, 1308, 
                895, 1234, 901, 1204, 854, 1177, 828, 2085, 1269, 1350, 929, 
                2697, 1231, 1233, 1032, 1062, 679, 1263, 674, 1183, 914, 1458, 
                1184, 1382, 1086, 632, 424, 1510, 871, 978, 568, 1670, 881, 
                1395, 747, 1694, 795, 1504, 999, 2112, 948, 1494, 992, 1039, 
                781)

data <- data.frame(as.factor(study), as.factor(condition), age, congruent, 
                  incongruent)

#--- LMM analysis

# center age
data$age <- scale(data$age, center = TRUE, scale = FALSE)

# fit
fit <- lmer(incongruent ~ congruent + (1|study) + (1|condition), 
           data = data, REML = FALSE)

# plot & test the residual
qqnorm(resid(fit))
qqline(resid(fit))
shapiro.test(resid(fit))

Shapiro-Wilk normality test

data:  resid(fit)
W = 0.74417, p-value = 1.575e-08

非變換 QQ 圖

對數轉換數據

# do the log transform 
data$congruent <- log(data$congruent)
data$incongruent <- log(data$incongruent)

# fit again
log_fit <- lmer(incongruent ~ congruent + (1|study) + (1|condition), 
               data = data, REML = FALSE)

# plot & test the residual
qqnorm(resid(log_fit))
qqline(resid(log_fit))
shapiro.test(resid(log_fit))

Shapiro-Wilk normality test

data:  resid(log_fit)
W = 0.93241, p-value = 0.003732

對數變換的 QQ 圖

模擬正態分佈 QQ 圖

執行這個推薦的模擬,我的對數轉換 QQ 圖看起來與真實正態分佈生成的 QQ 圖並沒有太大的不同,其樣本量與我的數據相同(N = 52):

set.seed(42)
par(mfrow = c(3, 3))
for(i in 1:9){
 x = rnorm(52)
 qqnorm(x)
 qqline(x)
}

結果圖

我對您的問題的回答是(1)“是”(我會擔心最初的非正態性程度),(2)“否”(對數轉換似乎改善了這種情況),(3)不適用(因為我不擔心),但如果您擔心,可以嘗試以下幾件事

  • 用於robustlmm::rlmer()進行穩健的 LMM 擬合;
  • 嘗試沒有給出最極端殘差的點的擬合(嘗試lattice::qqmath(log_fit,id=0.1,idLabels=~.obs)通過觀察數識別它們),看看它是否有很大的不同
  • 嘗試另一種轉換以更接近常態(儘管我玩了一點,但似乎沒有幫助)

我對您的模擬人生(這些例子從肉眼看起來離常態更遠)和夏皮羅測試結果(反對常態零假設的相當有力的證據)之間明顯的不匹配感到有點驚訝。

引用自:https://stats.stackexchange.com/questions/283375

comments powered by Disqus