당연한 이야기지만, 결측값 역시 시각화해서 한눈에 파악할 수 있습니다. 다만 그렇게 하기 위해서는 plot 같은 기본 명령어를 사용하기 위해서 결측값을 특정값으로 바꿔야만 하는 등 복잡한 과정을 거쳐야만 합니다. VIM 패키지는 결측값의 시각화를 돕는 패키지로 여기서는 간단한 사용법을 살펴보고 나중에 예제 데이터와 함께 같이 사용해 보겠습니다.
우선 VIM 패키지를 설치하고 불러들입니다. 예제 데이터로는 사실 적합하지는 않지만, diamonds 데이터에서 컷이 Good, 그리고 1 캐럿이 넘는 값들을 모두 결측값으로 바꿔 사용해 보겠습니다.
library("VIM")
library("ggplot2")
replace(diamonds$carat,diamonds$carat>1,NA)->diamonds$carat
replace(diamonds$cut,diamonds$cut=="Good",NA)->diamonds$cut
summary(diamonds)
summary 기능을 활용하면 정상적으로 결측값이 변경되었는지 알 수 있습니다.
결측값이 모두 잘 생성된 것으로 보입니다. 여기에서 VIM의 aggr 명령어를 사용해 보겠습니다.
VIM::aggr(diamonds,prop=FALSE,numbers=TRUE)
사용법은 aggr(데이터 셋. 기타 옵션)의 형태입니다. 위의 형태에서 diamonds 대신 다른 데이터 프레임을 적어주는 것이 기본 형태이며 더 상세한 옵션은 ?aggr로 파악할 수 있습니다.
사진이 작게 보이면 클릭하면 원본이 나오거나 혹은 R 콘솔 및 R 스튜디오에서 확인이 가능합니다.
보는 법은 간단합니다. 우선 왼쪽 그래프로 결측값의 수와 종류를 확인할 수 있습니다. 우측 표는 carat 만 결측값이 있는 경우, cut만 결측값이 있는 경우, cut과 carat 모두 결측값이 있는 경우를 보여줍니다. 이는 한눈에 결측값의 분포를 확인하는데 도움을 줄 수 있습니다. 다만 항목이 많아지면 보기 힘들어지니 보고자 하는 변수의 숫자를 적절하게 줄여야 합니다.
두 변수의 결측값의 연관성을 보려면 marginplot 기능을 이용합니다. marginplot(데이터셋(변수 이름), 크기, 변수 색상) 의 방법입니다.
VIM::marginplot(diamonds[c("carat","cut")],pch=20,col=c("darkgray","red"))
여기서 보면 cut은 한 가지 종류만 결측값이 생겼다는 것을 한눈에 파악이 가능합니다.
지금은 결측값이 인위적으로 만들어 매우 단순하지만, 실제 데이터의 결측값은 그렇게 단순하지 않습니다. 앞으로 여러 가지 데이터를 다루면서 이 문제를 설명해 보겠습니다.
댓글
댓글 쓰기