R 小鼠纵向数据的多重插补和对象类型mids的统计分析

R 小鼠纵向数据的多重插补和对象类型mids的统计分析,r,r-mice,R,R Mice,我有一个问题,执行统计分析的纵向数据后 使用小鼠对缺失值进行插补。在对广泛的缺失进行插补之后 数据格式我将提取的数据转换为长格式。因为纵向的 数据参与者有重复的行(3个时间点),这在将长格式数据集转换为mids类型对象时会导致问题。 有人知道如何在插补后创建mids对象或其他合适的对象吗?我想使用lmer,lme进行合并后的固定效果。 我尝试了很多不同的方法,但还是没办法解决 提前感谢,请参见下面的代码: # minimal reproducible example ## Make up so

我有一个问题,执行统计分析的纵向数据后 使用小鼠对缺失值进行插补。在对广泛的缺失进行插补之后 数据格式我将提取的数据转换为长格式。因为纵向的 数据参与者有重复的行(3个时间点),这在将长格式数据集转换为mids类型对象时会导致问题。 有人知道如何在插补后创建mids对象或其他合适的对象吗?我想使用lmer,lme进行合并后的固定效果。 我尝试了很多不同的方法,但还是没办法解决

提前感谢,请参见下面的代码:

# 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
#最小可复制示例
##编造一些数据
种子(2)
#ID变量,组,3个时间点结果测量(X1-X3)

数据我希望我能用这个小例子回答你的问题。我真的不明白为什么需要转换回
mids
类。通常,当我使用
鼠标
时,我会将输入的数据转换为完整的数据集列表,然后使用
应用
分析该列表

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)
库(鼠标)
图书馆(重塑)
图书馆(lme4)

数据我不知道我的答案有多重要,因为你很久以前就提出了一个问题,但无论如何。。。最后,在标题为“方法帖子”的幻灯片上,作者使用函数
long2mids()


imp1我不确定您想要实现什么,以及为什么要将输入的数据重新转换为
mids
对象。通常,一旦您通过
完成
,插补数据的分析工作就会很好。亲爱的Simon,非常感谢您回答我的问题和您的单一插补旁注。我会看一看pan包,看看它是否会对效果产生影响。您帮了大忙。@JulianSchulze如果您使用
pan
,您还可以查看
mitml
软件包,该软件包使用MI自动化了许多基于
lmer
的分析。