Doğrusal regresyon ve ANOVA değişkenler arasındaki etkileşimi göz önünde bulundururken neden farklı


22

Regresyon modelini kullanarak bir zaman serisi verisini (kopyalar olmadan) sığdırmaya çalışıyordum. Veri aşağıdaki gibi görünüyor:

> 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

Yinelemelerin eksikliğinden dolayı zamanı sürekli değişken olarak kabul ediyorum. Sütun "treat", sırasıyla vaka ve kontrol verilerini gösterir.

Öncelikle, "value = time * treat" modelini "lm" olarak içine yerleştirdim 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    

Zamanın ve tedavinin değeri önemli değil.

Anova ile birlikte farklı sonuçlar aldım:

 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                 

Zaman ve muamele için değer değişti.

Doğrusal regresyonda, haklıysam, zamanın ve tedavinin değer üzerinde önemli bir etkisi olmadığı anlamına gelir, ancak ANOVA ile zamanın ve tedavinin değer üzerinde önemli bir etkisi olduğu anlamına gelir.

Birisi bana neden bu iki yöntemde farklılık olduğunu ve hangisinin kullanılacağını açıklayabilir mi?


3
Farklı türde karelerin toplamına bakmak isteyebilirsiniz. Spesifik olarak, lineer regresyonun tip III karelerin toplamını verdiğini, anova farklı bir tür döndürdüğünü düşünüyorum.
normal

3
Sonuçlarını kaydederseniz lmve aovaynı uyuşuklar ürettiklerini kontrol edebilirsiniz; örneğin, artıklarını residualsişlevle karşılaştırın veya katsayılarını inceleyin ( $coefficientsher iki durumda da yuva).
whuber

Yanıtlar:


18

Lm () ve aov () için uygun olanlar aynıdır, ancak raporlama farklıdır. T testleri, diğer tüm değişkenlerin varlığı göz önüne alındığında, söz konusu değişkenlerin marjinal etkisidir. F testleri ardışıktır - yani, kesişim dışında hiçbir şeyin varlığında zamanın önemini, kesişim ve zaman dışında hiçbir şeyin varlığında muameleyi ve yukarıdakilerin hepsinde var olan etkileşimi test ederler.

Tedavinin önemi ile ilgilendiğinizi varsayarak, her ikisini de anova () 'a koyarak iki modeli karşılaştırmanızı ve bu F testini kullanmanızı öneririm. Bu aynı anda muamele ve etkileşimi test edecektir.

Aşağıdakileri göz önünde bulundur:

> 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 

Ayrıntılı bir açıklama için teşekkür ederim, bana ANCOVA'yı (kovaryans analizi) hatırlatıyor. ANCOVA'nın ilk adımı, her iki durum için de aynı eğime sahip olup olmadıklarını görmek için kategorik faktör ile değişken arasındaki etkileşimi test etmektir. Burada yaptığım şeye oldukça benzer. ANCOVA'da, etkileşim son terim olduğu için t testi ve F testi içindeki etkileşim için aynı değeri verir aov.
shao

17

tpβ=0Fanova() çıktının ilave değişken önemli ölçüde rezidüel kareler toplamı azaltır olup olmadığıdır.

tF -testi değildir. Bu nedenle Peter'ın değişkenleri farklı sıralarda denemeniz önerisi. Bir testte anlamlı olan değişkenlerin diğerinde (ve bunun tersi) anlamlı olmayabileceği de mümkündür.

anova()Xyβ


2

Yukarıdaki iki cevap harika, ama biraz daha ekleyeceğimi düşündüm. Buradan başka bir bilgi listesi toplanabilir .

lm()Etkileşim terimiyle sonuçları rapor ettiğinizde şöyle bir şey söylüyorsunuz: "tedavi 1, işlem 1'in temel değerine ayarlandığında , tedavi 0'dan (beta! = 0, p = 0,0925) farklıdır ". Oysa, anova()sonuçlar ( daha önce belirtildiği gibi ) diğer değişkenleri görmezden gelir ve yalnızca varyanstaki farklılıklar ile ilgilidir.

Etkileşim terimini kaldırarak ve sadece iki ana efektle basit bir model kullanarak bunu ispatlayabilirsiniz ( 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

Bu durumda, bildirilen p değerlerinin aynı olduğunu görüyoruz; çünkü bu basit model söz konusu olduğunda,


Bu cevap ne yazık ki bitmemiş görünüyor. Bağlantı için hala +1 ve etkinin farklı kodlama şemalarından kaynaklandığını belirtmek için.
amip diyor Reinstate Monica

2
Kişi ayrıca şunu eklemeli summary(lm)ve anova(lm)etkileşim terimi yoksa her zaman aynı sonucu vermeyecektir. Sadece bu nedenle, bu veri olur timeve treatortogonal olan ve böylece (ardışık) ve III kareler (marjinal) toplam birbirinden sonuçlar yazın.
amip diyor Reinstate Monica

2
  • Aradaki fark, basamaklı modellerin tip ikili karşılaştırmaları ile ilgilidir.
  • Ayrıca, aov () işlevinin serbestlik derecelerini nasıl seçtiği ile ilgili bir sorunu vardır. İki kavramı karıştırıyor gibi görünüyor: 1) adım adım karşılaştırmalardan karelerin toplamı, 2) genel bir resimden serbestlik derecesi.

PROBLEM ÜREME

> 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) )

AÇIKLAMADA KULLANILAN BAZI MODELLER

#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 NASIL ÇALIŞIYOR VE F-TESTLE İLİŞKİLER

# 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

AOV NASIL ÇALIŞIYOR VE F-TESTLERDE DF SEÇİYOR

> #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
>

ÖNEMLİ NOT

> # 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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.