결측치
IT 위키
더 많은 작업
- Missing Value; 결측값
- 관측되어야 할 자리에 값이 기록되지 않은 데이터
결측치는 설문 무응답, 입력 누락, 장비 오류, 변환 실패 등으로 생긴다. R에서는 NA로 표시한다. 결측치를 그대로 두면 많은 함수가 계산을 하지 못하거나 결측이 있는 행을 자동으로 빼 버리고, 결측이 생긴 원인에 따라서는 분석 결과가 한쪽으로 치우친다. 그래서 먼저 결측이 어떤 방식으로 생겼는지(결측 메커니즘) 따져 본 뒤 처리 방법을 고른다.
- MCAR; Missing Completely at Random
- 결측치가 다른 변수들과 아무런 상관이 없음
- ex) 깜빡하고 데이터를 기입하지 않음, 무작위로 누락됨
- MAR; Missing at Random
- 특정 변수에 관련되어 누락되었지만, 그 변수는 결과와 관련이 없음
- ex) 여자는 몸무게를 적지 않을 확률이 높지만, 여자인 것과 몸무게는 연관이 없음
- MNAR; Missing Not At Random
- 결과에 관련이 있는 변수 때문에 값이 누락됨
- ex) 몸무게가 많이 나가는 사람은 몸무게를 적지 않을 확률이 높음, 결측치인 경우 몸무게가 평균 이상일 것이라고 예상
- ex) 소득이 적은 사람이 소득에 대한 결측값을 가지기 쉽다면(소득이 적은 사람들은 설문에 자기 소득을 밝히기 싫어한다고 가정). 이 데이터는 비무작위 결측이다.
단순 대치법(single imputation)은 결측값 하나를 값 하나로 한 번만 채우는 방법이다. 계산이 쉽지만, 채운 값을 실제로 관측한 값처럼 다루기 때문에 대치에 따른 불확실성이 반영되지 않는다.
| 방법 | 내용 | 장점 | 단점 |
|---|---|---|---|
| 완전 분석법 (complete-case analysis) | 결측값이 하나라도 있는 레코드를 삭제하고, 모든 변수가 관측된 레코드만으로 분석한다. 위의 완전 제거법과 같다. | 가장 간단하고 추가 가정이 필요 없다. | 표본 크기가 줄어 효율이 떨어진다. 결측이 MCAR이 아니면 남은 자료가 모집단을 대표하지 못해 편향이 생긴다. |
| 평균 대치법 - 비조건부 (unconditional mean imputation) | 관측된 값들의 평균(또는 중앙값)으로 결측값을 채운다. | 쉽고 표본 크기가 유지된다. | 같은 값이 여러 번 들어가 분산이 작게 추정되고, 다른 변수와의 상관도 약해진다. |
| 평균 대치법 - 조건부 (conditional mean imputation) | 다른 변수들로 회귀 모형을 만들어 그 예측값으로 채운다. 회귀 대치법이라고도 한다. | 변수 사이의 관계를 이용하므로 비조건부보다 정확하다. | 예측값이 회귀선 위에 놓여 변동이 과소 추정되고, 변수 사이의 관계가 실제보다 강하게 나타난다. |
| 단순 확률 대치법 (single stochastic imputation) | 평균 대치에서 추정량의 표준오차가 과소 추정되는 문제를 보완하려고, 적절한 분포나 비슷한 관측치에서 확률적으로 뽑은 값으로 채운다. | 평균 대치보다 자료의 변동을 잘 유지한다. | 한 번만 대치하므로 대치의 불확실성은 여전히 반영되지 않는다. |
| 핫덱 대치 (hot-deck) | 단순 확률 대치의 한 방법. 같은 데이터 집합 안에서 비슷한 특성을 가진 응답자(donor)를 골라 그 값을 가져온다. | 실제로 관측된 값이 들어가므로 비현실적인 값이 생기지 않는다. | 비슷한 응답자를 정하는 기준에 따라 결과가 달라진다. |
| 콜드덱 대치 (cold-deck) | 단순 확률 대치의 한 방법. 현재 자료가 아니라 이전 조사나 외부 자료 등 다른 출처에서 값을 가져온다. | 현재 자료에 적당한 대체값이 없을 때 쓸 수 있다. | 외부 자료와 현재 자료의 차이가 편향이 될 수 있다. |
| 최근접 대치 (nearest neighbor imputation) | 거리 기준으로 결측이 있는 레코드와 가장 가까운 응답자(또는 k개 이웃)를 찾아 그 값(또는 평균)으로 채운다. K-최근접 이웃 대치라고도 한다. | 변수 사이의 관계를 반영하고 분포 가정이 필요 없다. | 변수 척도를 맞춰야 하며 자료가 크면 거리 계산이 많다. |
다중 대치법(multiple imputation)은 결측값을 한 번이 아니라 여러 번(m번) 서로 다르게 대치해 여러 개의 완전한 자료를 만들고, 각각 분석한 결과를 합쳐 하나의 추정치를 얻는 방법이다. 대치값 사이의 차이를 이용해 대치 때문에 생기는 불확실성까지 표준오차에 반영한다. 자세한 내용은 다중 대체법 문서를 참고한다.
- 대치(imputation) 단계: 결측값을 예측 분포에서 뽑은 값으로 채워 m개의 완전한 데이터 집합을 만든다.
- 분석(analysis) 단계: m개의 데이터 집합 각각에 같은 통계 분석(예: 회귀 분석)을 한다.
- 결합(pooling) 단계: m개의 분석 결과를 하나로 합친다. 추정치는 평균을 내고, 분산은 각 분석 안의 분산과 분석 사이의 분산을 함께 반영한다.
- 단순 대치법과 달리 대치에 따른 불확실성을 반영하므로 표준오차가 과소 추정되지 않는다.
- 결측 메커니즘이 MAR이라는 가정 아래에서 주로 쓴다.
| 함수·패키지 | 용도 |
|---|---|
is.na(x) |
각 원소가 결측(NA 또는 NaN)인지 논리값으로 돌려준다. sum(is.na(x))로 결측 개수를 센다.
|
complete.cases(df) |
결측이 하나도 없는 행이면 TRUE인 논리 벡터를 돌려준다. df[complete.cases(df), ]로 완전한 행만 고른다.
|
na.omit(df) |
결측이 있는 행을 삭제한 객체를 돌려준다(완전 분석법). |
mean(x, na.rm = TRUE) |
결측을 빼고 평균을 계산한다. sum(), sd(), median() 등도 같은 인자를 가진다. 이 인자가 없으면 결과가 NA가 된다.
|
| mice 패키지 | MICE(Multivariate Imputation by Chained Equations) 알고리즘으로 다중 대치를 한다. 변수마다 자체 대치 모형을 둔다. mice()로 대치, with()로 분석, pool()로 결합한다.
|
| Amelia 패키지 | 부트스트랩 기반 알고리즘으로 다중 대치를 한다. 횡단면 자료, 시계열 자료, 시계열-횡단면 자료를 다룰 수 있다. 주 함수는 amelia()이다.
|
- 일부 학습 자료에서 결측치 대치 예제에 쓰는 DMwR2 패키지는 2025-07-10 CRAN 저장소에서 삭제(archived)되어, 현재는 CRAN에서 바로 설치할 수 없고 보관본으로만 받을 수 있다.
x <- c(3, NA, 5, 8)
is.na(x)
sum(is.na(x))
mean(x) # NA 가 섞여 있어 결과도 NA
mean(x, na.rm = TRUE) # NA 를 빼고 계산
df <- airquality
colSums(is.na(df)) # 열별 결측 개수
df_cc <- df[complete.cases(df), ]
df_om <- na.omit(df)
# 비조건부 평균 대치
df$Ozone[is.na(df$Ozone)] <- mean(df$Ozone, na.rm = TRUE)
# mice: 대치 -> 분석 -> 결합
library(mice)
imp <- mice(nhanes, m = 5, seed = 1)
fit <- with(imp, lm(chl ~ age + bmi))
summary(pool(fit))
# Amelia
library(Amelia)
a.out <- amelia(freetrade, m = 5, ts = "year", cs = "country")
- MCAR, MAR, MNAR의 구분. 결측 여부가 어떤 변수와도 관계없으면 MCAR, 관측된 다른 변수와 관계있으면 MAR, 결측된 값 자체와 관계있으면 MNAR이다.
- 완전 분석법은 쉽지만 표본이 줄고, MCAR이 아니면 편향이 생긴다.
- 평균 대치법은 분산(표준오차)을 과소 추정한다. 이를 보완한 것이 단순 확률 대치법(핫덱, 콜드덱, 최근접 대치 등)이다.
- 다중 대치법은 대치 → 분석 → 결합의 세 단계로 이루어진다.
- R에서 결측은 NA이며
is.na(),complete.cases(),na.omit(),na.rm = TRUE의 쓰임을 구분한다.
- An Introduction to R - 2.5 Missing values
- CRAN: Package mice
- CRAN: Package Amelia
- CRAN: Package DMwR2 - 보관 처리 안내
