एक एनोवा को दोहराया उपायों के डिजाइन के लिए कैसे गणना किया जाता है: आर में एओवी () बनाम एलएम ()


14

शीर्षक यह सब कहता है, और मैं भ्रमित हूं। निम्नलिखित आर में एक दोहराया उपायों एनओवी () चलाता है, और जो मैंने सोचा था कि एक बराबर एलएम () कॉल चलाता है, लेकिन वे अलग-अलग त्रुटि अवशिष्ट (हालांकि वर्गों के योग समान हैं) वापस करते हैं।

स्पष्ट रूप से एनओवी () से अवशिष्ट और फिट किए गए मान मॉडल में उपयोग किए जाते हैं, क्योंकि उनके वर्गों के जोड़ प्रत्येक मॉडल में जोड़ते हैं / सारांश में अवशेषों के अवशेष (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
मुझे यकीन नहीं है कि यह वही है जो आप का मतलब है, लेकिन आप सभी एसएस को पाएंगे जब आप भी बातचीत को फिट करते हैं participant, जैसे किanova(lm(value ~ factor1*factor2*participant, DFlong))
caracal

1
आह कि मॉडल लम (मान ~ फैक्टर 1 * फैक्टर 2 * प्रतिभागी, डीएफलॉन्ग) से मददगार, ठीक है, वास्तव में वर्गों की गणना कैसे की जाती है? यानी अनोवा () क्या कर रही है?
trev

जवाबों:


14

एक तरह से इसके बारे में सोचने के लिए IVs के साथ विषयों एनोवा के बीच 3 भाज्य के रूप में स्थिति के इलाज के लिए है participant, factor1, factor2, और 1. की एक कोशिका के आकार anova(lm(value ~ factor1*factor2*participant, DFlong))यह 3-जिस तरह से एनोवा (3 मुख्य प्रभाव, 3 में सभी प्रभावों के लिए गणना सभी एसएस प्रथम-क्रम इंटरैक्शन, 1 सेकंड-ऑर्डर इंटरैक्शन)। चूंकि प्रत्येक सेल में केवल 1 व्यक्ति है, पूर्ण मॉडल में कोई त्रुटि नहीं है, और उपरोक्त कॉल anova()एफ-परीक्षणों की गणना नहीं कर सकता है। लेकिन एसएस डिजाइन के भीतर 2-भाज्य के समान हैं।

anova()वास्तव में एक प्रभाव के लिए एसएस की गणना कैसे की जाती है ? अनुक्रमिक मॉडल तुलनाओं के माध्यम से (प्रकार I): यह प्रश्न में प्रभाव के बिना एक प्रतिबंधित मॉडल और एक अप्रतिबंधित मॉडल को फिट करता है जिसमें यह प्रभाव शामिल है। इस आशय के साथ जुड़े एसएस दोनों मॉडलों के बीच त्रुटि एसएस में अंतर है।

# 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प्रतिबंधित मॉडल के त्रुटि एसएस से अप्रतिबंधित मॉडल के त्रुटि एसएस को घटाकर बातचीत के साथ जुड़े प्रभाव एसएस की जांच करें ।

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

अब जब आपके पास सभी "कच्चे" प्रभाव एसएस हैं, तो आप किसी भी कंपनी के खिलाफ परीक्षण करने के लिए सही त्रुटि शब्द चुनकर भीतर-विषय परीक्षण का निर्माण कर सकते हैं। जैसे, factor1बातचीत प्रभाव एसएस के खिलाफ प्रभाव एसएस का परीक्षण करें participant:factor1

मॉडल तुलना दृष्टिकोण के लिए एक उत्कृष्ट परिचय के लिए, मैं मैक्सवेल और डेलाने (2004) की सलाह देता हूं। डिजाइनिंग के प्रयोग और डेटा का विश्लेषण।


महान जवाब, कि वास्तव में मेरी मदद की है अंत में समझने के लिए कि एक एनोवा क्या कर रही है! पुस्तक संदर्भ के लिए भी धन्यवाद!
trev
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.