SW/R

R : 이상치-데이터 전처리 ( 개념 및 예제 )

얇은생각 2019. 3. 6. 12:30
반응형

이상치(outlier)

정상 범위 밖에 있는 값을 뜻합니다. 잘못 입력한 값일 수도 있지만 실제 값일 수도 있습니다. 이런 이상치들은 전체 데이터 분포의 특성에 영향을 미칩니다. 품질 관리에 있어서 불량을 찾을 때 제일 먼저 찾아 보는 것이기도 합니다. 또 금융 사기 거래를 탐지할 떄 사용되기도 합니다. 이상치를 제외하고 분석을 할지, 포함해서 분석을 할지 판단해야 합니다.





이상치 판단 방법

논리적으로 있을 수 없는 값이 있는 지 찾아봅니다. 성별에서 좋아하는 색깔을 1~5로 표시하기로 했는데 7인 경우에는 잘못된 값입니다. 또, 상식을 벗어난 값이 있는 지 찾아봅니다. 나이가 100살이 넘는 경우우는 힘들겠죠? 또 이상치를 판단할 때 boxplot을 활용해봅니다.


이상치 탐색을 해보겠습니다. 아래 예제코드를 실행을 하면 동그라미로 이상치 값이 표시가 됩니다. 


st <- data.frame(state.x77)
boxplot(st$Income)
boxplot.stats(st$Income)$out
# [1] 6315





각 컬럼의 이상치를 NA 처리한 후 NA 를 포함한 행들을 제거할 수 있습니다. 이런 작업을 통해 이상치에 대한 데이터를 전처리 할 수 있습니다. %in% 을 사용하는 경우가 있습니다. 그 이유는 out.val 이 여러 값을 포함하는 경우가 있기 때문입니다.


out.val <- boxplot.stats(st$Income)$out
st$Income[st$Income %in% out.val] = NA
st$Income
# [1] 3624 NA 4530 3378 5114 4884 5348 4809 4815 4091 4963 4119 5107 4458 4628
# [16] 4669 3712 3545 3694 5299 4755 4751 4675 3098 4254 4347 4508 5149 4281 5237
# [31] 3601 4903 3875 5087 4561 3983 4660 4449 4558 3635 4167 3821 4188 4022 3907
# [46] 4701 4864 3617 4468 4566
newdata <- st[complete.cases(st),]


반응형