Sử dụng lmer cho mô hình hiệu ứng hỗn hợp tuyến tính lặp đi lặp lại


41

EDIT 2: Ban đầu tôi nghĩ rằng tôi cần chạy ANOVA hai yếu tố với các biện pháp lặp lại trên một yếu tố, nhưng bây giờ tôi nghĩ rằng một mô hình hiệu ứng hỗn hợp tuyến tính sẽ hoạt động tốt hơn cho dữ liệu của tôi. Tôi nghĩ rằng tôi gần như biết những gì cần phải xảy ra, nhưng vẫn còn bối rối bởi một vài điểm.

Các thí nghiệm tôi cần phân tích trông như thế này:

  • Đối tượng được chỉ định cho một trong một số nhóm điều trị
  • Các phép đo của từng đối tượng được thực hiện trong nhiều ngày
  • Vì thế:
    • Đối tượng được lồng trong điều trị
    • Điều trị được thực hiện với ngày

(mỗi đối tượng chỉ được chỉ định một điều trị và các phép đo được thực hiện cho từng đối tượng mỗi ngày)

Tập dữ liệu của tôi chứa thông tin sau:

  • Chủ đề = yếu tố chặn (yếu tố ngẫu nhiên)
  • Ngày = trong phạm vi đối tượng hoặc các yếu tố đo lặp lại (yếu tố cố định)
  • Điều trị = giữa yếu tố chủ thể (yếu tố cố định)
  • Biến quan sát = đo (phụ thuộc)

CẬP NHẬT OK, vì vậy tôi đã đến và nói chuyện với một nhà thống kê, nhưng anh ấy là người dùng SAS. Anh ấy nghĩ rằng mô hình nên là:

Điều trị + Ngày + Đối tượng (Điều trị) + Ngày * Đối tượng (Điều trị)

Rõ ràng ký hiệu của anh ta khác với cú pháp R, nhưng mô hình này được cho là chiếm:

  • Điều trị (cố định)
  • Ngày (cố định)
  • Điều trị * Tương tác trong ngày
  • Đối tượng lồng trong Điều trị (ngẫu nhiên)
  • Ngày giao nhau với "Chủ đề trong điều trị" (ngẫu nhiên)

Vì vậy, đây có phải là cú pháp chính xác để sử dụng?

m4 <- lmer(Obs~Treatment*Day + (1+Treatment/Subject) + (1+Day*Treatment/Subject), mydata)

Tôi đặc biệt quan tâm đến việc Ngày vượt qua với phần "Chủ đề trong Điều trị" có đúng hay không. Có ai quen thuộc với SAS, hoặc tự tin rằng họ hiểu những gì đang diễn ra trong mô hình của anh ấy, có thể nhận xét về việc liệu nỗ lực buồn của tôi ở cú pháp R có khớp không?

Dưới đây là những nỗ lực trước đây của tôi trong việc xây dựng mô hình và viết cú pháp (được thảo luận trong câu trả lời và nhận xét):

m1 <- lmer(Obs ~ Treatment * Day + (1 | Subject), mydata)

Làm thế nào để tôi đối phó với thực tế là đối tượng được lồng trong điều trị? Làm thế nào m1khác với:

m2 <- lmer(Obs ~ Treatment * Day + (Treatment|Subject), mydata)
m3 <- lmer(Obs ~ Treatment * Day + (Treatment:Subject), mydata)

và là m2m3tương đương (và nếu không, tại sao)?

Ngoài ra, tôi có cần sử dụng nlme thay vì lme4 nếu tôi muốn chỉ định cấu trúc tương quan (như correlation = corAR1) không? Theo các biện pháp lặp đi lặp lại , đối với phân tích các biện pháp lặp lại với các biện pháp lặp lại trên một yếu tố, cấu trúc hiệp phương sai (bản chất của mối tương quan giữa các phép đo của cùng một đối tượng) là rất quan trọng.

Khi tôi đang cố gắng thực hiện một biện pháp lặp lại ANOVA, tôi đã quyết định sử dụng SS loại II; Điều này vẫn còn có liên quan, và nếu vậy, làm thế nào để tôi chỉ định điều đó?

Đây là một ví dụ về dữ liệu trông như thế nào:

