제 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)
'취미 > 자격증' 카테고리의 다른 글
[데이터분석 전문가/준전문가] 과목 4 - 2장 - 통계 분석 1 (0) | 2020.11.21 |
---|---|
[데이터분석 전문가/준전문가] 과목 4 - 1장 - R 기초와 데이터 마트 4 (0) | 2020.11.20 |
[데이터분석 전문가/준전문가] 과목 4 - 1장 - R 기초와 데이터 마트 1 (0) | 2020.11.20 |
[데이터분석 전문가/준전문가] 과목 3 - 2 장 - 분석 마스터 플랜 (0) | 2020.11.18 |
[데이터분석 전문가/준전문가] 과목 3 - 1 장 - 데이터 분석 기획의 이해 (0) | 2020.11.18 |
댓글