2016-06-29 6 views
2

したがって、紛失したデータを補完するためにmiceパッケージを使用しています。私は帰属が初めてであるので、私は一点につきましたが、急な学習曲線に陥っています。おもちゃの例与えるために:あなたは、私はほとんどデフォルトの設定を使用して、DF1 10回帰属見ることができるようにクラスタ化されたデータを持つマウスを使用した代用

library(mice) 
# Using nhanes dataset as example 
df1 <- mice(nhanes, m=10) 

を - 私の実生活データにしかし結果などをプール、回帰モデルでは、この結果を用いて、私は快適です、私はさまざまな国からの調査データを持っています。したがって、特定の変数(年齢、教育レベルなど)の価値と同様に、国ごとにミスのレベルが異なります。したがって、私はミスヒットを正当化し、国によるクラスタリングを可能にしたいと思います。だから私は、だから私はmice()この変数ということを教えてどのように(、彼らは存在して私の実際のデータに他の変数との相関が不足しているこのおもちゃの例ではもちろん)

# Create a grouping variable 
nhanes$country <- sample(c("A", "B"), size=nrow(nhanes), replace=TRUE) 

を何missingsを持っていないグループ化変数を作成します。それは他のものと異なっています - つまり、それは複数レベルのデータセットのレベルですか?

+1

各要因レベルで 'マウス 'を実行するとよいでしょうか?たとえば、マウス(nhanes [nhanes $ country == 'A']、m = 10) 'を実行してから、要素をループするか、お気に入りのRのgroupby操作を使用しますか?これはもちろん、国家Aのデータを帰属させるために、他の国は必要ない、すなわち独立していると仮定しています。 –

+0

さて、私はこれを試してみました - そして、データセット 'rbind.mids(' - しかし、私はこの機能が私には分からない多くの警告とエラーを与えていることがわかりました。データ構造の認識はより良いだろう。提案のおかげで – user2498193

答えて

2

"混在効果"モデルのようにクラスタを考えている場合は、miceで提供されているクラスター化データ用のメソッドを使用する必要があります。これらのメソッドはmanualにあり、通常接頭辞は2l.somethingです。

クラスタ化されたデータのための様々な方法はmiceで幾分制限されているが、私は、クラスタレベルで下位単位のデータと2l.only.normを逃すため2l.panを使用することをお勧めすることができます。

混合効果モデルの代わりに、ダミーインジケーターを使用してクラスター構造(つまり、各クラスターごとに1つのダミー変数)を表すことを検討できます。この方法は、混合効果モデルの観点からクラスターを考えるときには理想的ではありません。したがって、ミックスエフェクト解析を行いたい場合は、可能な限りミックスエフェクトモデルに固執してください。

以下、両方の戦略の例を示します。

準備:

library(mice) 
data(nhanes) 

set.seed(123) 
nhanes <- within(nhanes,{ 
    country <- factor(sample(LETTERS[1:10], size=nrow(nhanes), replace=TRUE)) 
    countryID <- as.numeric(country) 
}) 

ケース1:代入

混合効果モデルを使用してこのセクションでは、不足しているデータとの3つの変数を転嫁する2l.panを使用しています。予測変数マトリックスに-2を指定することによって、クラスタ変数としてclusterIDを使用することに注意してください。他のすべての変数に対しては固定効果のみを割り当てます(1)。

# "empty" imputation as a template 
imp0 <- mice(nhanes, maxit=0) 
pred1 <- imp0$predictorMatrix 
meth1 <- imp0$method 

# set imputation procedures 
meth1[c("bmi","hyp","chl")] <- "2l.pan" 

# set predictor Matrix (mixed-effects models with random intercept 
# for countryID and fixed effects otherwise) 
pred1[,"country"] <- 0  # don't use country factor 
pred1[,"countryID"] <- -2 # use countryID as cluster variable 
pred1["bmi", c("age","hyp","chl")] <- c(1,1,1) # fixed effects (bmi) 
pred1["hyp", c("age","bmi","chl")] <- c(1,1,1) # fixed effects (hyp) 
pred1["chl", c("age","bmi","hyp")] <- c(1,1,1) # fixed effects (chl) 

# impute 
imp1 <- mice(nhanes, maxit=20, m=10, predictorMatrix=pred1, method=meth1) 

ケース2:代入このセクションでは、帰属のためpmmを使用し、クラスタ化された構造は、「アドホック」様式で表されているクラスタ

