क्यों रेखीय प्रतीपगमन करते हैं और एनोवा अलग देना चर के बीच बातचीत पर विचार के मामले में -value?


22

मैं प्रतिगमन मॉडल का उपयोग करके एक बार-श्रृंखला डेटा (प्रतिकृति के बिना) फिट करने की कोशिश कर रहा था। डेटा इस प्रकार दिखता है:

> xx.2
          value time treat
    1  8.788269    1     0
    2  7.964719    6     0
    3  8.204051   12     0
    4  9.041368   24     0
    5  8.181555   48     0
    6  8.041419   96     0
    7  7.992336  144     0
    8  7.948658    1     1
    9  8.090211    6     1
    10 8.031459   12     1
    11 8.118308   24     1
    12 7.699051   48     1
    13 7.537120   96     1
    14 7.268570  144     1

प्रतिकृति की कमी के कारण, मैं समय को निरंतर परिवर्तनशील मानता हूं। कॉलम "ट्रीट" क्रमशः मामला और नियंत्रण डेटा दिखाता है।

सबसे पहले, मैं "lm" के साथ मॉडल "value = time * treat" में फिट बैठता हूं R:

summary(lm(value~time*treat,data=xx.2))

Call:
lm(formula = value ~ time * treat, data = xx.2)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.50627 -0.12345  0.00296  0.04124  0.63785 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)  8.493476   0.156345  54.325 1.08e-13 ***
time        -0.003748   0.002277  -1.646   0.1307    
treat       -0.411271   0.221106  -1.860   0.0925 .  
time:treat  -0.001938   0.003220  -0.602   0.5606    

समय और उपचार का अंतराल महत्वपूर्ण नहीं है।

एनोवा के साथ, मुझे अलग-अलग परिणाम मिले:

 summary(aov(value~time*treat,data=xx.2))
            Df Sum Sq Mean Sq F value Pr(>F)  
time         1 0.7726  0.7726   8.586 0.0150 *
treat        1 0.8852  0.8852   9.837 0.0106 *
time:treat   1 0.0326  0.0326   0.362 0.5606  
Residuals   10 0.8998  0.0900                 

समय और उपचार के लिए समय बदल गया।

रैखिक प्रतिगमन के साथ, अगर मैं सही हूं, इसका मतलब है कि समय और उपचार का मूल्य पर कोई महत्वपूर्ण प्रभाव नहीं है, लेकिन एनोवा के साथ, इसका मतलब है कि समय और उपचार का मूल्य पर महत्वपूर्ण प्रभाव है।

क्या कोई मुझे समझा सकता है कि इन दो तरीकों में अंतर क्यों है, और कौन सा उपयोग करना है?


3
आप विभिन्न प्रकार के वर्गों को देखना चाहते हैं। विशेष रूप से, मेरा मानना ​​है कि रैखिक प्रतिगमन रिटर्न III प्रकार के वर्ग हैं, जबकि एनोवा एक अलग तरह का रिटर्न देता है।
assumednormal

3
यदि आप के परिणामों को बचाते हैं lmऔर aovआप देख सकते हैं कि वे समान फिट का उत्पादन करते हैं; उदाहरण के लिए, residualsफ़ंक्शन के साथ उनके अवशेषों की तुलना करें या उनके गुणांक ( $coefficientsदोनों मामलों में स्लॉट) की जांच करें।
whuber

जवाबों:


18

Lm () और aov () के लिए फिट समान हैं लेकिन रिपोर्टिंग अलग है। टी परीक्षण अन्य सभी चर की उपस्थिति को देखते हुए, प्रश्न में चर का सीमांत प्रभाव है। एफ परीक्षण अनुक्रमिक हैं - इसलिए वे कुछ भी नहीं, बल्कि अवरोधन और समय की उपस्थिति में उपचार की कुछ भी की उपस्थिति में समय के महत्व के लिए परीक्षण करते हैं, और उपरोक्त सभी की उपस्थिति में बातचीत की।

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

निम्नलिखित को धयान मे रखते हुए:

