완전성

R로 데이터 정리하기

Maggie Matsui

Content Developer @ DataCamp

결측값이란?

완성된 퍼즐에서 한 조각이 빠져 있음. 설명: 관측치의 변수에 값이 저장되지 않은 경우 발생.

NA, nan, 0, 99, . 등으로 표시될 수 있음

R로 데이터 정리하기

결측값이란?

missing.png

NA, nan, 0, 99, . 등으로 표시될 수 있음

기술적 오류를 나타내는 로봇.

R로 데이터 정리하기

결측값이란?

missing.png

NA, nan, 0, 99, . 등으로 표시될 수 있음

사람의 실수를 나타내는 사람 그림.

R로 데이터 정리하기

대기질 데이터

head(airquality)
   Ozone Solar.R Wind Temp Month Day
1     41     190  7.4   67     5   1
2     36     118  8.0   72     5   2
3     12     149 12.6   74     5   3
4     18     313 11.5   62     5   4
5     NA      NA 14.3   56     5   5
6     28      NA 14.9   66     5   6
R로 데이터 정리하기

대기질 데이터

head(airquality)
   Ozone Solar.R Wind Temp Month Day
1     41     190  7.4   67     5   1
2     36     118  8.0   72     5   2
3     12     149 12.6   74     5   3
4     18     313 11.5   62     5   4
5     NA      NA 14.3   56     5   5
6     28      NA 14.9   66     5   6
R로 데이터 정리하기

결측값 찾기

is.na(airquality)
     Ozone Solar.R  Wind  Temp Month   Day
[1,] FALSE   FALSE FALSE FALSE FALSE FALSE
[2,] FALSE   FALSE FALSE FALSE FALSE FALSE
[3,] FALSE   FALSE FALSE FALSE FALSE FALSE
[4,] FALSE   FALSE FALSE FALSE FALSE FALSE
[5,]  TRUE    TRUE FALSE FALSE FALSE FALSE
[6,] FALSE    TRUE FALSE FALSE FALSE FALSE
R로 데이터 정리하기

결측값 세기

# Count missing vals in entire dataset
sum(is.na(airquality))
44
R로 데이터 정리하기

결측값 시각화

library(visdat)
vis_miss(airquality)

코드로 만든 시각화. 가장 왼쪽 열에 검은 선이 가장 많고, 두 번째 열에 그다음으로 많습니다. 다른 열에는 검은 선이 없습니다.

R로 데이터 정리하기

결측성 탐색

airquality %>%
  mutate(miss_ozone = is.na(Ozone)) %>%

group_by(miss_ozone) %>% summarize(across(everything(), median, na.rm = TRUE))
  miss_ozone Ozone Solar.R  Wind  Temp Month   Day
  <lgl>      <dbl>   <int> <dbl> <dbl> <dbl> <dbl>
1 FALSE       31.5     207   9.7    65     7    16
2 TRUE        NA       194   9.7    99     6    15
R로 데이터 정리하기

결측성 탐색

airquality %>%
  arrange(Temp) %>%
  vis_miss()

이전과 같은 시각화이지만, Ozone을 나타내는 왼쪽 열에서 결측값이 아래쪽에만 있습니다.

R로 데이터 정리하기

결측값 유형

왼쪽: 무작위 완전 결측을 나타내는 6면체 주사위. 가운데: 무작위 결측을 나타내는 각 면에 점이 하나뿐인 주사위. 오른쪽: 비무작위 결측을 나타내는 순환 화살표 네 개.

R로 데이터 정리하기

결측값 유형

무작위 완전 결측: 결측과 다른 값 사이에 체계적 관계가 없음. 예: 입력 중 데이터 입력 오류.

R로 데이터 정리하기

결측값 유형

무작위 결측: 결측과 관측된 다른 값 사이에 체계적 관계가 있음. 예: 고온에서 오존 결측.

R로 데이터 정리하기

결측성 유형

비무작위 결측: 결측과 관측되지 않은 값 사이에 체계적 관계가 있음. 예: 고온에서 온도 결측.

R로 데이터 정리하기

결측값 처리

간단한 방법:

  1. 결측 데이터 제거
  2. 통계값(평균, 중앙값, 최빈값 등) 또는 도메인 지식으로 대치

고급 방법:

  1. 알고리즘 기반 대치
  2. 머신러닝 모델로 대치

 

자세히: Dealing with Missing Data in R

R로 데이터 정리하기

결측값 제거

airquality %>%
  filter(!is.na(Ozone), !is.na(Solar.R))
   Ozone Solar.R  Wind  Temp Month   Day
   <int>   <int> <dbl> <int> <int> <int>
 1    41     190   7.4    67     5     1
 2    36     118     8    72     5     2
 3    12     149  12.6    74     5     3
 4    18     313  11.5    62     5     4
 5    23     299   8.6    65     5     7
 6    19      99  13.8    59     5     8
R로 데이터 정리하기

결측값 대치

airquality %>%
  mutate(ozone_filled = ifelse(is.na(Ozone), mean(Ozone, na.rm = TRUE), Ozone))
   Ozone Solar.R  Wind  Temp Month   Day ozone_filled
   <int>   <int> <dbl> <int> <int> <int>        <dbl>
 1    41     190   7.4    67     5     1         41  
 2    36     118   8      72     5     2         36  
 3    12     149  12.6    74     5     3         12  
 4    18     313  11.5    62     5     4         18  
 5    NA      NA  14.3    56     5     5         42.1
R로 데이터 정리하기

연습해 봅시다!

R로 데이터 정리하기

Preparing Video For Download...