10

混合効果モデルを適合させ、そのモデルを使用して、異なるレベルを持つ可能性のある新しいデータセットの推定値を生成しようとしています。新しいデータセットの推定では、推定されたパラメーターの平均値が使用されると予想していましたが、そうではないようです。最小限の作業例を次に示します。

library(lme4)
d = data.frame(x = rep(1:10, times = 3),
               y = NA,
               grp = rep(1:3, each = 10))
d$y[d$grp == 1] = 1:10 + rnorm(10)
d$y[d$grp == 2] = 1:10 * 1.5 + rnorm(10)
d$y[d$grp == 3] = 1:10 * 0.5 + rnorm(10)
fit = lmer(y ~ (1+x)|grp, data = d)
newdata = data.frame(x = 1:10, grp = 4)
predict(fit, newdata = newdata, allow.new.levels = TRUE)

この例では、基本的に、異なる回帰式 (勾配 1、1.5、および 0.5) を持つ 3 つのグループを定義しています。ただし、未知のレベルで新しいデータセットを予測しようとすると、一定の推定値が得られます。この新しいデータの予測を生成するために、勾配と切片の期待値が使用されることを期待していました。私は間違ったことを期待していますか?または、コードのどこが間違っていますか?

4

2 に答える 2

15

私は通常、固定勾配を含めずにランダム勾配を含めません。predict.merMod新しいレベルを予測するために固定効果のみを使用しているように見えるので、私に同意するようです. ドキュメントには、「予測では、以前に観測されていないレベルのデータに無条件 (母集団レベル) の値が使用される」と記載されていますが、これらの値はモデル仕様で推定されていないようです。

したがって、私はこのモデルを提案します:

fit = lmer(y ~ x + (x|grp), data = d)
newdata = data.frame(x = 1:10, grp = 4)
predict(fit, newdata = newdata, allow.new.levels = TRUE)
#       1         2         3         4         5         6         7         8         9        10 
#1.210219  2.200685  3.191150  4.181616  5.172082  6.162547  7.153013  8.143479  9.133945 10.124410

これは、モデルの固定効果部分のみを使用するのと同じです。

t(cbind(1, newdata$x) %*% fixef(fit))
#         [,1]     [,2]    [,3]     [,4]     [,5]     [,6]     [,7]     [,8]     [,9]    [,10]
#[1,] 1.210219 2.200685 3.19115 4.181616 5.172082 6.162547 7.153013 8.143479 9.133945 10.12441
于 2015-03-26T08:11:41.953 に答える
6

十分に明確ではないかもしれません?predict.merModが、allow.new.levels=TRUE. あいまいさは、「無条件の(人口レベルの)値」が何を意味するのかにあると思います...

allow.new.levels: 'newdata' で新しいレベル (または NA 値) が許可されている場合は論理的です。FALSE (デフォルト) の場合、'newdata' のそのような新しい値はエラーを引き起こします。TRUE の場合、予測では、以前に観測されていないレベル (または NA) を持つデータの無条件 (母集団レベル) の値が使用されます。

于 2015-03-26T12:20:28.433 に答える