> xx.2 <- as.data.frame(matrix(c(8.788269, 1, 0,
+ 7.964719, 6, 0,
+ 8.204051, 12, 0,
+ 9.041368, 24, 0,
+ 8.181555, 48, 0,
+ 8.041419, 96, 0,
+ 7.992336, 144, 0,
+ 7.948658, 1, 1,
+ 8.090211, 6, 1,
+ 8.031459, 12, 1,
+ 8.118308, 24, 1,
+ 7.699051, 48, 1,
+ 7.537120, 96, 1,
+ 7.268570, 144, 1), byrow=T, ncol=3))
> names(xx.2) <- c("value", "time", "treat")
> 
> mod1 <- lm(value~time*treat, data=xx.2)
> anova(mod1)
Analysis of Variance Table

Response: value
           Df  Sum Sq Mean Sq F value  Pr(>F)  
time        1 0.77259 0.77259  8.5858 0.01504 *
treat       1 0.88520 0.88520  9.8372 0.01057 *
time:treat  1 0.03260 0.03260  0.3623 0.56064  
Residuals  10 0.89985 0.08998                  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 
> mod2 <- aov(value~time*treat, data=xx.2)
> anova(mod2)
Analysis of Variance Table

Response: value
           Df  Sum Sq Mean Sq F value  Pr(>F)  
time        1 0.77259 0.77259  8.5858 0.01504 *
treat       1 0.88520 0.88520  9.8372 0.01057 *
time:treat  1 0.03260 0.03260  0.3623 0.56064  
Residuals  10 0.89985 0.08998                  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 
> summary(mod2)
            Df Sum Sq Mean Sq F value Pr(>F)  
time         1 0.7726  0.7726   8.586 0.0150 *
treat        1 0.8852  0.8852   9.837 0.0106 *
time:treat   1 0.0326  0.0326   0.362 0.5606  
Residuals   10 0.8998  0.0900                 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 
> summary(mod1)

Call:
lm(formula = value ~ time * treat, data = xx.2)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.50627 -0.12345  0.00296  0.04124  0.63785 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)  8.493476   0.156345  54.325 1.08e-13 ***
time        -0.003748   0.002277  -1.646   0.1307    
treat       -0.411271   0.221106  -1.860   0.0925 .  
time:treat  -0.001938   0.003220  -0.602   0.5606    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

Residual standard error: 0.3 on 10 degrees of freedom
Multiple R-squared: 0.6526,     Adjusted R-squared: 0.5484 
F-statistic: 6.262 on 3 and 10 DF,  p-value: 0.01154 

पूरी तरह से स्पष्टीकरण के लिए धन्यवाद, यह मुझे ANCOVA (सहसंयोजक का विश्लेषण) की याद दिलाता है। ANCOVA का पहला चरण स्पष्ट कारक और सहसंयोजक के बीच बातचीत का परीक्षण करना है, यह देखने के लिए कि क्या उनके पास दोनों स्थितियों में समान ढलान है। यह काफी कुछ वैसा ही है जैसा मैंने यहां किया था। ANCOVA में, यह टी-टेस्ट और एफ-टेस्ट में बातचीत के लिए समान अंतराल प्रदान करता है क्योंकि इंटरैक्शन अंतिम शब्द है aov
शाओ

17

पीटर एलिस का जवाब उत्कृष्ट है, लेकिन एक और बिंदु बनाया जाना है। टेस्ट आंकड़ा (और उसके -value) क्या का एक परीक्षण है । पर -Test प्रिंटआउट कि क्या जोड़ा चर काफी वर्गों का अवशिष्ट राशि को कम कर देता है।p β = 0 एफtpβ=0Fanova()

-Test आदेश स्वतंत्र है, जबकि -Test नहीं है। इसलिए पीटर का सुझाव है कि आप विभिन्न आदेशों में चर का प्रयास करें। यह भी संभव है कि एक परीक्षण में महत्वपूर्ण चर दूसरे (और इसके विपरीत) में महत्वपूर्ण नहीं हो सकते हैं।एफtF

anova()Xyβ


2

उपरोक्त दो उत्तर महान हैं, लेकिन मुझे लगा कि मैं थोड़ा और जोड़ूंगा। जानकारी की एक और डली यहाँ से चमकाई जा सकती है

जब आप lm()इंटरैक्शन शब्द के साथ परिणामों की रिपोर्ट करते हैं , तो आप कुछ ऐसा कह रहे हैं: "1 का उपचार 0 (बीटा! = 0, p = 0.0925) के उपचार से अलग है, जब समय 1 के आधार मान पर सेट होता है "। जबकि anova()परिणाम ( जैसा कि पहले उल्लेख किया गया है ) किसी भी अन्य चर की उपेक्षा करते हैं और केवल भिन्नता में अंतर के साथ ही चिंता करते हैं।

