2014-07-21 8 views
4

마우스를 사용하여 누락 값을 대체 한 후 종단 데이터의 통계 분석을 수행하는 데 문제가 있습니다. 폭이 넓은 데이터 형식에서 누락 된 데이터를 대체 한 후 추출 된 데이터를 longformat으로 변환합니다. 길이가 인 데이터 참여자는 중복 행 (3 개 시점)을 가지기 때문에 긴 형식의 데이터 세트를 유형 mids 객체로 변환 할 때 문제가 발생합니다. 누군가가 mids 객체 또는 대체 후 적절한 다른 객체를 만드는 방법을 알고 있습니까? 나중에 lmed, lmed를 풀 효과로 사용하고 싶습니다. 나는 많은 다른 것들을 시도했지만 아직도 그것을 이해할 수 없다.MICE에서 종단 데이터의 다중 대체 및 개체 유형 중간의 통계 분석

미리 감사하고 아래 코드 참조 : 최고의

# minimal reproducible example 

## Make up some data 
set.seed(2) 

# ID Variable, Group, 3 Timepoints outcome measure (X1-X3) 
Data <- data.frame(
    ID = sort(sample(1:100)), 
    GROUP = sample(c(0, 1), 100, replace = TRUE), 
    matrix(sample(c(1:5,NA), 300, replace=T), ncol=3) 
) 

# install.packages("mice") 
library(mice) 

# Impute the data in wide format 
m.out <- mice(Data, maxit = 5, m = 2, seed = 9, pred=quickpred(Data, mincor = 0.0, exclude = c("ID","GROUP"))) # ignore group here for easiness 

# mids object? 
is.mids(m.out) # TRUE 

# Extract imputed data 
imp_data <- complete(m.out, action = "long", include = TRUE)[, -2] 

# Converting data into long format 
# install.packages("reshape") 
library(reshape) 
imp_long <- melt(imp_data, id=c(".imp","ID","GROUP")) 
# sort data 
imp_long <- imp_long[order(imp_long$.imp, imp_long$ID, imp_long$GROUP),] 
row.names(imp_long)<-NULL 

# save as.mids 
as.mids(imp_long,.imp=1, .id=2) # doesnt work 
as.mids(imp_long) # doesnt work 

줄리안

+0

저는 여러분이 성취하고자하는 것과 왜 귀속 된 데이터를'mids' 객체로 다시 변환하고 싶은지 잘 모르겠습니다. 보통 귀속 된 데이터 분석은 '완료'를 지나면 곧바로 작동합니다. – SimonG

답변

3

나는 내가이 작은 예에 귀하의 질문에 대답 할 수 있기를 바랍니다. 나는 다시 mids 클래스로의 변환이 왜 필요한지 알지 못한다. 일반적으로 mice을 사용하면 귀속 된 데이터를 완료된 데이터 세트로 변환 한 다음 apply을 사용하여 해당 목록을 분석합니다.

library(mice) 
library(reshape) 
library(lme4) 

Data <- data.frame(
    ID = sort(sample(1:100)), 
    GROUP = sample(c(0, 1), 100, replace = TRUE), 
    matrix(sample(c(1:5,NA), 300, replace=T), ncol=3) 
) 

# impute 
m.out <- mice(Data, pred=quickpred(Data, mincor=0, exclude=c("ID","GROUP"))) 

# complete 
imp.data <- as.list(1:5) 
for(i in 1:5){ 
    imp.data[[i]] <- complete(m.out, action=i) 
} 

# reshape 
imp.data <- lapply(imp.data, melt, id=c("ID","GROUP")) 

# analyse 
imp.fit <- lapply(imp.data, FUN=function(x){ 
    lmer(value ~ as.numeric(variable)+(1|ID), data=x) 
}) 
imp.res <- sapply(imp.fit, fixef) 

그러나 레벨에 따라 다른 변수의 관계에 관심이있는 경우에는 단일 레벨 대체는 좋은 생각이 아닙니다. 이러한 작업의 경우 2- 레벨 변형을 유지하는 절차를 사용해야하며이 구성에서 mice이 수행하는 것처럼 억제하지 마십시오.

mice에 대한 대안이 있지만 예를 들어 Mplus와 R의 pan 패키지는 2 단계 MI 용으로 특별히 설계되었습니다.

+0

친애하는 Simon, 내 질문에 대답 해 주셔서 감사합니다. 팬 패키지를 살펴보고 효과가 다른지 알아볼 것입니다. 너는 큰 도움이되었다. –

+0

@JulianSchulze'pan'을 사용하면'mitml' 패키지를 볼 수 있습니다.이 패키지는 MI를 이용한'lmer' 기반 분석을 자동화합니다. – SimonG