본문 바로가기
R

R ) 결측치 확인 및 처리 NA mice pmm in r -2

by C.Mond 2022. 4. 19.
728x90
728x90

안녕하세요

 

오늘은 결측치 처리1에 이어서 기록을 하려고 합니다.

 

결측치 처리 방법에는 단순대체,  NA포함 항 삭제, 다중대체, NA포함 항 삭제 등의 방법이 있습니다.

 

단순대체는 예전에 다룬적이 있어 참고하면 되겠습니다.

https://c-mond.tistory.com/46

 

R ) data에서 결측치 처리하기 mean, max, min, median 등등 in r

안녕하세요~ 오늘은 R을 이용해 data의 결측치를 처리하는 법에 대해 보겠습니다. 여러방법이 있겠지만.... map함수를 이용해 data의 결측치를 처리해 보겠습니다. map함수는 purrr 라이브러리에 있는

c-mond.tistory.com

 

NA를 포함하는 행을 삭제하는 방법을 보겠습니다.

iris
set.seed(1)
test <- prodNA(iris,noNA=0.1)
summary(test)

iris data에 75개의 NA값을 무작위로 준 data를 사용하겠습니다.

 

complete.cases(test)

complete.cases()함수는 행에 하나의 NA라도 있으면 False를 반환합니다.

해당 함수를 이용해 NA가 포함된 항을 제거할 수 있습니다.

test[complete.cases(test),]

다음과 같이 NA를 포함한 행을 제거할 수 있습니다.

 

다중대체를 하는 방법에 대해 보겠습니다.

 

R내에서 다중대체는 mice package의 mice함수를 이용해 할 수 있습니다.

 

mice외에 다른방법으로 다중대체 할 수 있는 방법이 있는듯 합니다만 이는 공부를 더 해봐야할것 같습니다.

MICE는 Multiveriate Imputation by Chained Equations의 약자 입니다.

다중 대체법 중 하나의 방법인것 같습니다.

 

test.mi <- mice(data=test,
m=5,
method="pmm",
seed=123,
maxit=10)
summary(test.mi)

인자들에 대해 보자면

data : 결측 값을 포함한 data

m = 결측값을 채운 데이터셋을 여러개 생성

method = 다중 대체하는 방법을 지정합니다.

method는 위와 같은 방법들이 있는것 같습니다.

seed : 같은 결과를 얻기위해 정해주는 인자입니다.

maxit : 다중 대체 값을 생성할때 반복할 횟수를 정합니다.

 

test.mi$imp$Sepal.Length
test.mi$imp$Sepal.Width
test.mi$imp$Petal.Length
test.mi$imp$Petal.Width
test.mi$imp$Species

위 코드를 실행하면 각 결측값에 대한 대체값이 나오며

test.mi2 <- complete(data=test.mi,action=1)

위 코드를 이용해 결측치를 대체할 수 있습니다.

 

흠... mice를 공부하면서든 생각이 m의 숫자에 따라 결측치가 채워진 data set을 만들때 maxit의 숫자만큼 반복을 하는것이고 이떄 pmm의 방법을 쓰는것이고 반복한 횟수의 평균을 대체값으로 보여주는것이다 인것 같은데 이는 공부를 하고 다시 기록해야할것 같다....

 

maxit만큼 반복하고 평균을 내는 듯합니다

원본데이터의 평균, 표준편차를 이용해 랜덤 샘플링 한다고 합니다 그래서 dataset마다 결과가 다르다고 함 

 

m=5로 나온 data set을 이용해 각각의 회귀모델을 만들어 하나로 합친뒤 결측치를 대체하는 방법도 있는듯 하다.

 

내생각에는 저렇게나온 5개의 값을 평균으로 넣는 방법도 생각해 볼만한것 같다.

728x90
728x90

댓글