0

MICEパッケージで R に代入した後、分割表を生成したいと考えています。フィットはリスト内のテーブルを表示しますが、 pool()それらを使用すると、次のエラーがスローされます:Error in pool(fit) : Object has no coef() method.何が間違っていますか?

この基本的な例は、エラーを再現します。

library("mice")

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

1 に答える 1

1

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

あなたの例では、ルービンのルールは適用されません。分割表のエントリの「推定値」と「標準誤差」は何ですか? このため、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

ただし、「平均」テーブルが役立つかどうかは、おそらく議論の余地があります。

于 2016-05-08T20:05:08.563 に答える