반복 측정 설계에 대한 분산 분석은 어떻게 계산됩니까? R의 aov () vs lm ()


14

제목은 모든 것을 말하고 혼란스러워합니다. 다음은 R에서 반복 측정 aov ()를 실행하고 동등한 lm () 호출이라고 생각한 것을 실행하지만 다른 오차 잔차를 반환합니다 (제곱의 합은 동일하지만).

aov ()의 잔차와 적합치는 모델에서 사용 된 값입니다. 제곱합은 요약 (my.aov)에보고 된 각 모델 / 잔여 제곱합에 합산되기 때문입니다. 그렇다면 반복 측정 설계에 적용되는 실제 선형 모델은 무엇입니까?

set.seed(1)
# make data frame,
# 5 participants, with 2 experimental factors, each with 2 levels
# factor1 is A, B
# factor2 is 1, 2
DF <- data.frame(participant=factor(1:5), A.1=rnorm(5, 50, 20), A.2=rnorm(5, 100, 20), B.1=rnorm(5, 20, 20), B.2=rnorm(5, 50, 20))

# get our experimental conditions
conditions <- names(DF)[ names(DF) != "participant" ]

# reshape it for aov
DFlong <- reshape(DF, direction="long", varying=conditions, v.names="value", idvar="participant", times=conditions, timevar="group")

# make the conditions separate variables called factor1 and factor2
DFlong$factor1 <- factor( rep(c("A", "B"), each=10) )
DFlong$factor2 <- factor( rep(c(1, 2), each=5) )

# call aov
my.aov <- aov(value ~ factor1*factor2 + Error(participant / (factor1*factor2)), DFlong)

# similar for an lm() call
fit <- lm(value ~ factor1*factor2 + participant, DFlong)

# what's aov telling us?
summary(my.aov)

# check SS residuals
sum(residuals(fit)^2)       # == 5945.668

# check they add up to the residuals from summary(my.aov)
2406.1 + 1744.1 + 1795.46   # == 5945.66

# all good so far, but how are the residuals in the aov calculated?
my.aov$"participant:factor1"$residuals

#clearly these are the ones used in the ANOVA:
sum(my.aov$"participant:factor1"$residuals ^ 2)

# this corresponds to the factor1 residuals here:
summary(my.aov)


# but they are different to the residuals reported from lm()
residuals(fit)
my.aov$"participant"$residuals
my.aov$"participant:factor1"$residuals
my.aov$"participant:factor1:factor2"$residuals

1
이것은 당신이 무엇을 의미하는 경우 난 안 확신 해요,하지만 당신은 또한과의 상호 작용에 맞게 때 당신은 모든 SS를 찾을 수 있습니다 participant처럼anova(lm(value ~ factor1*factor2*participant, DFlong))
스라소니

1
아, 그것은 도움이됩니다. 그래서 모델 lm (value ~ factor1 * factor2 * participant, DFlong)에서 제곱의 합은 실제로 어떻게 계산됩니까? 즉 anova ()는 무엇을하고 있습니까?
trev

답변:


14

그것에 대해 생각하는 한 가지 방법은 IV를 함께 주제 ANOVA 사이에 3 계승으로 상황을 처리하는 것이다 participant, factor1, factor2,과 1의 셀 크기 anova(lm(value ~ factor1*factor2*participant, DFlong))이 3 방향 ANOVA (3 개 주 효과, 3의 모든 효과에 대한 계산 모든 SS 1 차 상호 작용, 1 차 2 차 상호 작용). 각 셀에는 한 사람 만 있기 때문에 전체 모델에는 오류가 없으며 위의 호출 anova()은 F- 검정을 계산할 수 없습니다. 그러나 SS는 설계 내 2 단계 요인과 동일합니다.

anova()실제로 효과에 대한 SS를 어떻게 계산합니까? 순차적 모델 비교 (유형 I) : 문제의 영향이없는 제한된 모델과 해당 효과를 포함하는 무제한 모델에 적합합니다. 이 효과와 관련된 SS는 두 모델 간의 오차 SS의 차이입니다.

# get all SS from the 3-way between subjects ANOVA
anova(lm(value ~ factor1*factor2*participant, DFlong))

dfL <- DFlong   # just a shorter name for your data frame
names(dfL) <- c("id", "group", "DV", "IV1", "IV2")   # shorter variable names

# sequential model comparisons (type I SS), restricted model is first, then unrestricted
# main effects first
anova(lm(DV ~ 1,      dfL), lm(DV ~ id,         dfL))  # SS for factor id
anova(lm(DV ~ id,     dfL), lm(DV ~ id+IV1,     dfL))  # SS for factor IV1
anova(lm(DV ~ id+IV1, dfL), lm(DV ~ id+IV1+IV2, dfL))  # SS for factor IV2

# now first order interactions
anova(lm(DV ~ id+IV1+IV2, dfL), lm(DV ~ id+IV1+IV2+id:IV1,  dfL))  # SS for id:IV1
anova(lm(DV ~ id+IV1+IV2, dfL), lm(DV ~ id+IV1+IV2+id:IV2,  dfL))  # SS for id:IV2
anova(lm(DV ~ id+IV1+IV2, dfL), lm(DV ~ id+IV1+IV2+IV1:IV2, dfL))  # SS for IV1:IV2

# finally the second-order interaction id:IV1:IV2
anova(lm(DV ~ id+IV1+IV2+id:IV1+id:IV2+IV1:IV2,            dfL),
      lm(DV ~ id+IV1+IV2+id:IV1+id:IV2+IV1:IV2+id:IV1:IV2, dfL))

이제 id:IV1제한 모델의 오류 SS에서 제한되지 않은 모델의 오류 SS를 빼서 교호 작용과 관련된 효과 SS를 확인하겠습니다 .

sum(residuals(lm(DV ~ id+IV1+IV2,        dfL))^2) -
sum(residuals(lm(DV ~ id+IV1+IV2+id:IV1, dfL))^2)

이제 "원시"효과 SS가 모두 있으므로 이제 효과 SS를 테스트하기 위해 올바른 오류 항을 선택하여 개체 내 테스트를 구축 할 수 있습니다. 예를 들어 factor1의 상호 작용 효과 SS에 대해 효과 SS를 테스트합니다 participant:factor1.

모델 비교 접근법에 대한 훌륭한 소개를 위해 Maxwell & Delaney (2004)를 추천합니다. 실험 설계 및 데이터 분석.


훌륭한 답변, 그것은 실제로 분산 분석이 무엇을하는지 이해하는 데 실제로 도움이되었습니다! 책 참조도 감사합니다!
trev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.