2016-05-08 10 views
0

MICEパッケージでRに代入された後、不測の事態のテーブルを生成したい。フィットはリスト内のテーブルを示しますが、それらがpool()の場合、次のエラーがスローされます。Error in pool(fit) : Object has no coef() method.何が間違っていますか?RICEのMICEで多重代入されたデータの後の不一致テーブル

この基本的な例では、エラーを再現:

library("mice") 

imp <- mice(nhanes) 
fit <- with(imp, table(bmi, hyp)) 
est <- pool(fit) 

答えて

1

機能mice::pool(object)単純計算推計し、それが推定値は、多くの場合、抽出されたという事実に依存していたため、「ルービンのルール」を使用して、スカラー推定値]のための標準誤差coef(object)を使用し、これらの見積もりの​​標準誤差は、通常、vcov(object)の対角線で使用できます。 lmのようなクラスのオブジェクトと共に使用されることが意図されており、coefvcovメソッドがきちんと定義されています。

あなたの例では、Rubinのルールは適用されません。コンティンジェンシーテーブルのエントリの「見積もり」と「標準エラー」は何ですか?このため、poolは、fitから係数を抽出するための方法が存在しないと訴えています。

だからあなたの「推定値は、」単に「平均」の分割表であると考えられる場合は、この試してみてください。

library("mice") 

imp <- mice(nhanes) 
fit <- with(imp, table(bmi, hyp)) 
est <- pool(fit) 

# dimensions 
nl <- length(fit$analyses) 
nr <- nrow(fit$analyses[[1]]) 
nc <- ncol(fit$analyses[[1]]) 

# names 
rnames <- rownames(fit$analyses[[1]]) 
cnames <- colnames(fit$analyses[[1]]) 

# cast list to array 
fit.arr <- array(unlist(fit$analyses), dim=c(nr,nc,nl), 
       dimnames=list(rnames,cnames)) 

# get "mean" contingency table 
apply(fit.arr, 1:2, mean) 

#  1 2 
# 20.4 1.8 0.0 
# 21.7 1.4 0.0 
# 22 1.4 0.2 
# 22.5 1.8 0.4 
# 22.7 1.2 0.4 
# 24.9 1.2 0.0 
# 25.5 1.0 1.6 
# 26.3 0.0 1.0 
# 27.2 0.4 1.0 
# 27.4 1.4 0.4 
# 27.5 1.6 0.2 
# 28.7 0.0 1.0 
# 29.6 1.0 0.2 
# 30.1 1.8 0.2 
# 33.2 1.0 0.0 
# 35.3 1.2 0.2 

「平均」のテーブルは、任意の使用であるかどうかにかかわらず、しかし、おそらく議論の余地があります。

+0

ありがとうございます。帰属列からの平均を計算することも議論の余地がありますか?もしそうなら、なぜですか? – Roger

+0

帰属データの場合、いいえ。連続変数の平均は、ほぼ正常なサンプリング分布を有する。その結果、Rubinのルールを使用することは合理的です。しかし、コンティンジェンシーテーブルの「列」については、ストーリーは少し異なります。 「偶発事象」がゼロに近い場合、私はRubinのルールが不適切であることを知ることができますが、ゼロからかなり遠い値については、良い性質を持つ可能性があります([二項分布と正規分布の関係](https://en.wikipedia.org/wiki参照)/Binomial_distribution#Normal_approximation))。 – SimonG

関連する問題