## generate one response, two predictors and one factor (random effect)
set.seed(101)
resp <- runif(100,1,100)
pred1<- rnorm(100,
mean=rep(resp[1:50],2)+rep(c(-10,20),each=50),
sd=rep(c(10,5),each=50))
pred2<- rnorm(100, resp-10, 10)
CATATAN bahwa Anda mungkin tidak mencoba menyesuaikan efek acak untuk variabel pengelompokan yang hanya memiliki dua tingkat -- hal ini hampir selalu menghasilkan perkiraan varians efek acak sebesar nol, yang pada gilirannya akan menempatkan garis prediksi Anda tepat di atas satu sama lain -- Saya beralih dari gl(2,50)
ke gl(10,10)
...
RF1<-gl(10,10)
d <- data.frame(resp,pred1,pred2,RF1)
#lmer
library(lme4)
mod <- lmer(resp ~ pred1 + pred2 + (1|RF1),data=d)
Versi pengembangan lme4
memiliki fungsi predict()
yang membuat ini sedikit lebih mudah...
- Prediksi rentang
pred1
dengan pred2
sama dengan meannya, dan sebaliknya. Ini semua sedikit lebih pintar dari yang seharusnya, karena ini menghasilkan semua nilai untuk kedua prediktor fokus dan memplotnya dengan ggplot sekaligus ...
()
nd <- with(d,
rbind(data.frame(expand.grid(RF1=levels(RF1),
pred1=seq(min(pred1),max(pred1),length=51)),
pred2=mean(pred2),focus="pred1"),
data.frame(expand.grid(RF1=levels(RF1),
pred2=seq(min(pred2),max(pred2),length=51)),
pred1=mean(pred1),focus="pred2")))
nd$val <- with(nd,pred1[focus=="pred1"],pred2[focus=="pred2"])
pframe <- data.frame(nd,resp=predict(mod,newdata=nd))
library(ggplot2)
ggplot(pframe,aes(x=val,y=resp,colour=RF1))+geom_line()+
facet_wrap(~focus,scale="free")
- Alternatifnya, fokus hanya pada
pred1
dan menghasilkan prediksi untuk rentang nilai pred2
(kecil/diskrit) ...
()
nd <- with(d,
data.frame(expand.grid(RF1=levels(RF1),
pred1=seq(min(pred1),max(pred1),length=51),
pred2=seq(-20,100,by=40))))
pframe <- data.frame(nd,resp=predict(mod,newdata=nd))
ggplot(pframe,aes(x=pred1,y=resp,colour=RF1))+geom_line()+
facet_wrap(~pred2,nrow=1)
Anda mungkin ingin menyetel scale="free"
di facet_wrap()
terakhir ... atau menggunakan facet_grid(~pred2,labeller=label_both)
Untuk presentasi Anda mungkin ingin mengganti estetika colour
, dengan group
, jika yang ingin Anda lakukan hanyalah membedakan antar kelompok (yaitu membuat plot baris terpisah) daripada mengidentifikasinya ...
person
Ben Bolker
schedule
15.07.2013
pred2
sama dengan meannya) dan memplot kemiringan terhadappred1
untuk nilai tersebut. Atau Anda dapat memilih beberapa nilaipred2
dan memplot (kumpulan) garis untuk masing-masing baris, mungkin dalam subplot terpisah, atau (yang paling jelek) membuat plot 3D dan membuat plot bidangresp~f(pred1,pred2)
sebagai gantinya. - person Ben Bolker   schedule 15.07.2013