मैं आमतौर पर बेन के विश्लेषण से सहमत हूं, लेकिन मुझे कुछ टिप्पणी और थोड़ा अंतर्ज्ञान जोड़ने दें।
सबसे पहले, समग्र परिणाम:
- लैटरटेस्ट परिणाम Satterthwaite पद्धति का उपयोग करके सही हैं
- Kenward-Roger विधि भी सही है और Satterthwaite से सहमत है
बेन उस डिजाइन की रूपरेखा तैयार करता है, जिसमें subnum
कुछ group
देर में घोंसला बनाया जाता है direction
और उसके group:direction
साथ पार किया जाता है subnum
। इसका मतलब यह है कि प्राकृतिक त्रुटि शब्द (यानी तथाकथित "एन्ग्लोसिंग एरर स्ट्रैटम") है group
, subnum
जबकि अन्य शब्दों (सहित subnum
) के लिए एनक्लोजिंग एरर स्ट्रैटम अवशिष्ट है।
इस संरचना को एक तथाकथित कारक-संरचना आरेख में दर्शाया जा सकता है:
names <- c(expression("[I]"[5169]^{5191}),
expression("[subnum]"[18]^{20}), expression(grp:dir[1]^{4}),
expression(dir[1]^{2}), expression(grp[1]^{2}), expression(0[1]^{1}))
x <- c(2, 4, 4, 6, 6, 8)
y <- c(5, 7, 5, 3, 7, 5)
plot(NA, NA, xlim=c(2, 8), ylim=c(2, 8), type="n", axes=F, xlab="", ylab="")
text(x, y, names) # Add text according to ’names’ vector
# Define coordinates for start (x0, y0) and end (x1, y1) of arrows:
x0 <- c(1.8, 1.8, 4.2, 4.2, 4.2, 6, 6) + .5
y0 <- c(5, 5, 7, 5, 5, 3, 7)
x1 <- c(2.7, 2.7, 5, 5, 5, 7.2, 7.2) + .5
y1 <- c(5, 7, 7, 3, 7, 5, 5)
arrows(x0, y0, x1, y1, length=0.1)
यहां यादृच्छिक शब्दों को कोष्ठक में संलग्न किया गया है, 0
समग्र माध्य (या अवरोधन) का [I]
प्रतिनिधित्व करता है, त्रुटि शब्द का प्रतिनिधित्व करता है, सुपर-लिपि संख्याएं स्तरों की संख्या हैं और उप-लिपि संख्याएं एक संतुलित डिजाइन मानने वाली स्वतंत्रता की डिग्री की संख्या हैं। आरेख बताता है कि प्राकृतिक त्रुटि शब्द (त्रुटि स्ट्रेटम को घेरना) group
है subnum
और इसके लिए अंशांक df subnum
, जिसके लिए भाजक df के बराबर है group
, 18 है: 20 ऋण 1 df के लिए group
और समग्र अर्थ के लिए 1 df। कारक संरचना आरेखों का अधिक व्यापक परिचय अध्याय 2 में यहां उपलब्ध है: https : //02429.compute.dtu.dk/eBook ।
यदि डेटा बिल्कुल संतुलित थे, तो हम एक SSQ- अपघटन से एफ-परीक्षण का निर्माण करने में सक्षम होंगे जैसा कि प्रदान किया गया है anova.lm
। चूंकि डेटासेट बहुत बारीकी से संतुलित होता है इसलिए हम निम्न प्रकार से अनुमानित एफ-परीक्षण प्राप्त कर सकते हैं:
ANT.2 <- subset(ANT, !error)
set.seed(101)
baseline.shift <- rnorm(length(unique(ANT.2$subnum)), 0, 50)
ANT.2$rt <- ANT.2$rt + baseline.shift[as.numeric(ANT.2$subnum)]
fm <- lm(rt ~ group * direction + subnum, data=ANT.2)
(an <- anova(fm))
Analysis of Variance Table
Response: rt
Df Sum Sq Mean Sq F value Pr(>F)
group 1 994365 994365 200.5461 <2e-16 ***
direction 1 1568 1568 0.3163 0.5739
subnum 18 7576606 420923 84.8927 <2e-16 ***
group:direction 1 11561 11561 2.3316 0.1268
Residuals 5169 25629383 4958
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
यहां सभी F और p मानों की गणना यह मानकर की जाती है कि सभी शर्तों में अवशिष्ट त्रुटि के रूप में अवशिष्ट हैं, और यह सभी लेकिन 'समूह' के लिए सही है। इसके बजाय समूह के लिए 'संतुलित-सही' F -est:
F_group <- an["group", "Mean Sq"] / an["subnum", "Mean Sq"]
c(Fvalue=F_group, pvalue=pf(F_group, 1, 18, lower.tail = FALSE))
Fvalue pvalue
2.3623466 0.1416875
जहाँ हम F -value हर में subnum
MS के बजाय MS का उपयोग करते हैं।Residuals
ध्यान दें कि ये मान Satterthwaite परिणामों से काफी मेल खाते हैं:
model <- lmer(rt ~ group * direction + (1 | subnum), data = ANT.2)
anova(model, type=1)
Type I Analysis of Variance Table with Satterthwaite's method
Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
group 12065.3 12065.3 1 18 2.4334 0.1362
direction 1951.8 1951.8 1 5169 0.3936 0.5304
group:direction 11552.2 11552.2 1 5169 2.3299 0.1270
शेष अंतर डेटा के बिल्कुल संतुलित नहीं होने के कारण हैं।
ओपी के anova.lm
साथ तुलना की जाती है anova.lmerModLmerTest
, जो ठीक है, लेकिन तुलना करने के लिए जैसे हमें समान विरोधाभासों का उपयोग करना पड़ता है। इस मामले में के बीच एक अंतर है anova.lm
और anova.lmerModLmerTest
जब से वे क्रमशः प्रकार मैं और तृतीय डिफ़ॉल्ट रूप से परीक्षण उत्पादन है, और इस डेटासेट के लिए एक (छोटे) प्रकार मैं और तृतीय विरोधाभासों के बीच का अंतर है:
show_tests(anova(model, type=1))$group
(Intercept) groupTreatment directionright groupTreatment:directionright
groupTreatment 0 1 0.005202759 0.5013477
show_tests(anova(model, type=3))$group # type=3 is default
(Intercept) groupTreatment directionright groupTreatment:directionright
groupTreatment 0 1 0 0.5
यदि डेटा सेट को पूरी तरह से संतुलित किया गया था, तो मैं टाइप III कंट्रास्ट के समान ही होगा (जो नमूनों की देखी गई संख्या से प्रभावित नहीं हैं)।
एक अंतिम टिप्पणी यह है कि केनवर्ड-रोजर पद्धति की 'सुस्ती' मॉडल के पुन: फिट होने के कारण नहीं है, लेकिन क्योंकि इसमें टिप्पणियों / अवशिष्टों के सीमांत विचरण-सहसंयोजक मैट्रिक्स के साथ संगणना शामिल है (इस मामले में 5191x5191) जो नहीं है Satterthwaite की विधि के लिए मामला।
मॉडल 2 के बारे में
जैसा कि मॉडल 2 के लिए स्थिति और अधिक जटिल हो जाती है और मुझे लगता है कि दूसरे मॉडल के साथ चर्चा शुरू करना आसान है जहां मैंने 'शास्त्रीय' बातचीत को शामिल किया है subnum
और direction
:
model3 <- lmer(rt ~ group * direction + (1 | subnum) +
(1 | subnum:direction), data = ANT.2)
VarCorr(model3)
Groups Name Std.Dev.
subnum:direction (Intercept) 1.7008e-06
subnum (Intercept) 4.0100e+01
Residual 7.0415e+01
क्योंकि इंटरैक्शन से जुड़ा विचरण अनिवार्य रूप से शून्य है ( subnum
यादृच्छिक मुख्य-प्रभाव की उपस्थिति में ), इंटरैक्शन शब्द का स्वतंत्रता, एफ- वैल्यू और पी- वैल्यू के भाजक डिग्री की गणना पर कोई प्रभाव नहीं पड़ता है :
anova(model3, type=1)
Type I Analysis of Variance Table with Satterthwaite's method
Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
group 12065.3 12065.3 1 18 2.4334 0.1362
direction 1951.8 1951.8 1 5169 0.3936 0.5304
group:direction 11552.2 11552.2 1 5169 2.3299 0.1270
हालाँकि, यदि हम सभी संबंधित SSQ को हटा देते हैं subnum:direction
, subnum
तो इसके लिए एन्क्लोज़िंग त्रुटि स्ट्रैटम subnum
हैsubnum:direction
model4 <- lmer(rt ~ group * direction +
(1 | subnum:direction), data = ANT.2)
अब के लिए प्राकृतिक त्रुटि अवधि group
, direction
और group:direction
है
subnum:direction
और साथ nlevels(with(ANT.2, subnum:direction))
= 40 और चार मापदंडों उन शब्दों के लिए स्वतंत्रता का हर डिग्री के बारे में 36 होना चाहिए:
anova(model4, type=1)
Type I Analysis of Variance Table with Satterthwaite's method
Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
group 24004.5 24004.5 1 35.994 4.8325 0.03444 *
direction 50.6 50.6 1 35.994 0.0102 0.92020
group:direction 273.4 273.4 1 35.994 0.0551 0.81583
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
इन F -tests को 'संतुलित-सही' F -ests के साथ भी लगाया जा सकता है :
an4 <- anova(lm(rt ~ group*direction + subnum:direction, data=ANT.2))
an4[1:3, "F value"] <- an4[1:3, "Mean Sq"] / an4[4, "Mean Sq"]
an4[1:3, "Pr(>F)"] <- pf(an4[1:3, "F value"], 1, 36, lower.tail = FALSE)
an4
Analysis of Variance Table
Response: rt
Df Sum Sq Mean Sq F value Pr(>F)
group 1 994365 994365 4.6976 0.0369 *
direction 1 1568 1568 0.0074 0.9319
group:direction 1 10795 10795 0.0510 0.8226
direction:subnum 36 7620271 211674 42.6137 <2e-16 ***
Residuals 5151 25586484 4967
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
अब Model2 की ओर रुख:
model2 <- lmer(rt ~ group * direction + (direction | subnum), data = ANT.2)
यह मॉडल 2x2 विचरण-कोवरियन मैट्रिक्स के साथ एक जटिल जटिल यादृच्छिक-प्रभाव सहसंयोजक संरचना का वर्णन करता है। डिफ़ॉल्ट पैरामीटर से निपटना आसान नहीं है और हम मॉडल के पुन: पैरामीटर के साथ बेहतर हैं:
model2 <- lmer(rt ~ group * direction + (0 + direction | subnum), data = ANT.2)
यदि हम तुलना model2
करते हैं model4
, तो उनके पास समान रूप से कई यादृच्छिक-प्रभाव हैं; प्रत्येक के लिए 2 subnum
, यानी कुल मिलाकर 2 * 20 = 40। जबकि model4
सभी 40 यादृच्छिक प्रभावों के लिए एक एकल विचरण पैरामीटर model2
निर्धारित करता है , यह निर्धारित करता है कि यादृच्छिक प्रभाव के प्रत्येक subnum
-चरण में एक 2x2 विचरण-सहसंयोजक मैट्रिक्स के साथ द्वि-सामान्य सामान्य वितरण है, जिसके पैरामीटर दिए गए हैं
VarCorr(model2)
Groups Name Std.Dev. Corr
subnum directionleft 38.880
directionright 41.324 1.000
Residual 70.405
यह ओवर-फिटिंग को इंगित करता है, लेकिन चलो एक और दिन के लिए बचाते हैं। महत्वपूर्ण बात यह है कि यहाँ है model4
की एक विशेष दर-मामला है model2
और कि model
है भी का एक विशेष मामला model2
। शिथिल (और सहज रूप से) बोलने (direction | subnum)
में मुख्य प्रभाव के subnum
साथ-साथ बातचीत के साथ जुड़े बदलाव को शामिल या पकड़ लिया जाता है direction:subnum
। यादृच्छिक प्रभावों के संदर्भ में हम इन दो प्रभावों या संरचनाओं को क्रमशः पंक्तियों और पंक्तियों के बीच भिन्नता को कैप्चर करने के रूप में सोच सकते हैं:
head(ranef(model2)$subnum)
directionleft directionright
1 -25.453576 -27.053697
2 16.446105 17.479977
3 -47.828568 -50.835277
4 -1.980433 -2.104932
5 5.647213 6.002221
6 41.493591 44.102056
इस मामले में इन यादृच्छिक प्रभाव अनुमानों के साथ-साथ विचरण पैरामीटर अनुमान दोनों का संकेत है कि हमारे पास वास्तव में केवल subnum
यहां मौजूद (पंक्तियों के बीच भिन्नता) का यादृच्छिक मुख्य प्रभाव है। यह सब किस ओर जाता है कि Satterthwaite हर में स्वतंत्रता की डिग्री है
anova(model2, type=1)
Type I Analysis of Variance Table with Satterthwaite's method
Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
group 12059.8 12059.8 1 17.998 2.4329 0.1362
direction 1803.6 1803.6 1 125.135 0.3638 0.5475
group:direction 10616.6 10616.6 1 125.136 2.1418 0.1458
इन मुख्य-प्रभाव और बातचीत संरचनाओं के बीच एक समझौता है: समूह DenDF 18 पर रहता है ( subnum
डिजाइन द्वारा नेस्टेड ) लेकिन direction
और
group:direction
DenDF 36 ( model4
) और 5169 ( model
) के बीच समझौता कर रहे हैं ।
मुझे नहीं लगता कि यहां कुछ भी इंगित करता है कि Satterthwaite सन्निकटन (या इसके कार्यान्वयन lmerTest में ) दोषपूर्ण है।
केनवर्ड-रोजर विधि के साथ समकक्ष तालिका देता है
anova(model2, type=1, ddf="Ken")
Type I Analysis of Variance Table with Kenward-Roger's method
Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
group 12059.8 12059.8 1 18.000 2.4329 0.1362
direction 1803.2 1803.2 1 17.987 0.3638 0.5539
group:direction 10614.7 10614.7 1 17.987 2.1414 0.1606
यह आश्चर्य की बात नहीं है कि KR और Satterthwaite अलग हो सकते हैं लेकिन सभी व्यावहारिक उद्देश्यों के लिए p -values में अंतर मिनट है। ऊपर मेरे विश्लेषण दर्शाता है कि DenDF
के लिए direction
और group:direction
~ 36 की तुलना में छोटे और शायद यह देखते हुए कि हम मूल रूप से केवल के यादृच्छिक मुख्य प्रभाव है की तुलना में बड़ा नहीं होना चाहिए direction
मौजूद है, यदि ऐसा है तो कुछ भी मुझे लगता है कि यह एक संकेत है कि के.आर. विधि हो जाता है DenDF
बहुत कम इस मामले में। लेकिन ध्यान रखें कि डेटा वास्तव में (group | direction)
संरचना का समर्थन नहीं करता है, इसलिए तुलना थोड़ा कृत्रिम है - यह अधिक दिलचस्प होगा यदि मॉडल वास्तव में समर्थित था।
ezAnova
चेतावनी को समझता हूं क्योंकि आपको 2x2 एनोवा नहीं चलाना चाहिए यदि वास्तव में आपका डेटा 2x2x2 डिज़ाइन से है।