2013-07-14 23 views
6

Có thể vẽ sơ đồ đánh chặn ngẫu nhiên hoặc độ dốc của mô hình hỗn hợp khi có nhiều hơn một yếu tố dự báo không?Làm thế nào để vẽ ngẫu nhiên đánh chặn và độ dốc trong một mô hình hỗn hợp với nhiều yếu tố dự báo?

Với một dự đoán tôi sẽ làm như thế này:

#generate one response, two predictors and one factor (random effect) 
resp<-runif(100,1, 100) 
pred1<-c(resp[1:50]+rnorm(50, -10, 10),resp[1:50]+rnorm(50, 20, 5)) 
pred2<-resp+rnorm(100, -10, 10) 
RF1<-gl(2, 50) 

#gamm 
library(mgcv) 
mod<-gamm(resp ~ pred1, random=list(RF1=~1)) 
plot(pred1, resp, type="n") 
for (i in ranef(mod$lme)[[1]]) { 
abline(fixef(mod$lme)[1]+i, fixef(mod$lme)[2]) 
} 

#lmer 
library(lme4) 
mod<-lmer(resp ~ pred1 + (1|RF1)) 
plot(pred1, resp, type="n") 
for (i in ranef(mod)[[1]][,1]) { 
abline(fixef(mod)[1]+i, fixef(mod)[2]) 
} 

Nhưng nếu tôi có một mô hình như thế này thay vì ?:

mod<-gamm(resp ~ pred1 + pred2, random=list(RF1=~1)) 

Hoặc với lmer

mod<-lmer(resp ~ pred1 + pred2 + (1|RF1)) 

nên Tôi xem xét tất cả các hệ số hoặc chỉ những hệ số của biến mà tôi đang vẽ?

Cảm ơn

+1

Về cơ bản, bạn phải quyết định những gì bạn muốn làm về các biến khác. Quy trình phổ biến nhất là chọn giá trị tham chiếu cho một biến (ví dụ:'pred2' bằng giá trị trung bình của nó) và vẽ độ dốc tương ứng với' pred1' cho giá trị đó. Hoặc bạn có thể chọn một vài giá trị của 'pred2' và vẽ một dòng (tập hợp) cho mỗi dòng, có thể trong các phần con riêng biệt, hoặc (xấu nhất) làm các ô 3D và các mặt phẳng đồ họa' resp ~ f (pred1, pred2) '. –

+0

Cảm ơn bạn Ben, Xin lỗi nhưng tôi không chắc chắn sẽ theo dõi bạn, ý của bạn là chính xác cho "chọn một giá trị tham chiếu cho một biến"? Làm thế nào bạn sẽ làm điều đó trong thực tế? – Oritteropus

Trả lời

4
## 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) 

LƯU Ý mà bạn nên có lẽ không thể cố gắng để phù hợp với một hiệu ứng ngẫu nhiên cho một biến nhóm chỉ có hai cấp độ - điều này sẽ hầu như luôn dẫn đến một ước tính ngẫu nhiên -phương sai hiệu ứng số không, sẽ lần lượt đặt các dòng được dự đoán của bạn ngay trên đầu mỗi khác - Tôi đang chuyển từ gl(2,50) sang 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) 

Các phiên bản phát triển của lme4predict() chức năng mà làm này dễ dàng hơn một chút ...

  • Dự đoán cho một loạt các pred1 với pred2 bằng trung bình của nó, và ngược lại. Đây là thông minh tất cả một chút so với nó cần được, vì nó tạo ra tất cả các giá trị cho cả hai dự đoán mối và âm mưu chúng với ggplot trong một đi ...

()

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") 
  • Ngoài ra, tập trung chỉ trên pred1 và tạo ra những dự đoán cho một (nhỏ/rời rạc) loạt các pred2 giá trị ...

()

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) 

Bạn có thể muốn đặt scale="free" ở vòng facet_wrap() ... hoặc sử dụng facet_grid(~pred2,labeller=label_both)

Đối với bài thuyết trình bạn có thể muốn thay thế colour thẩm mỹ, với group, nếu tất cả các bạn muốn phải làm là phân biệt giữa các nhóm (tức là âm mưu các dòng riêng biệt) thay vì xác định chúng ...

+0

Rất hữu ích! Cảm ơn bạn – Oritteropus

Các vấn đề liên quan