Tôi có một câu hỏi liên quan đến việc tôi nên quan tâm đến một vi phạm tiềm năng từ tính bình thường của giả định dư trong mô hình hỗn hợp tuyến tính. Tôi có một bộ dữ liệu tương đối nhỏ và sau khi lắp mô hình (sử dụng 'lmer' trong R), thử nghiệm Shapiro-Wilks cho thấy độ lệch đáng kể của phần dư so với phân phối bình thường. Các phép biến đổi log của các biến của tôi không giải quyết vấn đề này một cách thỏa đáng.
Trong quá trình tìm kiếm câu trả lời của mình, tôi đã gặp một lời khuyên rằng các bài kiểm tra về tính quy phạm không nên được thực hiện (xem câu trả lời cho một câu hỏi tương tự ở đây) . Thay vào đó, đề xuất các lô QQ của dữ liệu thông thường ngẫu nhiên có cùng N với số dư của tôi để xem liệu biểu đồ QQ của phần dư của tôi có khác biệt rõ rệt hay không. Một lời khuyên khác mà tôi đã tìm thấy dường như cho thấy rằng suy luận dường như là mạnh mẽ đối với các vi phạm khác nhau về các giả định LMM (xem bài đăng trên blog ở đây) .
Những câu hỏi của tôi
1) Nếu đây là dữ liệu của bạn, bạn có lo ngại về việc thiếu tính quy tắc trong phần dư LMM không (xem dữ liệu & đầu ra bên dưới)?
2) Nếu bạn lo ngại, bạn vẫn lo ngại sau khi chuyển đổi nhật ký (một lần nữa, xem dữ liệu & đầu ra bên dưới)?
3) Nếu câu trả lời là "Có" cho cả hai điều trên, làm thế nào tôi có thể đối phó với sự không bình thường của số dư của mình?
Phân tích dữ liệu & không biến đổi
# 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
Dữ liệu được chuyển đổi
# 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
Mô phỏng phân phối bình thường QQ-lô
Thực hiện mô phỏng được đề xuất này, các lô QQ được chuyển đổi nhật ký của tôi trông không quá giống với các lô được tạo từ phân phối bình thường thực sự với cùng cỡ mẫu với dữ liệu của tôi (N = 52):
set.seed(42)
par(mfrow = c(3, 3))
for(i in 1:9){
x = rnorm(52)
qqnorm(x)
qqline(x)
}
condition
hiệu ứng cố định sẽ giúp ích, sau đó bạn có thể thực hiện bootstrapping phân cấp (nghĩa là lấy mẫu lại các nghiên cứu thay thế, sau đó lấy mẫu lại các giá trị trong các nghiên cứu với thay thế)