आप केवल दो मुख्य प्रभावों ( m1 ) के साथ अपने इंटरैक्शन शब्द को हटाकर और एक साधारण मॉडल का उपयोग करके इसे साबित कर सकते हैं :

> m1 = lm(value~time+treat,data=dat)
> summary(m1)

Call:
lm(formula = value ~ time + treat, data = dat)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.54627 -0.10533 -0.04574  0.11975  0.61528 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)  8.539293   0.132545  64.426 1.56e-15 ***
time        -0.004717   0.001562  -3.019  0.01168 *  
treat       -0.502906   0.155626  -3.232  0.00799 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.2911 on 11 degrees of freedom
Multiple R-squared:   0.64, Adjusted R-squared:  0.5746 
F-statistic: 9.778 on 2 and 11 DF,  p-value: 0.003627

> anova(m1)
Analysis of Variance Table

Response: value
          Df  Sum Sq Mean Sq F value   Pr(>F)   
time       1 0.77259 0.77259  9.1142 0.011677 * 
treat      1 0.88520 0.88520 10.4426 0.007994 **
Residuals 11 0.93245 0.08477                    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

इस मामले में हम देखते हैं कि सूचित पी-मान समान हैं; ऐसा इसलिए है क्योंकि इस सरल मॉडल के मामले में,


यह जवाब दुर्भाग्य से अधूरा लगता है। फिर भी लिंक के लिए +1 और यह उल्लेख करने के लिए कि प्रभाव विभिन्न कोडिंग योजनाओं के कारण है।
अमीबा

2
यदि कोई सहभागिता शब्द नहीं है, तो उसे भी जोड़ना चाहिए summary(lm)और anova(lm)हमेशा समान परिणाम नहीं देना चाहिए । यह सिर्फ इसलिए इन आंकड़ों में होता है कि timeऔर treatorthogonal हैं और इसलिए टाइप मैं (अनुक्रमिक) और III (सीमांत) वर्गों का रकम समान परिणाम।
अमीबा का कहना है कि मोनिका

2
  • अंतर को कैस्केडिंग मॉडल की जोड़ी के प्रकार के साथ तुलना करना पड़ता है।
  • इसके अलावा, एनओवी () फ़ंक्शन में एक मुद्दा है कि यह कैसे स्वतंत्रता की डिग्री चुनता है। यह दो अवधारणाओं को मिलाने लगता है: 1) स्टेप वाइज तुलनाओं से वर्गों का योग, 2) एक समग्र चित्र से स्वतंत्रता की डिग्री।

समस्या निवारण

> data <- list(value = c (8.788269,7.964719,8.204051,9.041368,8.181555,8.0414149,7.992336,7.948658,8.090211,8.031459,8.118308,7.699051,7.537120,7.268570), time = c(1,6,12,24,48,96,144,1,6,12,24,48,96,144), treat = c(0,0,0,0,0,0,0,1,1,1,1,1,1,1) )
> summary( lm(value ~ treat*time, data=data) )
> summary( aov(value ~ 1 + treat + time + I(treat*time),data=data) )

प्रदर्शन में प्रयुक्त कुछ मॉडल

#all linear models used in the explanation below
> model_0                      <- lm(value ~ 1, data)
> model_time                   <- lm(value ~ 1 + time, data)
> model_treat                  <- lm(value ~ 1 + treat, data)
> model_interaction            <- lm(value ~ 1 + I(treat*time), data)
> model_treat_time             <- lm(value ~ 1 + treat + time, data)
> model_treat_interaction      <- lm(value ~ 1 + treat + I(treat*time), data)
> model_time_interaction       <- lm(value ~ 1 + time + I(treat*time), data)
> model_treat_time_interaction <- lm(value ~ 1 + time + treat + I(treat*time), data)

कैसे LM T_TEST कार्य करता है और F-TEST से संबंधित है

# the t-test with the estimator and it's variance, mean square error, is
# related to the F test of pairwise comparison of models by dropping 1
# model parameter

> anova(model_treat_time_interaction, model_time_interaction)

Analysis of Variance Table

Model 1: value ~ 1 + time + treat + I(treat * time)
Model 2: value ~ 1 + time + I(treat * time)
  Res.Df     RSS Df Sum of Sq      F  Pr(>F)  
