Tôi đã thực hiện một biện pháp lặp lại ba chiều ANOVA; những phân tích hậu hoc là hợp lệ?
Đây là một thiết kế cân bằng hoàn toàn (2x2x2) với một trong những yếu tố có số đo lặp lại bên trong chủ thể. Tôi biết các cách tiếp cận đa biến đối với các số đo lặp lại ANOVA trong R, nhưng bản năng đầu tiên của tôi là tiến hành theo kiểu ANOVA aov () đơn giản:
aov.repeated <- aov(DV ~ IV1 * IV2 * Time + Error(Subject/Time), data=data)
DV = biến phản ứng
IV1 = biến độc lập 1 (2 cấp độ, A hoặc B)
IV2 = biến độc lập 2 (2 cấp độ, Có hoặc Không)
IV3 = Thời gian (2 cấp độ, Trước hoặc Sau)
Chủ đề = ID chủ đề (40 tổng số môn học, 20 cho mỗi cấp IV1: nA = 20, nB = 20)
summary(aov.repeated)
Error: Subject
Df Sum Sq Mean Sq F value Pr(>F)
IV1 1 5969 5968.5 4.1302 0.049553 *
IV2 1 3445 3445.3 2.3842 0.131318
IV1:IV2 1 11400 11400.3 7.8890 0.007987 **
Residuals 36 52023 1445.1
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Error: Subject:Time
Df Sum Sq Mean Sq F value Pr(>F)
Time 1 149 148.5 0.1489 0.701906
IV1:Time 1 865 864.6 0.8666 0.358103
IV2:Time 1 10013 10012.8 10.0357 0.003125 **
IV1:IV2:Time 1 852 851.5 0.8535 0.361728
Residuals 36 35918 997.7
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Ngoài ra, tôi đã suy nghĩ về việc sử dụng gói nlme cho kiểu ANOVA:
aov.repeated2 <- lme(DV ~ IV1 * IV2 * Time, random = ~1|Subject/Time, data=data)
summary(aov.repeated2)
Fixed effects: DV ~ IV1 * IV2 * Time
Value Std.Error DF t-value p-value
(Intercept) 99.2 11.05173 36 8.975972 0.0000
IV1 19.7 15.62950 36 1.260437 0.2156
IV2 65.9 15.62950 36 4.216385 0.0002 ***
Time 38.2 14.12603 36 2.704228 0.0104 *
IV1:IV2 -60.8 22.10346 36 -2.750701 0.0092 **
IV1:Time -26.2 19.97722 36 -1.311494 0.1980
IV2:Time -57.8 19.97722 36 -2.893295 0.0064 **
IV1:IV2:Time 26.1 28.25206 36 0.923826 0.3617
Bản năng đầu tiên của tôi về các tương tác 2 chiều đáng kể với Tukey tương phản bằng cách sử dụng glht () từ gói multcomp:
data$IV1IV2int <- interaction(data$IV1, data$IV2)
data$IV2Timeint <- interaction(data$IV2, data$Time)
aov.IV1IV2int <- lme(DV ~ IV1IV2int, random = ~1|Subject/Time, data=data)
aov.IV2Timeint <- lme(DV ~ IV2Timeint, random = ~1|Subject/Time, data=data)
IV1IV2int.posthoc <- summary(glht(aov.IV1IV2int, linfct = mcp(IV1IV2int = "Tukey")))
IV2Timeint.posthoc <- summary(glht(aov.IV2Timeint, linfct = mcp(IV2Timeint = "Tukey")))
IV1IV2int.posthoc
#A.Yes - B.Yes == 0 0.94684
#B.No - B.Yes == 0 0.01095 *
#A.No - B.Yes == 0 0.98587 I don't care about this
#B.No - A.Yes == 0 0.05574 . I don't care about this
#A.No - A.Yes == 0 0.80785
#A.No - B.No == 0 0.00346 **
IV2Timeint.posthoc
#No.After - Yes.After == 0 0.0142 *
#Yes.Before - Yes.After == 0 0.0558 .
#No.Before - Yes.After == 0 0.5358 I don't care about this
#Yes.Before - No.After == 0 0.8144 I don't care about this
#No.Before - No.After == 0 0.1941
#No.Before - Yes.Before == 0 0.8616
Vấn đề chính tôi thấy với các phân tích hậu hoc này là một số so sánh không hữu ích cho các giả thuyết của tôi.
Bất kỳ đề xuất cho một phân tích hậu hoc thích hợp được đánh giá rất cao, cảm ơn.
Chỉnh sửa: Câu hỏi và câu trả lời có liên quan hướng đến việc kiểm tra ma trận tương phản thủ công
Error
thuật ngữ của aov()
cách này để xác định đó Time
là yếu tố trong nhóm. Từ Baron Error(subj/(color + shape))
dường như được sử dụng theo cùng một cách.
lme
mô hình, tôi không rõ về cách sử dụng đúng /
. Làm thế nào bạn sẽ xác định Time
là yếu tố trong nhóm như trong Error()
với aov()
?
/
được sử dụng để biểu thị lồng nhau (như thường thấy trong một thử nghiệm chia ô), không giống như cách sử dụng của nó trongError
thuật ngữaov()
chủ yếu chỉ ra cách xây dựng các tầng lỗi .