본문 바로가기
취미/자격증

[데이터분석 전문가/준전문가] 과목 4 - 1장 - R 기초와 데이터 마트 3

by UltraLowTemp-Physics 2020. 11. 20.
728x90

제 3절 결측값 처리와 이상값 검색 


1. 데이터 탐색

■ 데이터 기초 통계 

head(<data>) : <data>에서 앞 6줄만 보도록 한다. 
head(<data>, n) : <data>에서 앞에서 n번째 줄까지 보도록 한다.
str(<data>): <data>의 구조를 파악한다. 
summary(<data>): <data>의 기초 통계량들을 확인한다.
   - 평균값, 표준편차, 분산, 중앙값 등을 출력
   - 범주형 변수의 경우, 각 범주에 대한 빈도수를 출력하여 데이터의 분포를 파악 
   - 연속형 변수의 경우, cov와 cor 함수를 통해 공분산행렬과 상관계수행렬를 출력

1) head(iris)

> data("iris")
> head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

 

2) head(iris, 10)

> head(iris, 10)
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1           5.1         3.5          1.4         0.2  setosa
2           4.9         3.0          1.4         0.2  setosa
3           4.7         3.2          1.3         0.2  setosa
4           4.6         3.1          1.5         0.2  setosa
5           5.0         3.6          1.4         0.2  setosa
6           5.4         3.9          1.7         0.4  setosa
7           4.6         3.4          1.4         0.3  setosa
8           5.0         3.4          1.5         0.2  setosa
9           4.4         2.9          1.4         0.2  setosa
10          4.9         3.1          1.5         0.1  setosa

 

3) str(iris)

> str(iris)
'data.frame':	150 obs. of  5 variables:
 $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
 $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
 $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
 $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...

 

4) summary(iris)

> summary(iris)
  Sepal.Length    Sepal.Width     Petal.Length    Petal.Width          Species  
 Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100   setosa    :50  
 1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300   versicolor:50  
 Median :5.800   Median :3.000   Median :4.350   Median :1.300   virginica :50  
 Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199                  
 3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800                  
 Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500

 

2. 결측값 (Missing Data) 처리 

• R에서 결측값 처리와 관련된 패키지: Amelia 2, Mice, mistools
 1) 결측값을 NA(not Available)로 처리함
 2) 불가능한 값은 NaN (Not a number)로 처리함 
    - is.na()를 이용하여 결측값인지 여부를 파악가능 
• 일반적인 결측값 처리 방식은 결측값이 포함된 해당 레코드를 모두 삭제하는 것이지만, 전체적으로 결측값이 많은 레코드에 분포할 경우에는 많은 자료가 삭제되므로 정보를 획득하기 어려워 질 수 있다.
• 변수들 간의 관계를 이용해, imputation을 하는 방법이 결측값을 처리하는데에 효율적이다.

3. 이상값 (Outlier) 검색

• 분석에서 전처리를 어떻게 할지를 결정할 때와 부정사용 방지 시스템에서 규칙을 발견하는데에 사용할 수 있음
• 이상값이란?
(a) a1: 의도하지 않게 잘못 입력한 경우 
(b) a2: 의도하지 않게 입력되었지만, 분석 목적에 부합되지 않아 제거해야하는 경우 
(c) a3: 의도되지 않은 현상이지만 분석에 포함해야하는 경우
(d) b1: 의도된 이상값 (대부분의 b1은 사기(fraud)) 
※ a1, a2: bad data
※ a3, b1: 이상값 

• 이상값과 관련된 알고리즘: ESD (extreme studentized deviation), MADM
※ 실전에서는 이상값을 찾기 위해 너무 많은 시간을 쓰지 않는 것을 추천하지만, 부정사용 프로젝트 같은 경우에는 시간을 많이 할당하여야 한다. 

• 이상값을 확인하는 방법 
1) boxplot을 이용 
2) "outliers" 패키지를 사용
  - 이상값일 가능성이 큰 값을 찾아내어 줌 
  - 평균과 가장 큰 차이가 있는 값을 알려줌 
  - opposite=TRUE라는 옵션을 사용하면 반대편으로 평균과 가장 큰 값을 알려줌 

> library("outliers")
> set.seed(1234)
> y=rnorm(100)
> outlier(y)                   # 평균과 가장 차이가 많이 나는 값 출력 
[1] 2.548991 
> outlier(y, opposite=TRUE)    # 반대 방향으로 가장 차이가 많이 나는 값 출력
[1] -2.345698            
> dim(y) = c(20, 5)            # 행 20 열 5의 행렬 생성  
> outlier(y)                   # 각 열의 평균과 가장 차이가 많은 값을 열별로 출력
[1] 2.415835 1.102298 1.647817 2.548991 2.121117
> outlier(y, opposite = TRUE)
[1] -2.345698 -2.180040 -1.806031 -1.390701 -1.372302
> boxplot(y)

728x90

댓글