2017-02-11 4 views
1

다음 두 개의 R 함수는 "누락 된 데이터의 유연한 대체"(59 페이지 및 63 페이지)에서 가져온 것입니다. 첫 번째는 완전 무작위 (MCAR) 데이터 누락을 생성하고 두 번째는 누락 (MAR) 데이터 누락을 생성합니다. 두 함수 모두 약 50 %의 누락 값을 제공합니다.MAR 데이터의 다른 백분율 생성 R

MCAR 함수에서 p 값을 변경하여 누락 된 데이터의 다른 비율을 생성 할 수 있습니다. 그러나 MAR 함수에서는 10 % 또는 30 % 같은 누락 된 데이터의 다른 비율을 생성하기 위해 어떤 매개 변수를 변경해야하는지 이해하지 못합니다.

MCAR

makemissing <- function(data, p=0.5){ 
    rx <- rbinom(nrow(data), 1, p) 
    data[rx==0,"y"] <- NA 
    return(data) 
} 

MAR

logistic <- function(x) exp(x)/(1+exp(x)) 
set.seed(32881) 
n <- 10000 
y <- mvrnorm(n=n,mu=c(5,5),Sigma=matrix(c(1,0.6,0.6,1),nrow=2)) 
p2.marright <- 1 - logistic(-5 + y[,1]) 
r2.marright <- rbinom(n, 1, p2.marright) 
yobs <- y 
yobs[r2.marright==0, 2] <- NA 
+1

누락 된 데이터 주제에 대한 자세한 내용은 Roderick J.A.의 누락 된 데이터로 통계 분석 2 판을 참조하십시오. Little and Donald B. Rubin (2002) Wiley **. –

답변

0

정의함으로써 missingness 임의되기 때문 누락되는 관측 확률이 MCAR 함수에 대한 모든 경우에 50 %이다. MAR 버전의 경우 누락 된 관찰 확률은 y[,1]의 값에 따라 달라 지므로 각 관찰마다 다릅니다. 코드에서 y[,2]의 누락 확률은 변수 p2.marright에 저장됩니다.

df <- data.frame(y1 = y[,1], y2_ori = y[,2], y2_mis = yobs[,2], p2.marright = p2.marright, r2.marright) 
head(df) 
     y1 y2_ori y2_mis p2.marright r2.marright 
1 2.086475 3.432803 3.432803 0.9485110   1 
2 3.784675 5.005584 5.005584 0.7712399   1 
3 4.818409 5.356688  NA 0.5452733   0 
4 2.937422 3.898014 3.898014 0.8872124   1 
5 6.422158 5.032659 5.032659 0.1943236   1 
6 4.115106 5.083162 5.083162 0.7078354   1 

당신은 관찰이 y2에 NA가 될 것인지 여부가 r2.marright로 인코딩되는 것을 볼 수, 확률 바이너리 버전이 : 당신은 아마 dataframe에서 모든 값을 안감으로 더 쉽게 볼 수 있습니다 p2.marright --- 더 높은 값인 p2.marright의 경우 r2.marright이 1 일 가능성이 큽니다. 전체 누락 비율을 변경하려면 p2.marright의 계산을 변경하여 더 높게 또는 더 낮게 조정하십시오.

물류 변환의 상수 (예제에서 -5)를 변경하여 p2.marright을 조작 할 수 있습니다. 값을 늘리면 (예 : -4보다 음수가 낮아짐) p2.marright이 감소하여 y2에 더 많은 값이 누락됩니다. 그것을 줄이면 (예 : -6과 같이 음수로 만들면) 결국 y2에 누락 된 값이 줄어들게됩니다. (이유는 -5는 50 %의 누락을 초래합니다. 왜냐하면 5는 변형되는 변수의 평균이기 때문에 y1입니다.)이 방법은 다소 불투명하기 때문에 쉽게 제어 할 수 없습니다. 예를 들어, y2에 20 %의 누락을 원할 경우 상수를 설정해야하는 것은 분명하지 않습니다.

+0

Rose Hartman 고맙습니다. – statm

+0

@Shoheb이 방법으로 문제가 해결되면 답변으로 받아 들일 수 있습니다. –