변수 사이의 상호 작용을 고려할 때 선형 회귀 분석과 분산 분석이 다른 값을 제공하는 이유는 무엇 입니까?


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

반복 실험이 없기 때문에 시간을 연속 변수로 취급합니다. 열 "치료"는 각각 사례 및 제어 데이터를 보여줍니다.

먼저, 모델 "value = time * treat"에 "lm"을 넣습니다 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    

시간과 치료의 pvalue는 중요하지 않습니다.

anova와 함께하는 동안 다른 결과를 얻었습니다.

 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                 

시간과 치료에 대한 pvalue가 변경되었습니다.

선형 회귀 분석에서 내가 옳다면 그것은 시간과 치료가 가치에 큰 영향을 미치지 않는다는 것을 의미하지만, 분산 분석은 시간과 치료가 가치에 상당한 영향을 미친다는 것을 의미합니다.

누군가이 두 가지 방법에 차이점이있는 이유와 사용할 방법을 설명해 주시겠습니까?


3
다른 종류의 제곱합을 찾아 볼 수 있습니다. 특히 선형 회귀는 유형 III 제곱합을 반환하지만 anova는 다른 종류를 반환한다고 생각합니다.
assumednormal

3
당신의 결과를 저장하는 경우 lmaov당신이 확인할 수 있습니다 그들은 동일한 맞는 생산; 예를 들어, 잔차를 residuals함수 와 비교 하거나 계수 ( $coefficients두 경우 모두 의 슬롯)를 검사하십시오.
whuber

답변:


18

lm ()과 aov ()의 적합은 동일하지만보고 방식이 다릅니다. t 검정은 다른 모든 변수가 존재하는 경우 해당 변수의 한계 영향입니다. F 테스트는 순차적입니다. 따라서 인터셉트 만있는 상태에서는 시간의 중요성, 인터셉트 및 시간 만있는 상태에서는 치료, 위의 모든 상황에서 인터랙션은 중요합니다.

당신이 치료의 중요성에 관심이 있다고 가정하면, 두 모델을 가지고 있는지, 없는지에 따라 두 모델을 anova ()에 넣고 두 모델을 비교하고 F 테스트를 사용하는 것이 좋습니다. 이것은 치료와 상호 작용을 동시에 테스트 할 것입니다.

다음을 고려하세요:

> 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에서는 상호 작용이의 마지막 항이므로 t- 검정과 F- 검정에서 상호 작용에 동일한 pvalue를 제공합니다 aov.
shao

17

피터 엘리스의 대답은 훌륭하지만 또 다른 요점이 있습니다. -test 통계치 (및 -value)는인지 시험이다 . 출력물 의 검정 은 추가 된 변수가 잔차 제곱합을 크게 감소시키는 지 여부입니다.tpβ=0Fanova()

순서 독립적이다 -test은 동안 -test가 아니다. 따라서 Peter는 변수를 다른 순서로 시도한다고 제안합니다. 한 테스트에서 중요한 변수는 다른 테스트에서 중요하지 않을 수도 있습니다 (그 반대도 가능).tF

내 생각은 (그리고 다른 기고자들이 나를 바로 잡아 줄 것을 환영합니다) 현상을 예측하려고 할 때 (시스템 응용 프로그램에서와 같이) 가장 적은 예측 변수로 분산을 줄이는 데 가장 관심이 있고 anova()결과를 원한다는 것 입니다. 당신의 한계 효과를 설정하려는 경우 에 , 그러나, 당신은 대부분 특정의 중요성과 관련됩니다 관심의 다른 모든 변수는 피어 리뷰어 찾을 것을 시도 할 것이다 다른 설명은 제어합니다.Xyβ


2

위의 두 가지 대답은 훌륭하지만 조금 더 추가 할 것이라고 생각했습니다. 여기 에서 또 다른 정보를 얻을 수 있습니다 .

lm()상호 작용 항을 사용 하여 결과 를보고 할 때 다음과 같이 말합니다. " 시간이 기본 값 1로 설정된 경우 처리 1은 처리 0 (베타! = 0, p = 0.0925)과 다릅니다 ." 반면 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

이 경우보고 된 p- 값이 동일하다는 것을 알 수 있습니다. 이 간단한 모델의 경우


이 답변은 불행히도 완성되지 않은 것처럼 보입니다. 링크와 그 효과가 다른 코딩 방식으로 인한 것이라고 언급하면 ​​여전히 +1입니다.
amoeba는

2
또한 그것을 추가해야 summary(lm)하며 anova(lm)상호 작용 항이없는 경우 항상 동일한 결과를 제공하지는 않습니다. 그것은 너무 이러한 데이터에 그 발생 timetreat직교 때문에 I (순차) 및 III은 사각형 (한계) 합이 동일한 결과를 산출 입력.
아메바는 모니카

2
  • 차이점은 계단식 모델의 형식 별 비교와 관련이 있습니다.
  • 또한 aov () 함수는 자유도를 선택하는 방법에 문제가 있습니다. 그것은 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- 테스트와 관련되는 방법

# 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

F-TESTS에서 AOV가 작동하고 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.