회귀분석 더미변수

순동·2022년 2월 24일
0

📌 회귀분석 더미변수

  • 독립변수가 범주형 변수일 때 독립변수를 더미변수(dummy variable)로 변환하여 회귀분석 수행한다.
  • 더미변수란 어떤 속성이 존재할 경우 그 값을 1로, 존재하지 않을 경우 그 값을 0으로 코딩한 인위적 변수를 의미한다.
  • 더미변수를 이용한 회귀분석을 통해 얻게 되는 회귀계수는 1로 코딩된 범주가 종속변수에 미치는 영향을 나타낸다.
  • spray (독립변수) : 살충제 종류
  • count (종속변수) : 살아남은 해충 수
> str(InsectSprays)
'data.frame':	72 obs. of  2 variables:
 $ count: num  10 7 20 14 14 12 10 23 17 20 ...
 $ spray: Factor w/ 6 levels "A","B","C","D",..: 1 1 1 1 1 1 1 1 1 1 ...

> levels(InsectSprays$spray)
[1] "A" "B" "C" "D" "E" "F" 

> # 살충제별로 살아남은 해충 수의 평균
> tapply(InsectSprays$count, InsectSprays$spray, mean)
        A         B         C         D         E         F 
14.500000 15.333333  2.083333  4.916667  3.500000 16.666667

더미변수를 이용한 회귀분석은 lm() 함수를 사용하면 자동으로 더미변수 생성해서 분석을 진행한다.

6가지 범주를 갖고 있기 때문에 더미변수는 6-1=5개 사용된다.

> contrasts(InsectSprays$spray)
  B C D E F
A 0 0 0 0 0
B 1 0 0 0 0
C 0 1 0 0 0
D 0 0 1 0 0
E 0 0 0 1 0
F 0 0 0 0 1

A가 더미변수의 기준 범주로 사용되었다.

📌 더미변수 회귀분석

> sprays.lm <- lm(count ~ spray, data=InsectSprays)
> summary(sprays.lm)

Call:
lm(formula = count ~ spray, data = InsectSprays)

Residuals:
   Min     1Q Median     3Q    Max 
-8.333 -1.958 -0.500  1.667  9.333 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  14.5000     1.1322  12.807  < 2e-16 ***
sprayB        0.8333     1.6011   0.520    0.604    
sprayC      -12.4167     1.6011  -7.755 7.27e-11 ***
sprayD       -9.5833     1.6011  -5.985 9.82e-08 ***
sprayE      -11.0000     1.6011  -6.870 2.75e-09 ***
sprayF        2.1667     1.6011   1.353    0.181    
---
Signif. codes:  0***0.001**0.01*0.05.0.1 ‘ ’ 1

Residual standard error: 3.922 on 66 degrees of freedom
Multiple R-squared:  0.7244,	Adjusted R-squared:  0.7036 
F-statistic:  34.7 on 5 and 66 DF,  p-value: < 2.2e-16

살충제 A의 효과 : 14.5
살충제 C의 효과 : 14.5 - 12.4167 = 2.083

살충제 B, F와 살충제 A는 통계적으로 유의하지 않다.
살충제 C, D, E와 살충제 A는 통계적으로 유의한 차이가 있다.

살충제 간의 차이를 검정해보자.

> sprays.aov <- aov(count ~ spray, data=InsectSprays)
> summary(sprays.aov)
            Df Sum Sq Mean Sq F value Pr(>F)    
spray        5   2669   533.8    34.7 <2e-16 ***
Residuals   66   1015    15.4                   
---
Signif. codes:  0***0.001**0.01*0.05.0.1 ‘ ’ 1

p-value=<2e-16 이므로 살충제 간의 통계적으로 유의한 차이가 존재한다.

📌 사후분석

어떤 살충제가 차이가 있는지 사후분석을 통해 확인할 수 있다.

> TukeyHSD(sprays.aov)
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = count ~ spray, data = InsectSprays)

$spray
           diff        lwr       upr     p adj
B-A   0.8333333  -3.866075  5.532742 0.9951810
C-A -12.4166667 -17.116075 -7.717258 0.0000000
D-A  -9.5833333 -14.282742 -4.883925 0.0000014
E-A -11.0000000 -15.699409 -6.300591 0.0000000
F-A   2.1666667  -2.532742  6.866075 0.7542147
C-B -13.2500000 -17.949409 -8.550591 0.0000000
D-B -10.4166667 -15.116075 -5.717258 0.0000002
E-B -11.8333333 -16.532742 -7.133925 0.0000000
F-B   1.3333333  -3.366075  6.032742 0.9603075
D-C   2.8333333  -1.866075  7.532742 0.4920707
E-C   1.4166667  -3.282742  6.116075 0.9488669
F-C  14.5833333   9.883925 19.282742 0.0000000
E-D  -1.4166667  -6.116075  3.282742 0.9488669
F-D  11.7500000   7.050591 16.449409 0.0000000
F-E  13.1666667   8.467258 17.866075 0.0000000

살충제 A는 살충제 C, D, E와 통계적으로 유의한 차이가 있다.
살충제 A는 살충제 B, F와 통계적으로 유의한 차이가 없다.

📌 더미변수의 기준범주 변경

> respray <- relevel(InsectSprays$spray, ref=6)
> contrasts(respray)
  A B C D E
F 0 0 0 0 0
A 1 0 0 0 0
B 0 1 0 0 0
C 0 0 1 0 0
D 0 0 0 1 0
E 0 0 0 0 1

변경된 기준 범주로 다시 회귀분석을 수행한다.

> sprays.lm2 <- lm(count ~ spray, data=InsectSprays)
> summary(sprays.lm2)

Call:
lm(formula = count ~ spray, data = InsectSprays)

Residuals:
   Min     1Q Median     3Q    Max 
-8.333 -1.958 -0.500  1.667  9.333 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  14.5000     1.1322  12.807  < 2e-16 ***
sprayB        0.8333     1.6011   0.520    0.604    
sprayC      -12.4167     1.6011  -7.755 7.27e-11 ***
sprayD       -9.5833     1.6011  -5.985 9.82e-08 ***
sprayE      -11.0000     1.6011  -6.870 2.75e-09 ***
sprayF        2.1667     1.6011   1.353    0.181    
---
Signif. codes:  0***0.001**0.01*0.05.0.1 ‘ ’ 1

Residual standard error: 3.922 on 66 degrees of freedom
Multiple R-squared:  0.7244,	Adjusted R-squared:  0.7036 
F-statistic:  34.7 on 5 and 66 DF,  p-value: < 2.2e-16

살충제 C의 살충 효과 = 16.667 - 14.583 = 2.084이다.

0개의 댓글