4

次のような一般化された混合効果モデルがあります。

d <- data.frame(
    g = sample(c("A","B","C","D","E"), 250, replace=TRUE),
    x = runif(250, max=100),
    y = sample(c(0,1), 250, replace=TRUE)
)

require(lme4)

fm <- lmer(y ~ x + (1 + x | g), data=d, family=binomial)

dotplotxのランダム勾配成分をプロットせずに、切片のランダム効果をプロットしたいと思います。私の問題は、ランダムな勾配ではなく、切片コンポーネントだけにアクセスする方法を理解できないように見えることです。

たとえば、私が欲しいのは、このプロットの左側です。

dotplot(ranef(fm, postVar=TRUE))

ここに画像の説明を入力

使うdotplot(ranef(fm, postVar=TRUE)$g[,2])べきだと思っていても、使っても欲しいものが得られない! を調べましたがstr(fm)、これ以上近づくのに役立つものは何もありませんでした。

ヘルプとヒントをいただければ幸いです。

4

4 に答える 4

3

元のコードでほとんどそこにいました。

dotplot(ranef(fm, postVar=TRUE))$g[1]

各プロットのスケールを解放するための追加のヒント:

dotplot(ranef(fm, postVar=TRUE),
        scales = list(x =list(relation = 'free')))
于 2012-10-03T20:12:51.730 に答える
2

あなたは正しいことのstr()を見ていません。

re <- ranef(fm, postVar = TRUE)
str(re)

これにより、最初のアイテムのリストが表示され、必要なものを含むデータフレームが表示されます。$x列をそこから削除します。

re[[1]]$x <- NULL
于 2012-06-20T16:20:18.417 に答える
2

ランダム効果の他の列を削除するには、もう少し賢くする必要があります。

re <- ranef(fm,postVar = TRUE)
re$g$x <- NULL
dotplot(re)

他のメソッドが機能しなかった理由は、dotplotディスパッチされるメソッドが、入力が から来るのと同じように、その入力が 1 つの要素リストのように見えることをまだ期待しているためranefです。したがって、問題のある列だけに手を伸ばして削除する必要がありますが、構造の残りの部分はそのままにしておきます。

于 2012-06-20T16:19:38.597 に答える
2

これでかなり近づけるはずです。lme4オブジェクトのサポートを追加するつもりだったcoefplotので、これがきっかけになるかもしれません。

theRan <- ranef(fm, postVar=TRUE)
pv <- attr(theRan$g, "postVar")
se <- pv[1, 1, ]
theIntercepts <- theRan$g[, 1, drop=F]
theFrame <- cbind(theIntercepts, se)
names(theFrame)[1] <- "Intercept"
theFrame$Low <- with(theFrame, Intercept - 2 * se)
theFrame$High <- with(theFrame, Intercept + 2 * se)
theFrame$Variable <- rownames(theFrame)
ggplot(theFrame, aes(y=Intercept, x=reorder(Variable, Intercept))) + geom_linerange(aes(ymin=Low, ymax=High), colour="black") + geom_point(, colour="blue") + coord_flip() + labs(y="Intercept", x=NULL)
于 2012-06-20T18:58:51.370 に答える