ためのダミーインジケータ(DIS)を使用。つまり、クラスタ化されたものはランダムな効果ではなく、固定された効果で表されます。これは、欠落したデータを持つ変数のクラスターレベルの可変性を誇張する可能性があります。そのため、使用時に行うことを理解してください。

# create dummy indicator variables 
DIs <- with(nhanes, contrasts(country)[country,]) 
colnames(DIs) <- paste0("country",colnames(DIs)) 
nhanes <- cbind(nhanes,DIs) 


# "empty" imputation as a template 
imp0 <- mice(nhanes, maxit=0) 
pred2 <- imp0$predictorMatrix 
meth2 <- imp0$method 

# set imputation procedures 
meth2[c("bmi","hyp","chl")] <- "pmm" 

# for countryID and fixed effects otherwise) 
pred2[,"country"] <- 0  # don't use country factor 
pred2[,"countryID"] <- 0 # don't use countryID 
pred2[,colnames(DIs)] <- 1 # use dummy indicators 
pred2["bmi", c("age","hyp","chl")] <- c(1,1,1) # fixed effects (bmi) 
pred2["hyp", c("age","bmi","chl")] <- c(1,1,1) # fixed effects (hyp) 
pred2["chl", c("age","bmi","hyp")] <- c(1,1,1) # fixed effects (chl) 

# impute 
imp2 <- mice(nhanes, maxit=20, m=10, predictorMatrix=pred2, method=meth2) 

あなたは、これらの方法を考えるのものにアップ読みたい場合は、oneまたはthese論文のtwoを見てみましょう。

+0

こんにちはSimonG。大きなおかげで多くのことができました!これは、パッケージリファレンスよりも多くのことを理解するのに役立ちます。私は1つの質問が残っている。ケース1では、+2の代わりに-2を使用してクラスタ変数を指定したのはなぜですか? -2と+2の違いは何ですか?これは私が見ることができるヘルプファイルでは説明されていません。 – user2498193

+1

[manual](https://cran.r-project.org/web/packages/mice/mice.pdf)(47ページ)で、 '2l.pan'の' type'引数について説明しています。 'type'引数は' mice'が予測子行列( 'pred1')の行をどのように理解するかを記述します。すべての2レベル関数において、「-2」によって示される変数はクラスタ変数として解釈される。 「1」を有するものは、固定効果を有する予測子として理解され、「2」は、ランダム効果を有する予測子として理解される。コード「3」および「4」は、クラスター平均が計算され、追加の予測子として含まれるという違いで、「1」および「2」と同様に機能する。 – SimonG

+0

ああ私はそれを逃した華麗な感謝。多くのあなたの助けに感謝! – user2498193

1

predictorMatrixをセットアップして、マウスに別の変数を代用するように指示する必要があります。それをするのが速い方法は、使用することですpredictorM<-quickpred(nhanes)

その後、通常の変数である場合は2に、それ以外の国ではレベル2の変数の場合は-2に変更して、マウスコマンドに送信してくださいpredictorMatrix =predictorMとなります。 methodコマンドでは、メソッドがメトリック変数の場合は2l.norm、バイナリ変数の場合は2l.binomに設定する必要があります。後者の場合、Sabine Zinn(https://www.neps-data.de/Portals/0/Working%20Papers/WP_XXXI.pdf)が書いた関数が必要です。残念ながら、世界に2つのレベルのデータを転載する方法があるかどうかはわかりません。

マルチレベルのデータセットを入力すると、処理が大幅に遅くなることに注意してください。私の経験では、PMMやBaboonパッケージのようなリサンプリング方法は、データの階層構造を維持する上でうまく機能し、使用がずっと高速です。

+0

あなたの答えをありがとう。私は2と-2に変更することについてかなり理解していない - どのセルを変更する(関数のヘルプファイルからも明確ではない)。 '2l.norm'と' 2l.binom'の2つのメソッドは、私が入力したdata.frameの各変数に設定する必要がありますか?re: 'PMM' - 'mice 'コマンド? – user2498193

+1

'2l.norm'は使用しないでください。この関数はまだバグがあり、これまでに誰もそれを修正しようとしていません。 – SimonG

+2

OPがサンプルデータセットを提供しました。この回答は、 "疑似コード - 話す"のソリューションを歩いて行くのではなく、サンプルデータに特有の回答をコード化して表現することができます。 –

関連する問題