2014-07-21 30 views
4

我使用鼠標對 插補缺失值後執行縱向數據的統計分析存在問題。在插入寬數據格式 中的錯誤後,我將提取的數據轉換爲長格式。由於縱向 數據參與者具有重複的行(3個時間點),並且在將長格式的數據集轉換爲類型mids對象時會導致問題。 有沒有人知道如何在插補後創建一個mids對象或其他適當的東西?之後我想使用lmer,lme來進行混合固定效果。 我嘗試了很多不同的東西,但仍然無法弄清楚。MICE中的縱向數據和對象類型mids的統計分析的多重插補

在此先感謝,看看下面的代碼:

# 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) 

但請記住,當您對不同級別的變量關係感興趣時,單級插補不是一個好主意。 對於這些任務,您應該使用維護兩級變化的程序,並且不要將其壓制爲mice在此配置中所做的操作。

對於mice有解決方法,但例如R中的Mplus和pan包是專門爲雙層MI設計的。

+0

親愛的西蒙,非常感謝您回答我的問題和您的單一插補旁註。我會看看平底鍋包裝,並會弄清楚它是否會影響效果。你有很大的幫助。 –

+0

@JulianSchulze如果你使用'pan',你也可以看一下'mitml'軟件包,它可以自動化許多基於lmer'分析的MI。 – SimonG

相關問題