Rの2つの連続変数間の相互作用をプロットしようとしています。しかし、私のデータはマルチレベルです(人は数日以内に入れ子になります)。私はそれをグラフにしています。私はネストされた構造を説明するためにlme4ライブラリを使用して私のデータを分析しますが、それをどのようにグラフ化するかを考え出すのは苦労しています。ここで2つの連続変数のlme4データとの対話のプロット
## example data
spin = runif(600, 1, 24)
reg = runif(600, 1, 15)
ID = rep(c("1","2","3","4","5", "6", "7", "8", "9", "10"))
day = rep(1:30, each = 10)
testdata <- data.frame(
spin, reg, ID, day)
testdata$fatigue <- testdata$spin*testdata$reg/10*rnorm(30, mean=3, sd=2)
私は日内にネストされた私のスピンとREGの独立変数、疲労の従属変数、および人(ID)を持っています。私は下に私のモデルを実行します。
## running my multilevel model with lme4
library(lme4)
m1 <- lmer(fatigue ~ spin * reg + (1 | ID), data = testdata, REML = T)
(m1)
confint(m1, test = "Chisq")
私はスピンとregとの間に相互作用があるとします。私はそれをプロットするために、連続変数をカテゴリ変数に入れる必要があります。
私は連続変数の1つに基づいてカテゴリ変数を作成します。ここで私はスピンを選ぶ。 注:以下のコードが私の望むところに適しているかどうかはわかりません。標準エラーが発生する可能性がありますか?また、ネストされたデータ構造を考慮に入れていませんが、何をすべきかはわかりません。
x <- mean(testdata$spin, na.rm = T)
print(x)
y <- sd(testdata$spin, na.rm = T)
print(y)
testdata$SpinLevel[testdata$spin > x+y] <- "High"
testdata$SpinLevel[testdata$spin > x-y & testdata$spin <= x+y] <- "Mean"
testdata$SpinLevel[testdata$spin <= x-y] <- "Low"
rm(x,y)
私がオンラインで見つけたことに基づいて、エフェクトを表示するための基本的なプロットを作成できます。しかし、ネストされた構造は考慮されません(人 - 可変ID - は数日以内にネストされます)。
library(ggplot2)
ggplot(testdata,aes(reg,fatigue,linetype=SpinLevel))+
geom_smooth(method="lm",se=FALSE)
このggplotは、基本的な効果を解釈するための良いですが、ラインは、彼らが考慮(日以内に人を)私のデータの私の入れ子構造を取ることはありませんので、可能性が偏っています。
エフェクトライブラリでモデルをグラフ化することもできます。これはネストされた構造を考慮に入れます。グラフはきれいではなく、四分位であり、解釈することは非常に困難です。私はそれが高い、平均、低い、すべて同じグラフ上にあることを望みます。しかし、私はこれを行う方法がわかりません。
library(effects)
plot(effect("spin*reg", m1), grid=TRUE, labels = T,
xlevels=list(spin=quantile(testdata$spin, seq(0, 1, 0.25))))
大変感謝しています。
「day」内にネストを示すためにモデル仕様には何も表示されません。私は 'coefplot2'の代替として' broom'パッケージをお勧めします –
http://stackoverflow.com/questions/9447329/how-to-plot-the-results-of-a-mixed-model –
...しかし、私はOPが係数プロットではなくエフェクトプロットを望んでいると思います... –