Mô hình hỗn hợp nhiều so sánh cho sự tương tác giữa dự đoán liên tục và phân loại


11

Tôi muốn sử dụng lme4để phù hợp với hồi quy hiệu ứng hỗn hợp và multcompđể tính toán các so sánh cặp. Tôi có một bộ dữ liệu phức tạp với nhiều yếu tố dự đoán liên tục và phân loại, nhưng câu hỏi của tôi có thể được chứng minh bằng cách sử dụng bộ ChickWeightdữ liệu tích hợp làm ví dụ:

m <- lmer(weight ~ Time * Diet + (1 | Chick), data=ChickWeight, REML=F)

Timelà liên tục và Dietđược phân loại (4 cấp độ) và có nhiều Chicks cho mỗi chế độ ăn kiêng. Tất cả các con gà con bắt đầu có cùng trọng lượng, nhưng chế độ ăn uống của chúng (có thể) ảnh hưởng đến tốc độ tăng trưởng của chúng, vì vậy các Dietlần chặn phải (ít nhiều) giống nhau, nhưng độ dốc có thể khác nhau. Tôi có thể có được các so sánh theo cặp cho hiệu ứng đánh chặn Dietnhư thế này:

summary(glht(m, linfct=mcp(Diet = "Tukey")))

và, thực sự, chúng không khác biệt đáng kể, nhưng làm thế nào tôi có thể thực hiện thử nghiệm tương tự cho Time:Diethiệu ứng? Chỉ cần đặt thuật ngữ tương tác sẽ mcptạo ra lỗi:

summary(glht(m, linfct=mcp('Time:Diet' = "Tukey")))
Error in summary(glht(m, linfct = mcp(`Time:Diet` = "Tukey"))) : 
  error in evaluating the argument 'object' in selecting a method for function
 'summary': Error in mcp2matrix(model, linfct = linfct) : 
Variable(s) Time:Diet have been specified in linfct but cannot be found in model’! 

Nó có Time*Diet, đó chỉ là một sự đơn giản hóa Time + Diet + Time:Diet. Sử dụng anova(m)hoặc summary(m)xác nhận rằng thuật ngữ tương tác có trong mô hình.
Dan M.

Câu trả lời:


8

Theo mặc định, lmercoi mức tham chiếu của một yếu tố dự đoán phân loại làm đường cơ sở và ước tính các tham số cho các mức khác. Vì vậy, bạn nhận được một số so sánh cặp trong đầu ra mặc định và bạn có thể có được các so sánh khác bằng cách sử dụng relevelđể xác định một mức tham chiếu mới và điều chỉnh lại mô hình. Điều này có lợi thế là cho phép bạn sử dụng so sánh mô hình hoặc MCMC để lấy giá trị p, nhưng không chính xác cho nhiều so sánh (mặc dù sau đó bạn có thể áp dụng hiệu chỉnh của mình).

Để sử dụng multcomp, bạn cần xác định ma trận tương phản. Mỗi hàng trong ma trận tương phản biểu thị các trọng số cho các hiệu ứng bạn nhận được trong đầu ra mô hình mặc định, bắt đầu bằng Chặn. Vì vậy, nếu bạn muốn có một hiệu ứng đã được bao gồm trong đầu ra cơ bản, bạn chỉ cần đặt "1" vào vị trí tương ứng với hiệu ứng đó. Vì các ước tính tham số có liên quan đến một mức tham chiếu chung, bạn có thể có được sự so sánh giữa hai cấp độ khác bằng cách đặt trọng số của một thành "-1" và của "1" khác. Đây là cách nó sẽ hoạt động cho các Time:Dietđiều khoản trong ChickWeightví dụ:

contrast.matrix <- rbind("Time:Diet1 vs. Time:Diet2" =  c(0, 0, 0, 0, 0, 1, 0, 0),
                           "Time:Diet1 vs. Time:Diet3" =  c(0, 0, 0, 0, 0, 0, 1, 0),
                           "Time:Diet1 vs. Time:Diet4" =  c(0, 0, 0, 0, 0, 0, 0, 1),
                           "Time:Diet2 vs. Time:Diet3" =  c(0, 0, 0, 0, 0, -1, 1, 0),
                           "Time:Diet2 vs. Time:Diet4" =  c(0, 0, 0, 0, 0, -1, 0, 1),
                           "Time:Diet3 vs. Time:Diet4" =  c(0, 0, 0, 0, 0, 0, -1, 1))
summary(glht(m, contrast.matrix))

Caveat emptor: Cách tiếp cận này dường như sử dụng xấp xỉ bình thường để lấy giá trị p, có phần chống bảo thủ, và sau đó áp dụng một số hiệu chỉnh cho nhiều so sánh. Kết quả cuối cùng là phương pháp này cho phép bạn dễ dàng truy cập vào nhiều ước tính tham số cặp và lỗi tiêu chuẩn như bạn muốn, nhưng giá trị p có thể hoặc không thể là điều bạn muốn.

(Cảm ơn Scott Jackson từ r-ling-lang-L đã giúp đỡ về việc này)

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.