mydata <- data.frame(
  Subject  = c(13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 
               34, 35, 36, 37, 38, 39, 40, 62, 63, 64, 65, 13, 14, 15, 16, 17, 18, 
               19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 
               40, 62, 63, 64, 65, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 
               29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 62, 63, 64, 65), 
  Day       = c(rep(c("Day1", "Day3", "Day6"), each=28)), 
  Treatment = c(rep(c("B", "A", "C", "B", "C", "A", "A", "B", "A", "C", "B", "C", 
                      "A", "A", "B", "A", "C", "B", "C", "A", "A"), each = 4)), 
  Obs       = c(6.472687, 7.017110, 6.200715, 6.613928, 6.829968, 7.387583, 7.367293, 
                8.018853, 7.527408, 6.746739, 7.296910, 6.983360, 6.816621, 6.571689, 
                5.911261, 6.954988, 7.624122, 7.669865, 7.676225, 7.263593, 7.704737, 
                7.328716, 7.295610, 5.964180, 6.880814, 6.926342, 6.926342, 7.562293, 
                6.677607, 7.023526, 6.441864, 7.020875, 7.478931, 7.495336, 7.427709, 
                7.633020, 7.382091, 7.359731, 7.285889, 7.496863, 6.632403, 6.171196, 
                6.306012, 7.253833, 7.594852, 6.915225, 7.220147, 7.298227, 7.573612, 
                7.366550, 7.560513, 7.289078, 7.287802, 7.155336, 7.394452, 7.465383, 
                6.976048, 7.222966, 6.584153, 7.013223, 7.569905, 7.459185, 7.504068, 
                7.801867, 7.598728, 7.475841, 7.511873, 7.518384, 6.618589, 5.854754, 
                6.125749, 6.962720, 7.540600, 7.379861, 7.344189, 7.362815, 7.805802, 
                7.764172, 7.789844, 7.616437, NA, NA, NA, NA))

Câu trả lời:


18

Tôi nghĩ rằng cách tiếp cận của bạn là chính xác. Mô hình m1chỉ định một đánh chặn riêng cho từng đối tượng. Mô hình m2thêm một độ dốc riêng cho từng đối tượng. Độ dốc của bạn là trong nhiều ngày vì các đối tượng chỉ tham gia vào một nhóm điều trị. Nếu bạn viết mô hình m2như sau, rõ ràng hơn là bạn lập mô hình chặn và độ dốc riêng cho từng đối tượng

m2 <- lmer(Obs ~ Treatment * Day + (1+Day|Subject), mydata)

Điều này tương đương với:

m2 <- lmer(Obs ~ Treatment + Day + Treatment:Day + (1+Day|Subject), mydata)

Tức là những tác dụng chính của điều trị, ngày và sự tương tác giữa hai người.

Tôi nghĩ rằng bạn không cần phải lo lắng về việc làm tổ miễn là bạn không lặp lại ID chủ đề trong các nhóm điều trị. Mô hình nào là chính xác, thực sự phụ thuộc vào câu hỏi nghiên cứu của bạn. Có lý do để tin rằng độ dốc của các đối tượng khác nhau ngoài hiệu quả điều trị? Bạn có thể chạy cả hai mô hình và so sánh chúng với nhau anova(m1,m2)để xem liệu dữ liệu có hỗ trợ một trong hai mô hình không .

Tôi không chắc chắn những gì bạn muốn thể hiện với mô hình m3? Cú pháp lồng nhau sử dụng một /, ví dụ (1|group/subgroup).

Tôi không nghĩ rằng bạn cần phải lo lắng về sự tự tương quan với một số lượng nhỏ thời gian như vậy.


Điều này LAF không đúng. Điều trị là biến cấp 2, nó không thể được lồng trong Đối tượng.
Patrick Coulombe

Về tự động tương quan và số điểm thời gian: Tôi chỉ hiển thị ba trong dữ liệu ví dụ này, nhưng dữ liệu thực của tôi chứa các quan sát trong 8 ngày khác nhau, vì vậy tôi nghĩ đó có thể là một vấn đề. Bất kỳ ý tưởng làm thế nào để đưa nó vào?
phosphorelated

1
Ngoài ra, bây giờ tôi khá bối rối về việc làm tổ; (1 + Điều trị | Chủ đề) khác với (1 + Điều trị / Chủ đề)? "|" Làm gì có nghĩa là, trong tiếng Anh đơn giản? Tôi không hiểu những lời giải thích tôi đã đọc.
phosphorelated

Chào. Cái gì ở đây là "độ dốc riêng cho từng đối tượng"? bởi vì chủ đề là một biến nhân tố, không phải là biến liên tục.
skan

12

Tôi không cảm thấy đủ thoải mái để bình luận về vấn đề lỗi tự động của bạn (cũng như về các triển khai khác nhau trong lme4 so với nlme), nhưng tôi có thể nói với phần còn lại.

Mô hình của bạn m1là mô hình đánh chặn ngẫu nhiên, trong đó bạn đã bao gồm sự tương tác ngang cấp giữa Điều trị và Ngày (hiệu ứng của Ngày được phép thay đổi giữa các nhóm Điều trị). Để cho phép thay đổi theo thời gian khác nhau giữa những người tham gia (nghĩa là mô hình rõ ràng sự khác biệt của từng cá nhân thay đổi theo thời gian), bạn cũng cần cho phép hiệu ứng của Ngày là ngẫu nhiên . Để làm điều này, bạn sẽ chỉ định:

m2 <- lmer(Obs ~ Day + Treatment + Day:Treatment + (Day | Subject), mydata)

