अनुदैर्ध्य डेटासेट का विश्लेषण करने में एनओवी () और लैम () का उपयोग करने में क्या अंतर है?


14

क्या कोई मुझे अनुदैर्ध्य डेटा का उपयोग करने aov()और lme()विश्लेषण करने और इन दो तरीकों से परिणामों की व्याख्या करने के बीच का अंतर बता सकता है ?

नीचे, मैं एक ही डेटासेट का उपयोग करके विश्लेषण aov()और lme()और मिल गया 2 अलग परिणाम है। के साथ aov(), मुझे उपचार बातचीत से समय में एक महत्वपूर्ण परिणाम मिला, लेकिन एक रैखिक मिश्रित मॉडल को फिट करना, उपचार बातचीत के द्वारा समय नगण्य है।

> UOP.kg.aov <- aov(UOP.kg~time*treat+Error(id), raw3.42)
> summary(UOP.kg.aov)

Error: id
          Df  Sum Sq Mean Sq F value Pr(>F)
treat      1   0.142  0.1421  0.0377 0.8471
Residuals 39 147.129  3.7725               

Error: Within
            Df  Sum Sq Mean Sq  F value  Pr(>F)    
time         1 194.087 194.087 534.3542 < 2e-16 ***
time:treat   1   2.077   2.077   5.7197 0.01792 *  
Residuals  162  58.841   0.363                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

> UOP.kg.lme <- lme(UOP.kg~time*treat, random=list(id=pdDiag(~time)), 
                    na.action=na.omit, raw3.42)
> summary(UOP.kg.lme)
Linear mixed-effects model fit by REML
 Data: raw3.42 
       AIC      BIC    logLik
  225.7806 248.9037 -105.8903

Random effects:
 Formula: ~time | id
 Structure: Diagonal
        (Intercept)      time  Residual
StdDev:   0.6817425 0.5121545 0.1780466

Fixed effects: UOP.kg ~ time + treat + time:treat 
                 Value Std.Error  DF   t-value p-value
(Intercept)  0.5901420 0.1480515 162  3.986059  0.0001
time         0.8623864 0.1104533 162  7.807701  0.0000
treat       -0.2144487 0.2174843  39 -0.986042  0.3302
time:treat   0.1979578 0.1622534 162  1.220053  0.2242
 Correlation: 
           (Intr) time   treat 
time       -0.023              
treat      -0.681  0.016       
time:treat  0.016 -0.681 -0.023

Standardized Within-Group Residuals:
         Min           Q1          Med           Q3          Max 
-3.198315285 -0.384858426  0.002705899  0.404637305  2.049705655 

Number of Observations: 205
Number of Groups: 41 

जवाबों:


19

आपके विवरण के आधार पर, यह प्रतीत होता है कि आपके पास एक एकल उपचार कारक के साथ दोहराया जाने वाला मॉडल है। चूंकि मेरे पास डेटासेट ( raw3.42) तक पहुंच नहीं है , मैं nlmeपैकेज से ऑर्थोडॉन्ट डेटा का उपयोग करके बताऊंगा कि यहां क्या चल रहा है। डेटा संरचना समान है (दो अलग-अलग समूहों के लिए दोहराया माप - इस मामले में, पुरुषों और महिलाओं)।

यदि आप निम्नलिखित कोड चलाते हैं:

library(nlme)
data(Orthodont)

res <- lme(distance ~ age*Sex, random = ~ 1 | Subject, data = Orthodont)
anova(res)

आपको निम्न परिणाम मिलेंगे:

            numDF denDF  F-value p-value
(Intercept)     1    79 4123.156  <.0001
age             1    79  122.450  <.0001
Sex             1    25    9.292  0.0054
age:Sex         1    79    6.303  0.0141

यदि आप चलाते हैं:

res <- aov(distance ~ age*Sex + Error(Subject), data = Orthodont)
summary(res)

तुम्हे मिल जाएगा:

Error: Subject
          Df Sum Sq Mean Sq F value   Pr(>F)   
Sex        1 140.46 140.465  9.2921 0.005375 **
Residuals 25 377.91  15.117                    

Error: Within
          Df  Sum Sq Mean Sq  F value  Pr(>F)    
age        1 235.356 235.356 122.4502 < 2e-16 ***
age:Sex    1  12.114  12.114   6.3027 0.01410 *  
Residuals 79 151.842   1.922                     

ध्यान दें कि एफ-परीक्षण बिल्कुल समान हैं।

के लिए lme(), आपने उपयोग किया list(id=pdDiag(~time)), जो न केवल मॉडल में एक यादृच्छिक अवरोधन जोड़ता है, बल्कि एक यादृच्छिक ढलान भी है। इसके अलावा, उपयोग करके pdDiag, आप यादृच्छिक अवरोधन और ढलान के बीच संबंध को शून्य पर सेट कर रहे हैं। यह एक अलग मॉडल है जो आपने निर्दिष्ट किया है aov()और इसलिए आपको अलग-अलग परिणाम मिलते हैं।


