※ 해당 내용은 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)
'Programming > R _ Data' 카테고리의 다른 글
[ADP/4과목②] 데이터 분석 _ 데이터 마트 (0) | 2021.09.27 |
---|---|
[ADP/4과목①] 데이터 분석 _ R 기초 (0) | 2021.09.26 |
[ R ] ggplot2 막대 그래프 그리기 ( geom_bar() ) (0) | 2021.05.24 |
[ R ] ggplot2 기하 그래프 그리기 ( geom_smooth() ) (0) | 2021.05.23 |
[ R ] ggplot2 다양한 방식의 산점도 작성 ( geom_point() ) (0) | 2021.05.23 |