스타의 도서관/통계학

R을 이용한 통계 분석 - 상자그림, 이상치(Outlier) 의 파악

스타(star) 2012. 11. 19. 23:53

이번에는 상자그림을 그리고, 이상치(Outlier)를 파악하는 패키지를 설치 해보도록 하겠습니다.


아래는 69개국의 출생률과 사망률을 조사한 데이터입니다. 

birth.txt

# rates로 자료를 읽어들입니다.

> rates = read.table("~/Downloads/datamine_data/chap2/birth.txt", header=T)


# 오브젝트의 변수를 접근할 수 있도록 합니다.

> attach(rates)


#출생률과 사망률 상자그림 생성

> boxplot(birth, death, names=c("Birth", "Death"))

> title("Birth and Death Boxplot")




위의 코드를 수행하니 다음과 같은 결과를 얻게 되었습니다. 

분석을 해보면, 전반적으로 출생률이 사망률보다 앞서고 있고, 분산의 크기도 큰 것을 알 수 있습니다. 또한, 출산률의 중앙값은 25정도이고, Q1의 값은 20, Q3의 값은 약 40입니다. 사망률의 중앙값은 9정도이고, Q1의 값은 약 8, Q3의 값은 약 10이됩니다. 또한, 사망률의 상자그림을 보면, 출생률보다 이상점도 많다는 것을 알 수 있습니다.


이제, 위의 데이터에서 plot에서 나온 이상치들을 파악해 볼 수 있습니다.

이상치를 파악하기 위해서는 일변량, 이변량, 다변량 기법을 사용할 수 있는데, 위의 예제에서는 일변량 기법을 이용하기로 하겠습니다. 일변량 기법에서는 표준점수가 2.5~4이상인 데이터를 찾아내면 됩니다. 표준에서 거리가 먼 데이터들이 이상치에 가깝겠죠. 


이를 위해서 R의 패키지인 outliers 패키지를 이용해 보겠습니다. 또한, scores 함수를 이용해 데이터들의 표준점수들을 알아보도록 하고, 데이터들의 이상치를 찾아보도록 하겠습니다.


package의 outliers 패키지의 scores를 이용해 파악할 수 있습니다.

# outliers 패키지를 설치.

> install.packages("outliers")


# 다운받은 패키지를 베이스 시스템에 로딩하기 위해 library를 사용합니다.

> library(outliers)


# 표준점수를 확인하기 위해 z-score 옵션을 주고 아래와 같이 수행해 봅니다.

> scores(rates, type=c("z"))


위와 같이 2.5~4가 넘는 표본들은 이상치들 인 것을 확인했습니다.