6

簡単な例を考えてみましょう:

> library(lme4)
Loading required package: lattice
Loading required package: Matrix
> set.seed(1)
> df <- data.frame(x = c(rnorm(7), NA), y = rep(c("A", "B"), 4))
> length(fitted(lm(data = df, x ~ y, na.action = na.exclude)))
[1] 8

これは私が期待するように動作します。8 番目の観測値には適合値はありませんが、x はその行の NA であるため、適合値は NA で「パディング」され、入力データ フレーム df の行数と同じ長さになります。ハンディ。しかし、na.action = na.exclude を呼び出しても、lme4 では同じ効果がなくなりました。

> length(fitted(lmer(data = df, x ~ (1 | y), na.action = na.exclude)))
[1] 7

lme4 の古いバージョンでは、lm() の場合と同様に、長さは 8 で、最後の値は NA であると確信しています。

lmer を lm と同じように動作させるにはどうすればよいですか --- 入力データ フレームの行数と同じ長さになるように、(適切な場所で) NA を使用して適合ベクトルをパディングしますか?

より一般的には、ここで na.action と na.exclude が行っていること、および/または行おうとしていることについて、私が見逃していることはありますか?

私の目標は、lmer モデル オブジェクトに適用されたときに、fitted() を取得して、入力データ フレームと同じ長さの行数 (および同じ順序で!) で、"適切な場所。これを行う簡単な方法はありますか?

ありがとう、

デイブ・ケイン

更新: 回避策を提供してくれた Ben Bolker に感謝します! predict() は fit() と同じではありませんが、それを使用すると私の主な問題が解決されます。

> sessionInfo()
R version 3.0.2 (2013-09-25)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] lme4_1.0-5      Matrix_1.1-0    lattice_0.20-23

loaded via a namespace (and not attached):
[1] grid_3.0.2    MASS_7.3-29   minqa_1.2.1   nlme_3.1-111  splines_3.0.2 tools_3.0.2  
4

1 に答える 1

6

predict簡単な回避策として、次の代わりに(追加の引数なしで)使用できますfitted

length(predict(lmer(data = df, x ~ (1 | y), na.action = na.exclude)))
## 8

(これは 1.0-5 ではなく 1.1-1 ですが、結果は同じになると思います)。

于 2013-10-29T20:52:43.147 に答える