धन्यवाद; आपका स्पष्टीकरण बहुत मदद करता है। एक अनुवर्ती प्रश्न जो मेरे पास है, वह यह है। मैं वास्तव में एकल उपचार कारक के साथ दोहराए गए मॉडल का विश्लेषण कर रहा हूं। प्रत्येक विषय को ए या बी के उपचार के लिए यादृच्छिक रूप से सौंपा गया है फिर उन्हें 0 मिनट, 15 मिनट, 30 मिनट, 60 मिनट, 120 मिनट और 180 मिनट पर मापा जाता है। मेरी समझ से, समय एक यादृच्छिक कारक होना चाहिए क्योंकि यह केवल 0 से 180 मिनट के समय के नमूने हैं। तो, मुझे क्या करना चाहिए: lme (UOP.kg ~ समय * इलाज, यादृच्छिक = ~ समय | आईडी, raw3.42)?
biostat_newbie

हां, लेकिन मैं इसके बारे में इस तरह से सोचूंगा: आप अनिवार्य रूप से एक ही उपचार समूह के भीतर विषयों के बीच (बेतरतीब ढंग से) अलग करने के लिए प्रतिगमन लाइन (समय पर UOP.kg) के अवरोधन और ढलान की अनुमति दे रहे हैं। यह क्या यादृच्छिक = ~ समय | आईडी करना होगा। फिर मॉडल आपको बताएगा कि इंटरसेप्ट और स्लोप में परिवर्तनशीलता की अनुमानित मात्रा क्या है। इसके अलावा, समय: उपचार बातचीत का संकेत है कि क्या औसत ढलान ए और बी के लिए अलग है
वोल्फगैंग

धन्यवाद @Wolfgang! क्या मैं उपयोग कर सकता हूं Error(Subject/age), क्योंकि मैंने कुछ ट्यूटोरियल देखा, यह कहने का /ageमतलब है कि उस कारक के साथ दोहराया गया? क्या यह भी आपके जैसा ही है Error(Subject)? एक और सवाल है: असंतुलित डेटा के लिए, aovऔर lmeअलग-अलग परिणाम हो सकते हैं, है ना?
विंडिंटोप्लेक्स

1

मैं सिर्फ इतना जोड़ना चाहूंगा कि आप carपैकेज को स्थापित करने और उपयोग करने की इच्छा रख सकते Anova()हैं anova()क्योंकि यह पैकेज इसके लिए aov()और lm()वस्तुओं के बजाय प्रदान करता है , वेनिला anova()वर्गों के क्रमिक योग का उपयोग करता है, जो असमान नमूना आकारों के लिए गलत परिणाम देता है जबकि lme()इसके लिए या तो प्रकार का उपयोग करता है -मैं या typeतर्क के आधार पर टाइप- III योग , लेकिन वर्गों का प्रकार- III योग सीमांतता का उल्लंघन करता है - अर्थात यह मुख्य प्रभावों की तुलना में कोई भिन्न रूप से बातचीत का व्यवहार करता है।

R- हेल्प लिस्ट में टाइप I और टाइप- III सोम्स ऑफ स्क्वेयर के बारे में कुछ भी अच्छा नहीं है, और फिर भी ये एकमात्र विकल्प हैं! जाओ पता लगाओ।

संपादित करें: वास्तव में, ऐसा लगता है कि टाइप-II मान्य नहीं है यदि कोई महत्वपूर्ण इंटरैक्शन शब्द है, और ऐसा लगता है कि कोई भी ऐसा कर सकता है जो टाइप-III का उपयोग करता है, जब बातचीत होती है। मैं अपने ही एक सवाल के जवाब से उस पर फ़िदा हो गया कि बदले में मुझे इस पद की ओर इशारा किया ।


0

यह मुझे प्रतीत होता है कि आपके पास प्रत्येक आईडी के लिए प्रत्येक समय पर कई उपाय हैं। आपको एनोव के लिए इनको एकत्रित करने की आवश्यकता है क्योंकि यह उस विश्लेषण में गलत तरीके से शक्ति बढ़ाता है। मैं यह नहीं कह रहा हूं कि कुल मिलाकर नतीजे समान होंगे लेकिन यह उन्हें अधिक समान बनाना चाहिए।

dat.agg <- aggregate(UOP.kg ~ time + treat + id, raw3.42, mean)

तब डेटा के स्थान पर dat.agg के साथ अपना एनोव मॉडल चलाएं।

इसके अलावा, मेरा मानना ​​है कि परिणामों की तुलना करने के लिए आप क्या करना चाहते हैं, इसके लिए एनोवा (lme) अधिक है। एक प्रभाव की दिशा और परिमाण त्रुटि के लिए मॉडल विचरण के अनुपात के समान नहीं है।

(BTW, यदि आप कुल डेटा पर lme विश्लेषण करते हैं, जो आपको नहीं करना चाहिए, और anova (lme) की जाँच करें, तो आपको लगभग वही परिणाम मिलेंगे जो aov के समान हैं)

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