본문 바로가기
데이터분석/ADP

PART04.2장 R 프로그래밍 기초(결측값 처리와 이상값 검색)

by Mr.꾸 2022. 6. 8.
반응형

PART04.2장 R 프로그래밍 기초(결측 값 처리와 이상 값 검색)

 

데이터 탐색

  • 데이터 기초 통계

  • 결측 값 처리
    • 결측 값 결측 값 : NA ( not available)
    • 불가능한 값 : NAN(not a number), eg) dividing by zero

  • Amelia
    • 결측 값 값 처리 방법
      1. 단순 대치법
        - completes analysis : 결측 레코드 삭제 - 너무 많은 레코드에 분포해 있다면 문제가 있음
        - 평균 대치법(Mean imputation) : 해당 변수의 대푯값 대체
          ① 비조건부 평균 대치법 : 관측 데이터의 평균으로 대치
          ② 조건부 평균 대치법 : 회귀분석을 활용한 대치법
        - 단순 확률 대치법(Single Stochastic Imputation) : 평균 대치법에서 추정량 표준 오차의 과소 추정 문제를 보완하고자 고안, Hot-deck 방법, nearest neighbor 방법
      2. 다중 대치법(Multiple Imputation)
        - 단순 대치법을 한번 하지 않고, m번의 대치를 통해 m개의 완전 자료를 만드는 방법
        - 1단계 : 대치(imputation step), 2단계 : 분석(Analysis step), 3단계 : 결합(combination step)
        - 변수들 간의 관계를 이용해 imputation

a.out <- amelia(freetrade, m=5, ts="year", cs="country")
# m : 몇개의 imputation 데이터 세트를 만들기 결정하는 값
# ts : 시계열에 대한 정보
# cs : cross-sectiona 분석에 포함될 정보
# 연도와 국가를 고려해 모든 freetrade 정보를 활용한 결측값에 대한 imputation
str(a.out)
hist(a.out$imputations[[3]]$tariff, col="grey", border="white")
save(a.out, file="imputation.RData")
write.amelia(obj=a.out, file.stem="outdata")
# a.out은 결측값들이 imputation 방법에 의해 대체된 5개의 데이터셋을 포함하고, 각 데이터셋이 outdat(1~5).csv 이름으로 생성

missmap(a.out) # missmap을 통해 결측치 확인

# imputation 값으로 변경하고 결측치 확인
freetrade$tariff <- a.out$imputations[[3]]$tariff
missmap(freetrade)

  • 결측 값 처리 관련 함수
이상 값  
   
   
   
   
 

 

검색(Outlier)

 

  • FDS에서 개념 찾기
    • a1 : 의도하지 않게 잘못 입력한 경우
    • a2 : 의도하지 않게 입력됐으나 분석 목적에 부합되지 않아 제거해야 하는 경우
      1. POS 데이터에서 수작업으로 일정 시간에 일괄적으로 입력하는 경우 시간대별 매출 분석에서는 제외 필요
    • a3 : 의도되지 않은 현상이지만 분석에 포함해야 하는 경우
      1. 고객 분석에서는 포함되어야 할 영역
    • b1 : 의도된 이상 값 => 사기
    • a1, a2 -> bad data
    • a3, b1 -> 이상
  • 관련 알고리즘 : ESD(Extreme Studentized Deviation), MADM
    • ESD는 평균으로부터 k* 표준편차만큼 떨어져 있는 값들을 이상 값으로 판단, 일반적으로 k는 3
      1. 평균으로 3 표준편차 떨어진 값(각 0.15%)
    • 사분위수 이용(boxplot)
      1. 이상 값 : Q1-1.5(Q3-Q1) < data < Q3+1.5(Q3-Q1)
      2. out fence : 1.5 * (Q3 - Q1)
    • 기하평균 -2.5*표준편차 < data < 기하평균+2.5*표준편차
      1. 기하평균 : https://terms.naver.com/entry.naver?docId=1071632&cid=40942&categoryId=32215
 

기하평균

n개의 양수가 있을 때, 이들 수의 곱의 n제곱근 값이다. 다음과 같이 가로 16m, 세로 2m, 높이 2m 크기의 직사각형 수조에 물이 가득 담겨있다. 이 물의 부피를 구하면 16x2x2=64㎥가 된다. 그런데 만약

terms.naver.com

 

  • 실전에서는 FDS 영역 말고는 너무 많은 시간을 쓰는 것을 추천하지 않음

이상값이 없음이 보임

x=rnorm(100)
x=c(x, 19, 28,30)
outwith=boxplot(x)
outwith$out # 이상값 출력

이상값 존재

  • boxplot

https://blog.naver.com/tlrror9496/222005074258

 

[R] 상자 도표(Box Plot)

#기술통계 #상자도표 오늘은 "상자 도표"라는 데이터 시각화 도구에 대해서 알아보겠습니다. 상...

blog.naver.com

  • outlier 패키지
install.packages("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)

  • 극단값 절단(trimming) 방법
    • 기하평균을 이용한 제거
      1. geo_mean
    • 하단, 상단 % 이용한 제거
      1. 10% 절단 ( 상하위 5%에 해당하는)
  • 극단값 조정(winsorizing) 방법
    • 상하한 값을 벗어나는 값을 상하한 값으로 치환
    • 극단값 절단 방법보다 데이터 손실률도 적고 설명력이 높다.

 

728x90

댓글