Trong mô hình này:

  • Chặn nếu số điểm dự đoán cho loại tham chiếu điều trị tại Ngày = 0
  • Hệ số cho Ngày là sự thay đổi được dự đoán theo thời gian cho mỗi lần tăng 1 đơn vị tính theo ngày đối với danh mục tham khảo điều trị
  • Các hệ số của hai mã giả cho các nhóm điều trị (được tạo tự động bởi R) là sự khác biệt được dự đoán giữa mỗi nhóm điều trị còn lại và loại tham chiếu tại Day = 0
  • Các hệ số cho hai thuật ngữ tương tác là sự khác biệt về tác động của thời gian (Ngày) đối với điểm số dự đoán giữa loại tham chiếu và các nhóm điều trị còn lại.

Cả hai lần đánh chặn và ảnh hưởng của Ngày đối với điểm số đều là ngẫu nhiên (mỗi đối tượng được phép có điểm dự đoán khác nhau vào Ngày = 0 và thay đổi tuyến tính khác nhau theo thời gian). Hiệp phương sai giữa các giao thoa và sườn cũng đang được mô hình hóa (chúng được phép hiệp phương sai).

Như bạn có thể thấy, việc giải thích các hệ số cho hai biến giả là có điều kiện vào Ngày = 0. Họ sẽ cho bạn biết nếu số điểm dự đoán vào Ngày = 0 cho loại tham chiếu khác biệt đáng kể so với hai nhóm điều trị còn lại. Do đó, nơi bạn quyết định tập trung vào biến Ngày của bạn là rất quan trọng. Nếu bạn tập trung vào Ngày 1, thì các hệ số sẽ cho bạn biết điểm số dự đoán cho danh mục tham chiếu ở Ngày 1 có khác biệt đáng kể so với điểm dự đoán của hai nhóm còn lại hay không. Bằng cách này, bạn có thể thấy nếu có sự khác biệt từ trước giữa các nhóm . Nếu bạn tập trung vào Ngày 3, thì các hệ số sẽ cho bạn biết liệu điểm số dự đoán cho danh mục tham chiếu vào Ngày 3khác biệt đáng kể so với số điểm dự đoán của hai nhóm còn lại. Bằng cách này, bạn có thể thấy nếu có sự khác biệt giữa các nhóm khi kết thúc can thiệp .

Cuối cùng, lưu ý rằng Đối tượng không được lồng trong Điều trị. Ba phương pháp điều trị của bạn không phải là cấp độ ngẫu nhiên của dân số các cấp độ mà bạn muốn tổng quát hóa kết quả của mình - thay vào đó, như bạn đã đề cập, các cấp độ của bạn là cố định và bạn chỉ muốn tổng quát hóa kết quả của mình cho các cấp độ này. (Chưa kể, bạn không nên sử dụng mô hình đa cấp nếu bạn chỉ có 3 đơn vị cấp trên; xem Maas & Hox, 2005.) Thay vào đó, điều trị là một công cụ dự đoán cấp 2, tức là một công cụ dự đoán có giá trị duy nhất trong nhiều ngày (đơn vị cấp 1) cho mỗi môn học. Do đó, nó chỉ được bao gồm như một công cụ dự đoán trong mô hình của bạn.

Tham khảo:
Maas, CJM, & Hox, JJ (2005). Đủ cỡ mẫu cho mô hình đa cấp. Phương pháp luận: Tạp chí phương pháp nghiên cứu châu Âu về khoa học hành vi và xã hội , 1 , 86-92.


1
Không thể ước tính bằng lmer vì số lượng hiệu ứng ngẫu nhiên <= số ngẫu nhiên và phương sai dư có thể không xác định được.
Shuguang

Cấu trúc công thức trong câu trả lời là đúng. Để ghi đè lỗi được đề cập bởi @Shuguang, bạn cần thêm ...,control=lmerControl(check.nobs.vs.nRE="ignore"). xem liên kết này để được giải thích thêm bởi Ben Bolker.
NiuBiBang

Giải thích tốt đẹp. Bạn có thể vui lòng giải thích thêm một chút lý do tại sao "Đối tượng không được lồng trong Điều trị" và tại sao bạn không tạo thuật ngữ lỗi + (Điều trị | Chủ đề) và tại sao không chỉ (1 | Chủ đề) hoặc thậm chí (1 | Điều trị * Ngày )?
skan

Về mặt kỹ thuật, bạn có thể lồng các đối tượng trong điều trị, tuy nhiên nếu dự đoán là một đối tượng sẽ giống nhau cho dù bạn có chạy thử nghiệm bao nhiêu lần thì đó cũng là một hiệu ứng cố định (không phải ngẫu nhiên). Các yếu tố sẽ khác nhau mỗi khi bạn chạy thử nghiệm, chẳng hạn như các đặc điểm riêng của đối tượng - ví dụ: giá trị bắt đầu hoặc phản ứng bình dị của chúng đối với các thay đổi trong điều trị theo thời gian - là các hiệu ứng ngẫu nhiên. (1 + Day|Subject)có nghĩa là một mô hình độ dốc ngẫu nhiên, cho phép giá trị ban đầu của từng đối tượng (Đánh chặn) và tốc độ thay đổi trên kết quả là khác nhau.
llewmills
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.