2014-06-27 17 views
5

Tôi đang cố gắng giải thích cho tự tương quan trong GLMM. Biến trả lời của tôi là boolean, nó đại diện cho sự hiện diện và vắng mặt của một sự kiện en trong vòng đời của một tập hợp các tổ ong. Tôi đang cố gắng dự đoán xác suất của một sự kiện như vậy với một tập hợp các biến số mô tả trạng thái của mỗi tổ. Vì vậy, tôi đã sử dụng phân phối nhị thức trong một mô hình tổng quát với tổ như một hiệu ứng ngẫu nhiên (sử dụng glmer()). Tuy nhiên, các sự kiện được tự tương quan, vì vậy tôi nhận được một mô hình khá khủng khiếp trong số dư của tôi. Nếu tôi đang sử dụng phân phối gaussian trong các lỗi không có các hiệu ứng ngẫu nhiên, tôi sẽ ước tính một số tham số tương quan sử dụng cấu trúc tương quan với gls(), nhưng điều đó sẽ không hoạt động trong trường hợp này. Tôi đã tìm cách để bao gồm tự tương quan này trong GLMM, nhưng tôi dường như không làm cho nó đúng. Tôi thấy rằng tập dữ liệu có thể được chuyển đổi bằng cách sử dụng hàm ts() và diff() để cho phép mô hình bao gồm như là một yếu tố dự đoán, các giá trị trước đó của phản hồi. Điều này làm việc cho một mô hình tuyến tính lm(), làm cho số dư tốt hơn nhiều.Kế toán cho tương quan thời gian trong GLMM

basket.1<-subset(basket,select=c(Nest,day,number_cells,provitioning_cells,closed_cells, 
          reopened_cells,eclosed_cells,pollen)) 
basket.ts<-ts(as.matrix.data.frame(basket.1),start=1,frequency=9) 
m.basket.ts1<-lm(pollen~provitioning_cells+reopened_cells+closed_cells 
      +eclosed_cells+day,data=diff(basket.ts,differences=2))` 

Tuy nhiên, không phải lmer() cũng không glm() chấp nhận đầu ra của các chức năng đó. Vấn đề dường như là các biến dạng làm cho một số giá trị âm, và glm() không chấp nhận các giá trị âm cho một mô hình nhị thức (có ý nghĩa). Tôi đã đọc rằng có thể giải thích cho autocorrelations glm(), cái mà đã là một sự cải tiến, nhưng tôi không thể làm cho nó hoạt động được. Tôi cũng đọc rằng glmmPQL() có thể bao gồm các cấu trúc tương quan. Mô hình này chạy, nhưng nó không cải thiện các mẫu trong số dư của tôi. Họ vẫn dường như được tự tương quan.

m.basket.glmm1<-glmmPQL(pollen~provitioning_cells+reopened_cells+closed_cells 
      +eclosed_cells+day,random=~1|Nest,family=binomial,correlation=corAR1(form=~day), 
      data=basket) 

Tôi đã thử các cấu trúc tương quan khác nhau và không có cấu trúc nào trong số đó có vẻ hoạt động.

Cuối cùng, tôi đã thử gói dyn, được cho là cho phép các hàm hồi quy xử lý chuỗi thời gian. Nhưng một lần nữa, hàm không chạy với các giá trị được tạo ra bởi phép biến đổi.

m.bas.glm.dyn1<-dyn$glm(pollen~provitioning_cells+reopened_cells+closed_cells 
        +eclosed_cells+day,family=poisson,data = diff(basket.ts,differences=3)) 

Để tóm tắt, tôi cần phải chạy GLMM với mối tương quan theo thời gian, nhưng tôi không thể tìm thấy một cách để làm điều này. Tôi đánh giá cao sự giúp đỡ.

Chúc mừng !!!

Trả lời

1

Bạn có thể cho chúng tôi ví dụ tái sản xuất không? Về nguyên tắc, không quá khó để làm chậm các giá trị 'bằng tay', ví dụ:

basket.1 <- subset(basket,select=c(Nest,day,number_cells, 
          provitioning_cells,closed_cells, 
          reopened_cells,eclosed_cells,pollen)) 
n <- nrow(basket.1) 
basket.2 <- transform(basket.1,pollen.lag1=c(pollen[2:n],NA), 
         pollen.lag2=c(pollen[3:n],rep(NA,2))) 

library("lme4") 
m.basket.glmm1 <- glmer(pollen~provitioning_cells+ 
        reopened_cells+ closed_cells+ 
        eclosed_cells+day+pollen.lag1+pollen.lag2+ 
        (1|Nest), 
        family=binomial,data=basket.2) 

Tùy thuộc vào kích thước của bộ dữ liệu của bạn, nếu day là số chứ không phải là một yếu tố bạn có thể muốn (day|Nest) thay vì (1|Nest) ...

+0

gì nếu chúng ta không biết bao nhiêu để tụt hậu các giá trị bằng ? @benbolker – lg929

+0

Thông thường bạn sẽ xem xét một cốt truyện của chức năng tự tương quan của các số dư của một mô hình đơn giản. –

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