더북(TheBook)

중선형 회귀 모델의 시각화

앞서 ‘Sepal.Length ~ . ’로부터 만든 모델은 여러 개의 독립 변수를 사용했다. 그러나 2차원 이상의 데이터는 쉽게 표시할 수 없으므로 여기서는 Species와 Sepal.Width만 사용해 시각화를 해보자. 다음은 아이리스 데이터를 Species별로 Sepal.Width, Sepal.Length 차원에 산점도로 그린 예다.

> with(iris, plot(Sepal.Width, Sepal.Length,
+                 cex=.7,
+                 pch=as.numeric(Species)))

위 코드에서 cex는 점의 크기를 지정하는 옵션이며, pch는 점의 형태를 정한다. as.numeric( )을 Species인 범주형 변수에 적용했으므로 Species의 종별로 1, 2, 3의 값을 갖게 된다. 즉, pch는 다음과 같이 지정된다.

> as.numeric(iris$Species)
  [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 [75] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3
[112] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
[149] 3 3

다음은 회귀 직선을 그릴 차례다. Sepal.Width와 Species만 사용하기로 했으므로 모델을 새로 적합하고 계수를 구한다.

> m <- lm(Sepal.Length ~ Sepal.Width + Species, data=iris)
> coef(m)
 (Intercept) Sepal.Width Speciesversicolor Speciesvirginica
   2.2513932   0.8035609         1.4587431        1.9468166

회귀 직선은 abline( )을 사용해 그린다. abline( )의 첫 번째 인자는 절편, 두 번째 인자는 기울기며 lty는 선의 유형을 지정한다.

> abline(2.25, 0.80, lty=1)
> abline(2.25 + 1.45, 0.80, lty=2)
> abline(2.25 + 1.94, 0.80, lty=3)

알아보기 쉽게 legend( )를 사용해 범례를 표시하자.

> legend("topright", levels(iris$Species), pch=1:3, bg="white")

위 코드에서 bg=“white”는 배경을 흰색으로 칠해준다. 이렇게 하면 범주가 표시된 사각형 안의 데이터는 가려지므로 범주를 읽기 편해진다. pch는 앞서 plot( )에서 사용한 1, 2, 3을 차례로 지정한 것이다. levels( )는 범주형 변수의 각 레벨의 이름을 반환한다. levels(iris$Species)의 결과는 다음과 같다.

> levels(iris$Species)
[1] "setosa"     "versicolor" "virginica"

코드를 한 번에 정리하면 다음과 같다.

> with(iris, plot(Sepal.Width, Sepal.Length,
+                 cex=.7,
+                 pch=as.numeric(Species)))
> m <- lm(Sepal.Length ~ Sepal.Width + Species, data=iris)
> coef(m)
  (Intercept) Sepal.Width Speciesversicolor Speciesvirginica
    2.2513932   0.8035609         1.4587431        1.9468166
> abline(2.25, 0.80, lty=1)
> abline(2.25 + 1.45, 0.80, lty=2)
> abline(2.25 + 1.94, 0.80, lty=3)
> legend("topright", levels(iris$Species), pch=1:3, bg="white")

결과는 그림 8-6에 보였다.

그림 8-6 아이리스 데이터에 대한 Species별 선형 회귀 모델의 시각화
그림 8-6 아이리스 데이터에 대한 Species별 선형 회귀 모델의 시각화
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.