Cập nhật tháng 5 năm 2017 : Hóa ra, một loạt những gì tôi đã viết ở đây là loại sai . Một số cập nhật được thực hiện trong suốt bài viết.
Tôi đồng ý rất nhiều với những gì đã được Ben Bolker nói (cảm ơn vì đã hét to afex::mixed()
) nhưng hãy để tôi thêm một vài suy nghĩ chung chung và cụ thể hơn về vấn đề này.
Tập trung vào các hiệu ứng cố định và ngẫu nhiên và cách báo cáo kết quả
Đối với loại nghiên cứu thử nghiệm được trình bày trong tập dữ liệu mẫu từ Jonathan Baron, bạn sử dụng câu hỏi quan trọng thường là liệu một yếu tố thao túng có ảnh hưởng tổng thể hay không . Ví dụ, chúng ta có tìm thấy một hiệu ứng chính hoặc tương tác tổng thể Task
không? Một điểm quan trọng là trong các tập dữ liệu đó, tất cả các yếu tố đều nằm dưới sự kiểm soát hoàn toàn thử nghiệm và được chỉ định ngẫu nhiên. Do đó, trọng tâm của sự quan tâm thường là các hiệu ứng cố định.
Ngược lại, các thành phần hiệu ứng ngẫu nhiên có thể được xem là tham số "phiền toái" thu được phương sai hệ thống (nghĩa là sự khác biệt giữa các cá nhân về kích thước của hiệu ứng) không nhất thiết quan trọng đối với câu hỏi chính. Từ quan điểm này, đề xuất sử dụng cấu trúc hiệu ứng ngẫu nhiên tối đa như được ủng hộ bởi Barr et al. theo sau một cách tự nhiên. Thật dễ dàng để tưởng tượng rằng một thao tác thử nghiệm không ảnh hưởng đến tất cả các cá nhân theo cùng một cách chính xác và chúng tôi muốn kiểm soát điều này. Mặt khác, số lượng các yếu tố hoặc cấp độ thường không quá lớn do đó nguy cơ quá mức có vẻ tương đối nhỏ.
Do đó, tôi sẽ làm theo gợi ý của Barr et al. và chỉ định cấu trúc hiệu ứng ngẫu nhiên tối đa và báo cáo thử nghiệm các hiệu ứng cố định làm kết quả chính của tôi. Để kiểm tra các hiệu ứng cố định, tôi cũng đề nghị sử dụng afex::mixed()
vì nó báo cáo các thử nghiệm về hiệu ứng hoặc yếu tố (thay vì kiểm tra các tham số) và tính toán các thử nghiệm đó theo cách hơi hợp lý (ví dụ: sử dụng cùng cấu trúc hiệu ứng ngẫu nhiên cho tất cả các mô hình trong đó hiệu ứng duy nhất được loại bỏ, sử dụng độ tương phản tổng bằng không, cung cấp các phương pháp khác nhau để tính giá trị p , ...).
Những gì về dữ liệu ví dụ
Vấn đề với dữ liệu mẫu mà bạn đưa ra là đối với tập dữ liệu này, cấu trúc hiệu ứng ngẫu nhiên tối đa dẫn đến một mô hình không bão hòa vì chỉ có một điểm dữ liệu trên mỗi ô của thiết kế:
> with(df, table(Valence, Subject, Task))
, , Task = Cued
Subject
Valence Faye Jason Jim Ron Victor
Neg 1 1 1 1 1
Neu 1 1 1 1 1
Pos 1 1 1 1 1
, , Task = Free
Subject
Valence Faye Jason Jim Ron Victor
Neg 1 1 1 1 1
Neu 1 1 1 1 1
Pos 1 1 1 1 1
Do đó, lmer
cuộn cảm trên cấu trúc hiệu ứng ngẫu nhiên tối đa:
> lmer(Recall~Task*Valence + (Valence*Task|Subject), df)
Error: number of observations (=30) <= number of random effects (=30) for term
(Valence * Task | Subject); the random-effects parameters and the residual variance
(or scale parameter) are probably unidentifiable
Thật không may, có kiến thức của tôi không có cách nào để thỏa thuận với vấn đề này. Nhưng hãy để tôi phác thảo và thảo luận về một số:
Một giải pháp đầu tiên có thể là loại bỏ độ dốc ngẫu nhiên cao nhất và kiểm tra các hiệu ứng cho mô hình này:
require(afex)
mixed(Recall~Task*Valence + (Valence+Task|Subject), df)
Effect F ndf ddf F.scaling p.value
1 Task 6.56 1 4.00 1.00 .06
2 Valence 0.80 2 3.00 0.75 .53
3 Task:Valence 0.42 2 8.00 1.00 .67
Tuy nhiên, giải pháp này hơi đặc biệt và không quá thúc đẩy.
Cập nhật tháng 5 năm 2017: Đây là cách tiếp cận tôi hiện đang chứng thực. Xem bài đăng trên blog này và bản nháp của chương tôi là đồng tác giả , phần "Cấu trúc hiệu ứng ngẫu nhiên cho các thiết kế ANOVA truyền thống".
Một giải pháp thay thế (và một giải pháp có thể được xem là được ủng hộ bởi cuộc thảo luận của Barr và cộng sự) có thể là luôn luôn loại bỏ các sườn dốc ngẫu nhiên để đạt hiệu quả nhỏ nhất. Tuy nhiên, điều này có hai vấn đề: (1) Chúng ta sử dụng cấu trúc hiệu ứng ngẫu nhiên nào để tìm ra hiệu ứng nhỏ nhất là gì và (2) R miễn cưỡng loại bỏ hiệu ứng bậc thấp như hiệu ứng chính nếu hiệu ứng bậc cao hơn như hiệu ứng tương tác của hiệu ứng này là hiện tại (xem ở đây ). Kết quả là người ta sẽ cần phải thiết lập cấu trúc hiệu ứng ngẫu nhiên này bằng tay và truyền ma trận mô hình được xây dựng như vậy cho cuộc gọi lmer.
Một giải pháp thứ ba có thể là sử dụng một tham số thay thế của phần hiệu ứng ngẫu nhiên, cụ thể là phần tương ứng với mô hình RM-ANOVA cho dữ liệu này. Thật không may (?), lmer
Không cho phép "phương sai âm" vì vậy tham số hóa này không chính xác tương ứng với RM-ANOVA cho tất cả các bộ dữ liệu , xem thảo luận tại đây và các nơi khác (ví dụ ở đây và ở đây ). "Lmer-ANOVA" cho các dữ liệu này sẽ là:
> mixed(Recall~Task*Valence + (1|Subject) + (1|Task:Subject) + (1|Valence:Subject), df)
Effect F ndf ddf F.scaling p.value
1 Task 7.35 1 4.00 1.00 .05
2 Valence 1.46 2 8.00 1.00 .29
3 Task:Valence 0.29 2 8.00 1.00 .76
Với tất cả các vấn đề này, tôi chỉ đơn giản là không sử dụng lmer
để phù hợp với các tập dữ liệu mà chỉ có một điểm dữ liệu trên mỗi ô của thiết kế trừ khi có sẵn giải pháp thỏa thuận hơn cho vấn đề về cấu trúc hiệu ứng ngẫu nhiên tối đa.
Thay vào đó, tôi cũng sẽ vẫn có thể sử dụng ANOVA cổ điển. Sử dụng một trong các hàm bao car::Anova()
trong afex
kết quả sẽ là:
> aov4(Recall~Task*Valence + (Valence*Task|Subject), df)
Effect df MSE F ges p
1 Valence 1.44, 5.75 4.67 1.46 .02 .29
2 Task 1, 4 4.08 7.35 + .07 .05
3 Valence:Task 1.63, 6.52 2.96 0.29 .003 .71
Lưu ý rằng afex
bây giờ cũng cho phép trả về mô hình được trang bị có aov
thể được chuyển qua lsmeans
cho các bài kiểm tra sau hoc (nhưng để kiểm tra các hiệu ứng mà các hiệu ứng được báo cáo car::Anova
vẫn hợp lý hơn):
> require(lsmeans)
> m <- aov4(Recall~Task*Valence + (Valence*Task|Subject), df, return = "aov")
> lsmeans(m, ~Task+Valence)
Task Valence lsmean SE df lower.CL upper.CL
Cued Neg 11.8 1.852026 5.52 7.17157 16.42843
Free Neg 10.2 1.852026 5.52 5.57157 14.82843
Cued Neu 13.0 1.852026 5.52 8.37157 17.62843
Free Neu 11.2 1.852026 5.52 6.57157 15.82843
Cued Pos 13.6 1.852026 5.52 8.97157 18.22843
Free Pos 11.0 1.852026 5.52 6.37157 15.62843
Confidence level used: 0.95