4

プロジェクトで Rのパッケージを使用しようとしていmiceますが、プールされた結果が、出力内の変数の 1 つに対して持っていたダミー コードを変更しているように見えることがわかりました。

詳しく説明するとfoo、 と の 2 つのレベルを持つ因子 がある0とし1ます。レギュラーlmを使用すると、通常、 の見積もりが得られfoo1ます。ただし、 と 関数を使用するmiceと、poolの推定値が得られfoo2ます。パッケージのnhanesデータセットを使用して、再現可能な例を以下に含めました。miceなぜ発生している可能性がありますか?

require(mice)

# Create age as: 0, 1, 2
nhanes$age <- as.factor(nhanes$age - 1)
head(nhanes)

#     age  bmi hyp chl
#  1   0   NA  NA  NA
#  2   1 22.7   1 187
#  3   0   NA   1 187
#  4   2   NA  NA  NA
#  5   0 20.4   1 113
#  6   2   NA  NA 184

# Use a regular lm with missing data just to see output
# age1 and age2 come up as expected

lm(chl ~ age + bmi, data = nhanes)

# Call:
#   lm(formula = chl ~ age + bmi, data = nhanes)

# Coefficients:
#   (Intercept)      age1         age2          bmi  
#     -28.948       55.810      104.724        6.921 

imp <- mice(nhanes)
str(complete(imp)) # still the same coding

fit <- with(imp, lm(chl ~ age + bmi))
pool(fit)

# Now the estimates are for age2 and age3

# Call: pool(object = fit)

# Pooled coefficients:
#   (Intercept)        age2        age3         bmi 
#    29.88431       43.76159    56.57606     5.05537 
4

1 に答える 1

4

どうやらmice関数は因子の対比を設定します。したがって、次のようになります (列名を確認してください)。

contrasts(nhanes$age)
##    1 2
##  0 0 0
##  1 1 0
##  2 0 1
contrasts(imp$data$age)
##    2 3
##  0 0 0
##  1 1 0
##  2 0 1

帰属データのコントラストを変更するだけで、同じダミーコーディングが得られます。

imp <- mice(nhanes)
contrasts(imp$data$age) <- contrasts(nhanes$age)
fit <- with(imp, lm(chl ~ age + bmi))
pool(fit)

##  Call: pool(object = fit)
##  
##  Pooled coefficients:
##  (Intercept)        age1        age2         bmi 
##    0.9771566  47.6351257  63.1332336   6.2589887 
##  
##  Fraction of information about the coefficients missing due to nonresponse: 
##  (Intercept)        age1        age2         bmi 
##    0.3210118   0.5554399   0.6421063   0.3036489 
于 2014-03-17T10:02:56.390 に答える