더북(TheBook)

범주형 변수

앞에서는 범주형 변수인 Species를 설명 변수에서 생략했다. Species를 포함하려면 ‘+ Species’를 포뮬러에 추가해 설명 변수를 더해주거나, 단순히 ‘Sepal.Length ~ . ’로 포뮬러를 적는다. 여기서 ‘.’은 종속 변수를 제외한 모든 변수를 의미한다. 다음은 ‘Sepal.Length ~ . ’를 사용한 선형 회귀의 예다.

> (m <- lm(Sepal.Length ~ ., data=iris))
Call:
lm(formula = Sepal.Length ~ ., data = iris)

Coefficients:
      (Intercept)        Sepal.Width      Petal.Length
           2.1713             0.4959            0.8292
      Petal.Width  Speciesversicolor  Speciesvirginica
          -0.3152            -0.7236           -1.0235
     
> summary(m)
Call:
lm(formula = Sepal.Length ~ ., data = iris)

Residuals:
     Min       1Q   Median       3Q      Max
-0.79424 -0.21874  0.00899  0.20255  0.73103

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)
(Intercept)        2.17127    0.27979   7.760 1.43e-12 ***
Sepal.Width        0.49589    0.08607   5.761 4.87e-08 ***
Petal.Length       0.82924    0.06853  12.101  < 2e-16 ***
Petal.Width       -0.31516    0.15120  -2.084  0.03889 *
Speciesversicolor -0.72356    0.24017  -3.013  0.00306 **
Speciesvirginica  -1.02350    0.33373  -3.067  0.00258 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.3068 on 144 degrees of freedom
Multiple R-squared: 0.8673,     Adjusted R-squared: 0.8627
F-statistic: 188.3 on 5 and 144 DF,   p-value: < 2.2e-16

Species를 추가한 모델에서는 Speciesversicolor와 Speciesvirginica라는 두 계수가 더 보인다. Species는 이외에도 setosa가 있는데, 위 결과에는 Speciessetosa 계수가 없다. 그 이유는 범주형 변수 Species를 다음과 같이 2개의 가변수dummy variable를 사용해 표현했기 때문이다.

표 8-4 가변수를 사용한 Species의 표현

표현하고자 하는 Species

Speciesversicolor

Speciesvirginica

setosa

0

0

versicolor

1

0

virginica

0

1

데이터가 어떻게 코딩되는지를 살펴보고 싶다면 model.matrix( ) 함수를 사용한다.

표 8-5 디자인 행렬

model.matrix : 디자인(또는 모델) 행렬을 생성한다.

model.matrix(
  # 객체, 포뮬러 또는 terms 객체. lm을 인자로 주면 model.matrix.lm( )이 호출되고,
  # 이 함수가 적절한 인자를 model.matrix( )에 넘겨준다.
  object,
  data=environment(object)  # 데이터 프레임
)

반환 값은 디자인 행렬이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.