8

マウスを使用して欠損値を代入した後の経時データの統計分析の実行に問題があります。ワイド データ形式で欠損値を代入した後、抽出したデータをロング形式に変換します。縦方向のデータ参加者には重複した行 (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

一番、

ジュリアン

4

3 に答える 3

4

この小さな例であなたの質問に答えることができれば幸いです。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 とpanR のパッケージは 2 レベル MI 用に特別に設計されています。

于 2014-08-15T13:50:17.843 に答える