Vi phạm định mức của giả định dư trong mô hình hỗn hợp tuyến tính


8

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

QQ-cốt truyện không biến đổi

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

Đăng nhập QQ-cốt truyện

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)
}

Hình kết quả


1
Mục tiêu của mô hình là gì? Nếu đó là dự báo tốt nhất hơn bình thường không thành vấn đề. Chỉ có ngoại lệ làm. Có một định lý rằng lm không cần tính chuẩn cho các công cụ ước tính tốt. Nếu nó là cho một bài báo khoa học thì tôi sẽ sử dụng bootstrapping cho xác suất null.
keiv.fly

@ keiv.fly Vâng, đó là cho một bài báo. Trong bước tiếp theo tôi muốn xem liệu biến "tuổi" có được yêu cầu hay không (vì vậy sẽ thêm nhiều mô hình phù hợp và kiểm tra qua anova).
JimGrange

@ keiv.fly, bootstrapping (không phải là số liệu) là một ý tưởng tốt nhưng phải được thực hiện theo cách tôn trọng cấu trúc của dữ liệu. Tạo conditionhiệ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ế)
Ben Bolker

Câu trả lời:


10

Câu trả lời của tôi cho câu hỏi của bạn sẽ là (1) "có" (tôi sẽ lo lắng một chút về mức độ không bình thường ban đầu), (2) "không" (chuyển đổi log dường như đã cải thiện tình hình), (3) N / A (kể từ khi tôi không lo lắng), nhưng nhiều hơn một vài điều để thử nếu bạn đang lo lắng sẽ là:

  • sử dụng robustlmm::rlmer()để làm một LMM mạnh mẽ phù hợp;
  • thử sự phù hợp mà không có các điểm cho số dư cực đoan nhất (thử lattice::qqmath(log_fit,id=0.1,idLabels=~.obs)xác định chúng theo số quan sát) và xem liệu nó có tạo ra nhiều sự khác biệt không
  • hãy thử một chuyển đổi khác để đến gần hơn với Normality (mặc dù tôi đã chơi xung quanh với điều này một chút và nó dường như không có ích)

Tôi hơi ngạc nhiên bởi sự không phù hợp rõ ràng giữa các sim của bạn (những ví dụ này trông xa hơn so với Normality bằng mắt) và kết quả kiểm tra Shapiro (bằng chứng khá mạnh mẽ chống lại giả thuyết nullality về Normality).


Cảm ơn - phản hồi của bạn về Q2 phù hợp với cảm giác ruột của tôi, vì vậy điều đó rất yên tâm.
JimGrange
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.