※ 해당 내용은 ADP를 준비하며 학습한 내용을 정리한 것 입니다.

 

1. 데이터 탐색

데이터를 분석하기 전에 대략의 데이터의 특성을 파악하고, 데이터에 대한 통찰을 얻기 위해 다각도로 접근한다.

 

  . 기초 데이터 탐색 ( 예시 )

data(iris)
head(iris, 10) # 데이터 앞 10줄만 출력
str(iris) # 데이터 구조 파악
summary(iris) # 데이터의 기초 통계량 출력
cov(iris[,1:4]) # 공분산
cor(iris[,1:4]) # 상관계수

2. 결측값 처리

결측값을 어떻게 처리하느냐에 따라 작업속도가 달라진다.

 

 . 간단한 결측값 제거

  → 해당 방법은 결측값이 포함된 관측치를 모두 제거한다. 결측값이 넓게 분포된 경우 주의가 필요.

y <- c(1,2,3,NA)
is.na(y)

y[complete.cases(y)] # 결측값 제거

y

 

R에서 주로 결측값처리에는 Amelia II, Mice, mistools 등 여러가지 패키지가 활용.

 

이 중 Amelia 패키지를 실습해 보자

 

library(Amelia)

data(freetrade)
head(freetrade)
str(freetrade)

# m = 몇개의 imputation 데이터셋을 만들지 결정하는 값
# ts = 시계열 정보, cs = cross-sectional 정보
# 즉, 아래 모델에서는 연도와 국가를 고려해
# 모든 freetrade 정보를 활용한 결측값에 대한 imputation(대체)가 이루어 짐
a.out <- amelia(freetrade, m=5, ts = "year", cs = "country")
hist(a.out$imputations[[5]]$tariff, col="grey", border="white")
save(a.out, file = "imputation.RData")
write.amelia(obj=a.out, file.stem="outdata")

missmap(freetrade) # 결측값 처리 전

 

#결측값 처리, inputation
freetrade$tariff <- a.out$imputations[[5]]$tariff
missmap(freetrade) # 결측값 처리 후

3. 이상값 검색

 . 이상값 검색의 활용

  ① 전처리를 어떻게 할지를 결정

  ② 부정사용방지 시스템에서 규칙을 발견하는데 사용

 

 . 이상값의 분류

  ① 의도하지 않게 잘못 입력한 경우 ( a1 )

  ② 의도하지 않계 입력되었으나 분석 목적에 부합하지 않아 제거해야하는 경우 ( a2 )

  ③ 의도되지 않은 현상이지만 분석에 포함해야 하는 경우 ( a3 )

  ④ 의도된 이상값인 경우 ( b1 )

 

 . 관련 알고리즘

  → ESD(Extreme Studentized Deviation)

      : 평균으로부터 K*표준편차만큼 떨어져 있는 값을 이상값으로 판단, 일반적으로 K=3으로 한다.

 

  . 상자그림으로 이상값 식별

x <- rnorm(100)
x <- c(x, 19, 28,30) # 이상값 추가
boxplot(x)

 

  . outliers 패키지 사용

library(outliers)
set.seed(1234)
y=rnorm(100)
outlier(y) # 평균과 가장 많이 차이나는 값 출력
outlier(y, opposite=TRUE)
dim(y) = c(20,5) # 행 20 열 5의 행렬 생성
outlier(y) # 각 열의 평균과 가장 차이가 많은 값을 각 열별로 출력

 # 각 열별로 반대 방향으로 열 평균과 가장 차이가 많은 값 출력

outlier(y, opposite = TRUE)
boxplot(y)

+ Recent posts