1     10 0.89985                              
2     11 1.21118 -1  -0.31133 3.4598 0.09251 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

> anova(model_treat_time_interaction, model_treat_interaction)

Analysis of Variance Table

Model 1: value ~ 1 + time + treat + I(treat * time)
Model 2: value ~ 1 + treat + I(treat * time)
  Res.Df     RSS Df Sum of Sq      F Pr(>F)
1     10 0.89985                           
2     11 1.14374 -1   -0.2439 2.7104 0.1307

> anova(model_treat_time_interaction, model_treat_time)

Analysis of Variance Table

Model 1: value ~ 1 + time + treat + I(treat * time)
Model 2: value ~ 1 + treat + time
  Res.Df     RSS Df Sum of Sq      F Pr(>F)
1     10 0.89985                           
2     11 0.93245 -1 -0.032599 0.3623 0.5606

> # which is the same as
> drop1(model_treat_time_interaction, scope  = ~time+treat+I(treat*time), test="F")

Single term deletions

Model:
value ~ 1 + time + treat + I(treat * time)
                Df Sum of Sq     RSS     AIC F value  Pr(>F)  
<none>                       0.89985 -30.424                  
time             1  0.243896 1.14374 -29.067  2.7104 0.13072  
treat            1  0.311333 1.21118 -28.264  3.4598 0.09251 .
I(treat * time)  1  0.032599 0.93245 -31.926  0.3623 0.56064  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

कैसे काम करता है और एफ-टिकटों में DF को चुनता है

> #the aov function makes stepwise additions/drops
> 
> #first the time, then treat, then the interaction
> anova(model_0, model_time)

Analysis of Variance Table

Model 1: value ~ 1
Model 2: value ~ 1 + time
  Res.Df    RSS Df Sum of Sq      F  Pr(>F)  
1     13 2.5902                              
2     12 1.8176  1    0.7726 5.1006 0.04333 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

> anova(model_time, model_treat_time)

Analysis of Variance Table

Model 1: value ~ 1 + time
Model 2: value ~ 1 + treat + time
  Res.Df     RSS Df Sum of Sq      F   Pr(>F)   
1     12 1.81764                                
2     11 0.93245  1    0.8852 10.443 0.007994 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

> anova(model_treat_time, model_treat_time_interaction)

Analysis of Variance Table

Model 1: value ~ 1 + treat + time
Model 2: value ~ 1 + time + treat + I(treat * time)
  Res.Df     RSS Df Sum of Sq      F Pr(>F)
1     11 0.93245                           
2     10 0.89985  1  0.032599 0.3623 0.5606

> 
> # note that the sum of squares for within model variation is the same
> # but the F values and p-values are not the same because the aov 
> # function somehow chooses to use the degrees of freedom in the 
> # complete model in all stepwise changes
>

महत्वपूर्ण लेख

> # Although the p and F values do not exactly match, it is this effect
> # of order and selection of cascading or not in model comparisons. 
> # An important note to make is that the comparisons are made by 
> # stepwise additions and changing the order of variables has an 
> # influence on the outcome!
>
> # Additional note changing the order of 'treat' and 'time' has no 
> # effect because they are not correlated

> summary( aov(value ~ 1 + treat + time +I(treat*time), data=data) )

        Df Sum Sq Mean Sq F value Pr(>F)  
treat            1 0.8852  0.8852   9.837 0.0106 *
time             1 0.7726  0.7726   8.586 0.0150 *
I(treat * time)  1 0.0326  0.0326   0.362 0.5606  
Residuals       10 0.8998  0.0900                 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

> summary( aov(value ~ 1 + I(treat*time) + treat + time, data=data) )

                Df Sum Sq Mean Sq F value  Pr(>F)   
I(treat * time)  1 1.3144  1.3144  14.606 0.00336 **
treat            1 0.1321  0.1321   1.469 0.25343   
time             1 0.2439  0.2439   2.710 0.13072   
Residuals       10 0.8998  0.0900                   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

> # This is an often forgotten quirck 
> # best is to use manual comparisons such that you know
> # and understand your hypotheses
> # (which is often forgotten in the click and
> #     point anova modelling tools)
> #
> # anova(model1, model2) 
> #     or use 
> # stepAIC from the MASS library
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.