회귀분석의 사전 진단 :: R 기초 통계 - mindscale
Skip to content

회귀분석의 사전 진단

실습을 위해 R에 내장된 cars 데이터를 사용한다.

data(cars)

cars 데이터는 speeddist 두 개의 변수로 이뤄져 있다. 여기서는 speed를 독립변수, dist를 종속변수로 사용한다.

head(cars)
  speed dist
1 4      2  
2 4     10  
3 7      4  
4 7     22  
5 8     16  
6 9     10  

사전작업

산점도에 추세선을 넣어 데이터에 선형적인 패턴이 있는지 확인한다. 아래와 같이 그려보면 대체로 speed가 증가할 수록 dist도 증가하는 관계가 있는 것을 볼 수 있다.

scatter.smooth(cars)

극단값이 있을 경우 회귀분석의 결과가 왜곡될 수 있다. 상자 그림을 그려서 극단값이 있는지 확인해본다. 아래 그림을 보면 dist에서 값 하나가 크게 위에 있는 것을 볼 수 있다.

par(mfrow=c(1,2))                      # 1행 2열 형태로 그래프를 그린다
boxplot(cars$speed, main = "Speed")    # speed의 상자 그림
boxplot(cars$dist, main = "Distance")  # dist의 상자 그림

선형회귀분석은 독립변수와 종속변수가 정규분포를 따를 때 잘 작동한다. 밀도 플롯(density plot)을 그려서 정규분포의 형태인지 확인해본다.

par(mfrow=c(1, 2))
plot(density(cars$speed), main="Speed")    # speed의 밀도 플롯
plot(density(cars$dist), main="Distance")  # dist의 밀도 플롯

대체로 중심부에 데이터가 몰려있고 좌우로 갈 수록 줄어드는 정규분포와 비슷한 형태를 보인다. 앞에서 봤듯이 dist에 위로 치우친 값이 있기 하나 있기 때문에 밀도 플롯도 오른쪽으로 약간 늘어진 모습을 보인다.

데이터가 치우친 정도를 나타내는 왜도(skewness)를 구해본다. e1071 라이브러리가 없을 경우에는 install.packages('e1071')을 실행하여 설치한다.

library(e1071)
skewness(cars$speed)
[1] -0.1105533
skewness(cars$dist)
[1] 0.7591268

speed는 왜도가 -0.11이다 마이너스 쪽으로 약간 치우쳤다는 것을 뜻한다. dist의 왜도는 0.76으로 플러스 쪽으로 어느 정도 치우쳤다. 위에서 그래프로 본 것과 비슷한 결과이다.

문제가 심각해보이지는 않으므로 일단 분석을 실시해보자.