본문 바로가기
Data Science/Data Analytics

[ADP-11] R을 활용한 데이터 기초 통계 / 결측값 처리 / 이상값 탐색

by 루크 Luke 2022. 8. 16.
반응형

데이터 기초 통계

head(df)
# 데이터에서 앞 6줄만 보도록 함

head(df, 10)
# 숫자를 넣어주면 원하는 개수만큼 볼 수 있음

str(df)
# 데이터의 구조를 파악할 수 있도록 보여줌

summary(df)
# 데이터의 기초 통계량을 볼 수 있음

cov(df[, 1:4])
# 컬럼 1~4의 공분산을 구해줌

cor(df[, 1:4])
# 컬럼 1~4의 상관계수를 구해줌

 

결측값 처리

- R에서 결측값 처리 관련 패키지는 Amelia 2, Mice, mistools 등이 있으며, Amelia가 대표적임

- R에서 결측값은 NA(Not available)로 처리함

- 불가능한 값(예를 들면 dividing by zero)는 NaN(Not a Number)으로 처리됨

- is.na(y) : 결측값인지 여부를 보여줌

- 특정값을 결측값으로 입력한 경우, 변환해서 처리할 수 있음

df[df$v1 == 99, "v1"] <= NA

 

- 평균 산출 등 데이터 처리에서 결측값으로 인한 문제를 해결하는 방법으로는 해당값을 제외하는 방법이 있음

mean(x, na.rm=T)

 

- 결측값이 포함된 관측치를 complete.cases()함수를 이용해 삭제할 수 있는데, 결측값이 너무 넓게 분포되면 주의해야 함

df[!complete.cases(df)]

 

- Amelia를 사용하여 결측값을 처리

install.packages("Amelia")
library(Amelia)
amelia(df, m=5, ts="year", cs="country")
# imputation 방식의 결측값 대체
# m은 5개의 imputation 데이터 세트, 
# ts는 시계열 정보,
# cs는 cross-sectional 분석에 포함될 정보임

 

이상값 탐색

- 분석에서 전처리를 어떻게 할지를 결정할 때와 부정사용방지 시스템(Fraud Detection System, FDS)에서 규칙을 발견하는 데 사용할 수 있음

1) 의도하기 않게 잘못 입력한 경우 - Bad Data

2) 의도하지 않게 입력됐으나 분석 목적에 부합되지 않아 제거해야 하는 경우 - Bad Data

3) 의도되지 않은 현상이지만 분석에 포함해야 하는 경우 - 이상값(Outlier)

4) 의도된 이상값 - 이상값(Outlier) & 사기(Fraud)

 

- 이상값 탐색 관련 알고리즘 : ESD(Extreme Studentized Deviation), MADM

- ESD : 평균으로부터 k*표준편차만큼 떨어져 있는 값들을 이상값으로 판단하고, 일반적으로 k는 3으로 함

- outlier 패키지를 사용하여 이상값일 가능성이 큰 값을 찾아내어 주는 방법도 있음

- outlier(y) : 평균과 가장 차이가 많이 나는 값을 출력

- outlier(y, opposite=TRUE) : 반대편으로 평균과 가장 큰 차이가 있는 값을 알려줌

반응형

댓글