मई 2017 को अपडेट करें : जैसा कि यह पता चला है, मैंने यहां जो कुछ भी लिखा है वह एक प्रकार का गलत है । कुछ अपडेट पूरे पोस्ट में किए जाते हैं।
मैं बेन बोल्कर द्वारा पहले ही कही गई बातों से बहुत सहमत हूं (शुक्रिया के लिए धन्यवाद afex::mixed()
) लेकिन मुझे इस मुद्दे पर कुछ और सामान्य और विशिष्ट विचार जोड़ने दें।
स्थिर बनाम यादृच्छिक प्रभावों पर ध्यान केंद्रित करें और परिणामों की रिपोर्ट कैसे करें
जोनाथन बैरन द्वारा निर्धारित उदाहरण डेटा में दर्शाए गए प्रायोगिक अनुसंधान के प्रकार के लिए आप महत्वपूर्ण प्रश्न का उपयोग करते हैं, आमतौर पर एक हेरफेर है या नहीं कारक का समग्र प्रभाव होता है । उदाहरण के लिए, क्या हम एक समग्र मुख्य प्रभाव या बातचीत पाते हैं Task
? एक महत्वपूर्ण बिंदु यह है कि उन डेटा सेटों में आमतौर पर सभी कारक पूर्ण प्रयोगात्मक नियंत्रण में होते हैं और बेतरतीब ढंग से असाइन किए जाते हैं। नतीजतन, ब्याज का ध्यान आमतौर पर निश्चित प्रभावों पर होता है।
इसके विपरीत, यादृच्छिक प्रभाव घटकों को "उपद्रव" मापदंडों के रूप में देखा जा सकता है जो व्यवस्थित विचरण को पकड़ते हैं (अर्थात, प्रभाव के आकार में अंतर-व्यक्तिगत अंतर) जो मुख्य प्रश्न के लिए जरूरी नहीं हैं। इस दृष्टिकोण से बर्र एट अल द्वारा वकालत के रूप में अधिकतम यादृच्छिक प्रभाव संरचना का उपयोग करने का सुझाव। कुछ हद तक स्वाभाविक रूप से। यह कल्पना करना आसान है कि एक प्रयोगात्मक हेरफेर सभी व्यक्तियों को सटीक रूप से प्रभावित नहीं करता है और हम इसके लिए नियंत्रण करना चाहते हैं। दूसरी ओर, कारकों या स्तरों की संख्या आमतौर पर बहुत बड़ी नहीं होती है ताकि ओवरफिटिंग का खतरा तुलनात्मक रूप से छोटा हो।
नतीजतन, मैं बर्र एट अल के सुझाव का पालन करूंगा। और मेरे मुख्य परिणामों के रूप में एक अधिकतम यादृच्छिक प्रभाव संरचना और निश्चित प्रभावों के परीक्षण परीक्षणों को निर्दिष्ट करें। निश्चित प्रभावों का परीक्षण करने के लिए मैं afex::mixed()
इसका उपयोग करने का सुझाव दूंगा क्योंकि यह प्रभावों या कारकों (मापदंडों के परीक्षण के बजाय) के परीक्षणों की रिपोर्ट करता है और उन परीक्षणों की गणना कुछ हद तक समझदार तरीके से करता है (उदाहरण के लिए, सभी मॉडलों के लिए एक ही यादृच्छिक प्रभाव संरचना का उपयोग करता है जिसमें ए एकल प्रभाव को हटा दिया जाता है, योग-से-शून्य-विरोधाभासों का उपयोग करता है, p -values की गणना करने के लिए विभिन्न तरीकों की पेशकश करता है , ...)।
उदाहरण डेटा के बारे में क्या
आपके द्वारा दिए गए उदाहरण डेटा के साथ समस्या यह है कि इस डेटासेट के लिए अधिकतम रैंडम प्रभाव संरचना संरचना की ओर अग्रसर होती है क्योंकि डिज़ाइन की प्रति कोशिका केवल एक डेटा बिंदु है:
> 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
नतीजतन, lmer
अधिकतम यादृच्छिक प्रभाव संरचना पर चुटकुले:
> 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
दुर्भाग्य से, इस समस्या से निपटने के लिए मेरे ज्ञान पर कोई सहमति नहीं है। लेकिन मुझे स्केच और कुछ पर चर्चा करने दो:
एक पहला समाधान उच्चतम यादृच्छिक ढलान को हटाने और इस मॉडल के प्रभावों का परीक्षण करने के लिए हो सकता है:
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
हालांकि, यह समाधान थोड़ा तदर्थ है और अत्यधिक प्रेरित नहीं है।
अपडेट मई 2017: यह वह दृष्टिकोण है जो मैं वर्तमान में समर्थन कर रहा हूं। देखें इस ब्लॉग पोस्ट और अध्याय का मसौदा मैं सह-लेखन कर रहा हूँ , "डिजाइन पारंपरिक एनोवा के लिए रैंडम प्रभाव संरचनाएं" खंड।
एक वैकल्पिक समाधान (और जिसे बर्र एट अल की चर्चा द्वारा वकालत के रूप में देखा जा सकता है) हमेशा सबसे छोटे प्रभाव के लिए यादृच्छिक ढलानों को हटाने के लिए हो सकता है। हालांकि इसकी दो समस्याएं हैं: (1) सबसे छोटे प्रभाव का क्या पता लगाने के लिए हम किस यादृच्छिक प्रभाव संरचना का उपयोग करते हैं और (2) R एक निम्न-क्रम प्रभाव को हटाने के लिए अनिच्छुक है जैसे कि मुख्य प्रभाव जैसे कि उच्च क्रम प्रभाव इस आशय की बातचीत मौजूद है ( यहां देखें )। एक परिणाम के रूप में किसी को इस यादृच्छिक प्रभाव संरचना को हाथ से स्थापित करने और लिमर कॉल के लिए तथाकथित मॉडल मैट्रिक्स को पारित करने की आवश्यकता होगी।
एक तीसरा समाधान यादृच्छिक प्रभाव वाले भाग के वैकल्पिक पैरामीरिजेशन का उपयोग किया जा सकता है, अर्थात् जो इस डेटा के लिए RM-ANOVA मॉडल से मेल खाता है। दुर्भाग्य से (?), lmer
"नकारात्मक संस्करण " की अनुमति नहीं देता है , इसलिए यह मानदंड सभी डेटा सेटों के लिए RM-ANOVA के अनुरूप नहीं है , यहां और अन्य जगहों पर चर्चा करें (जैसे यहां और यहां )। इन आंकड़ों के लिए "lmer-ANOVA" होगा:
> 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
इस सभी समस्याओं को देखते हुए मैं केवल lmer
फिटिंग डेटा सेट के लिए उपयोग नहीं करूंगा , जिसके लिए डिज़ाइन के प्रति सेल केवल एक डेटा बिंदु है जब तक कि अधिकतम यादृच्छिक प्रभाव संरचना की समस्या के समाधान पर अधिक सहमति नहीं मिलती है।
इसके बजाय, मैं एक भी शास्त्रीय एनोवा का उपयोग कर सकता था। परिणामों car::Anova()
में afex
एक रैपर का उपयोग करना होगा:
> 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
ध्यान दें कि afex
अब उस मॉडल को वापस करने की अनुमति देता है aov
जिसके साथ lsmeans
पोस्ट-हॉक टेस्ट के लिए पास किया जा सकता है (लेकिन उन प्रभावों के परीक्षण के लिए जिनके द्वारा रिपोर्ट की गई रिपोर्ट car::Anova
अभी भी अधिक उचित हैं):
> 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