4

2 つのランダム効果を持つ単純な混合効果モデルを作成すると、次のようになります。

library(lme4)
(fm3 <- lmer(strength ~ 1 + (1 | batch) + (1 | sample), Pastes))

次のようにランダム効果にアクセスできます。

ranef(fm3)
ranef(fm3)$batch
ranef(fm3)$sample

ランダム効果を2つの別々のドットプロットに並べてプロットすることはできません。次のコードは両方のプロットを描画しますが、各グラフを個別にプロットできるように再コード化することはできません。

dotplot(ranef(fm3, postVar=TRUE))

以下は私には論理的に思えますが、正しくありません

dotplot(ranef(fm3, postVar=TRUE)$batch)

すべての助けに感謝します,

4

3 に答える 3

2

次のコードはトリックを行います。

print((dotplot(ranef(fm3, postVar=TRUE))$sample), position=c(0, .5, 1, 1), more=TRUE)
print((dotplot(ranef(fm3, postVar=TRUE))$batch), position=c(0, 0, 1, .5)

これは、2 つのランド効果のうちの 1 つだけの予測区間をプロットすることは、次の方法で実行できるという認識から生じました。

(dotplot(ranef(fm3, postVar=TRUE))$sample)

(dotplot(ranef(fm3, postVar=TRUE))$batch)

私が上で提案したことは間違っています(dotplot(ranef(fm3, postVar=TRUE)$batch)たとえそれが何かを生成したとしても)。@juba: ラティスを教えてくれてありがとう。プロットを結合するために私が見つけた解決策はもう少し簡潔です...

于 2013-01-29T17:26:37.913 に答える
2

あなたが抱えている問題はranef()、分析の結果をデータフレームではなくリストとして保存することです。データフレームにアクセスするのと同じように、このリストにアクセスしようとしているため、機能しません。dotplotトリックは、リストにアクセスするために二重角括弧を使用することです。次にgrid.arrange、プロットをすばやく結合するために使用できます (または @juba ソリューションを使用できます)。

library(lme4)
fm3 <- lmer(strength ~ 1 + (1 | batch) + (1 | sample), Pastes)
d1 <- ranef(fm3, postVar=TRUE)
#double square bracket access the lists in d1
a <- dotplot(d1)[["batch"]]
b <- dotplot(d1)[["sample"]]
#grid.arrange combines your plots
library(gridExtra)
grid.arrange(a,b, nrow=1) 

ここに画像の説明を入力

于 2013-01-29T17:27:57.760 に答える
0

パッケージdotplotの一部であるため、1つのグラフに複数のプロットを表示する必要があります。latticegrid.layoutviewports

これは2つのドットプロットを並べて表示する方法ですが、私はlattice そこにまったく慣れていないので、それを行うためのより良い、よりクリーンな方法は確かにあります:

grid.newpage()
pushViewport(viewport(0.25,0.5,.5,1))
print(dotplot(rnorm(100)),newpage=FALSE)
upViewport()
pushViewport(viewport(.75,.5,.5,1))
print(dotplot(runif(100)),newpage=FALSE)

これは:

ここに画像の説明を入力してください

于 2013-01-29T14:43:16.543 に答える