Rắc rối tìm mô hình tốt phù hợp với dữ liệu đếm với các hiệu ứng hỗn hợp - ZINB hoặc cái gì khác?


12

Tôi có một dữ liệu rất nhỏ về sự phong phú của loài ong đơn độc mà tôi gặp khó khăn khi phân tích. Đó là dữ liệu đếm, và hầu hết tất cả các số đều nằm trong một điều trị với hầu hết các số 0 trong điều trị khác. Ngoài ra còn có một vài giá trị rất cao (mỗi cái ở hai trong số sáu vị trí), vì vậy phân phối số đếm có một cái đuôi cực kỳ dài. Tôi đang làm việc tại R. Tôi đã sử dụng hai gói khác nhau: lme4 và glmmADMB.

Các mô hình hỗn hợp Poisson không phù hợp: các mô hình đã được sử dụng quá mức khi các hiệu ứng ngẫu nhiên không được trang bị (mô hình glm) và bị thiếu khi các hiệu ứng ngẫu nhiên được trang bị (mô hình glmer). Tôi không hiểu tại sao lại như vậy. Thiết kế thử nghiệm yêu cầu các hiệu ứng ngẫu nhiên lồng nhau vì vậy tôi cần đưa chúng vào. Một phân phối lỗi không thường xuyên Poisson đã không cải thiện sự phù hợp. Tôi đã thử phân phối lỗi nhị thức âm bằng glmer.nb và không thể làm cho nó phù hợp - đạt đến giới hạn lặp, ngay cả khi thay đổi dung sai bằng glmerControl (tolPwrss = 1e-3).

Bởi vì rất nhiều số không sẽ là do thực tế là tôi chỉ đơn giản là không nhìn thấy những con ong (chúng thường là những vật nhỏ màu đen), tiếp theo tôi đã thử một mô hình không phồng lên. ZIP không phù hợp lắm. ZINB là mẫu phù hợp nhất cho đến nay, nhưng tôi vẫn không quá hài lòng với mẫu phù hợp. Tôi không biết phải thử gì tiếp theo. Tôi đã thử một mô hình vượt rào nhưng không thể phù hợp với phân phối bị cắt cụt cho kết quả khác không, tôi nghĩ bởi vì rất nhiều số 0 đang trong quá trình điều khiển (thông báo lỗi là Lỗi Lỗi trong model.frame.default (công thức = s.bee ~ tmt + lu +: độ dài thay đổi khác nhau (được tìm thấy cho 'điều trị')).

Ngoài ra, tôi nghĩ rằng sự tương tác mà tôi đã đưa vào đang làm điều gì đó kỳ lạ với dữ liệu của tôi vì các hệ số rất nhỏ một cách phi thực tế - mặc dù mô hình chứa tương tác là tốt nhất khi tôi so sánh các mô hình sử dụng AICctab trong gói bbmle.

Tôi đang đưa vào một số tập lệnh R sẽ tái tạo khá nhiều tập dữ liệu của tôi. Các biến như sau:

d = Julian date, df = Julian date (theo hệ số), d.sq = df bình phương (số lượng ong tăng sau đó rơi trong suốt mùa hè), st = site, s.bee = đếm số lượng ong, tmt = điều trị, lu = loại hình sử dụng đất, hab = phần trăm môi trường sống bán tự nhiên trong cảnh quan xung quanh, ba = khu vực vòng quanh khu vực ranh giới.

Bất kỳ đề xuất nào về cách tôi có thể có được một mô hình phù hợp tốt (phân phối lỗi thay thế, các loại mô hình khác nhau, v.v.) sẽ rất biết ơn!

Cảm ơn bạn.

d <- c(80,  80,  121, 121, 180, 180, 86,  86,  116, 116, 144, 144, 74,  74, 143, 143, 163, 163, 71, 71,106, 106, 135, 135, 162, 162, 185, 185, 83,  83,  111, 111, 133, 133, 175, 175, 85,  85,  112, 112,137, 137, 168, 168, 186, 186, 64,  64,  95,  95,  127, 127, 156, 156, 175, 175, 91,  91, 119, 119,120, 120, 148, 148, 56, 56)
df <- as.factor(d)
d.sq <- d^2
st <- factor(rep(c("A", "B", "C", "D", "E", "F"), c(6,12,18,10,14,6)))
s.bee <- c(1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,4,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,0,0,0,0,5,0,0,2,0,50,0,10,0,4,0,47,3)
tmt <- factor(c("AF","C","C","AF","AF","C","AF","C","AF","C","C","AF","AF","C","AF","C","AF","C","AF","C",
"C","AF","AF","C","AF","C","C","AF","AF","C","AF","C","AF","C","AF","C","AF","C","AF","C",
"C","AF","AF","C","AF","C","AF","C","AF","C","C","AF","C","AF","C","AF","AF","C","AF","C",
"AF","C","AF","C","AF","C"))
lu <- factor(rep(c("p","a","p","a","p"), c(6,12,28,14,6)))
hab <- rep(c(13,14,13,14,3,4,3,4,3,4,3,4,3,4,15,35,37,35,37,35,37,35,37,0,2,1,2,1,2,1), 
        c(1,2,2,1,1,1,1,2,2,1,1,1,1,1,18,1,1,1,2,2,1,1,1,14,1,1,1,1,1,1))
ba <-  c(480,6520,6520,480,480,6520,855,1603,855,1603,1603,855,855,12526,855,5100,855,5100,2670,7679,7679,2670,
2670,7679,2670,7679,7679,2670,2670,7679,2670,7679,2670,7679,2670,7679,1595,3000,1595,3000,3000,1595,1595,3000,1595
,3000,4860,5460,4860,5460,5460,4860,5460,4860,5460,4860,4840,5460,4840,5460,3000,1410,3000,1410,3000,1410)
data <- data.frame(st,df,d.sq,tmt,lu,hab,ba,s.bee)
with(data, table(s.bee, tmt) )

# below is a much abbreviated summary of attempted models:

library(MASS)
library(lme4)
library(glmmADMB)
library(coefplot2)

###
### POISSON MIXED MODEL

    m1 <- glmer(s.bee ~ tmt + lu + hab + (1|st/df), family=poisson)
    summary(m1)

    resdev<-sum(resid(m1)^2)
    mdf<-length(fixef(m1)) 
    rdf<-nrow(data)-mdf
    resdev/rdf
# 0.2439303
# underdispersed. ???



###
### NEGATIVE BINOMIAL MIXED MODEL

    m2 <- glmer.nb(s.bee ~ tmt + lu + hab + d.sq + (1|st/df))
# iteration limit reached. Can't make a model work.



###
### ZERO-INFLATED POISSON MIXED MODEL

    fit_zipoiss <- glmmadmb(s.bee~tmt + lu + hab + ba + d.sq +
                    tmt:lu +
                    (1|st/df), data=data,
                    zeroInflation=TRUE,
                    family="poisson")
# has to have lots of variables to fit
# anyway Poisson is not a good fit



###
### ZERO-INFLATED NEGATIVE BINOMIAL MIXED MODELS

## BEST FITTING MODEL SO FAR:

    fit_zinb <- glmmadmb(s.bee~tmt + lu + hab +
                    tmt:lu +
                    (1|st/df),data=data,
                    zeroInflation=TRUE,
                    family="nbinom")
    summary(fit_zinb)
# coefficients are tiny, something odd going on with the interaction term
# but this was best model in AICctab comparison

# model check plots
    qqnorm(resid(fit_zinb))
    qqline(resid(fit_zinb))

    coefplot2(fit_zinb)

    resid_zinb <- resid(fit_zinb , type = "pearson")
    hist(resid_zinb)

    fitted_zinb <- fitted (fit_zinb)
    plot(resid_zinb ~ fitted_zinb)


## MODEL WITHOUT INTERACTION TERM - the coefficients are more realistic:

    fit_zinb2 <- glmmadmb(s.bee~tmt + lu + hab +
                    (1|st/df),data=data,
                    zeroInflation=TRUE,
                    family="nbinom")

# model check plots
    qqnorm(resid(fit_zinb2))
    qqline(resid(fit_zinb2))

    coefplot2(fit_zinb2)

    resid_zinb2 <- resid(fit_zinb2 , type = "pearson")
    hist(resid_zinb2)

    fitted_zinb2 <- fitted (fit_zinb2)
    plot(resid_zinb2 ~ fitted_zinb2)



# ZINB models are best so far
# but I'm not happy with the model check plots

2
Tôi biết rằng đây là một bài viết rất cũ và có lẽ siêu không liên quan bây giờ, nhưng tôi muốn nhấn mạnh rằng theo kinh nghiệm của tôi với một vấn đề rất giống mà tôi đã gặp gần đây, phần còn lại của ánh sáng không cần phải phân phối bình thường. Do đó, việc kiểm tra tính quy phạm cũng như kiểm tra trang bị so với số dư là thực sự không cần thiết. Nói chung, việc chẩn đoán các lô dư của glmer là vô cùng khó khăn.
fsociety

Câu trả lời:


2

Bài đăng này có bốn năm, nhưng tôi muốn theo dõi những gì fsociety đã nói trong một bình luận. Chẩn đoán dư lượng trong GLMM không đơn giản, vì các lô dư tiêu chuẩn có thể cho thấy tính không chuẩn, độ không đồng nhất, v.v., ngay cả khi mô hình được chỉ định chính xác. Có một gói R DHARMa, đặc biệt phù hợp để chẩn đoán các loại mô hình này.

Gói dựa trên cách tiếp cận mô phỏng để tạo ra các phần dư được chia tỷ lệ từ các mô hình hỗn hợp tuyến tính tổng quát được trang bị và tạo ra các sơ đồ chẩn đoán dễ hiểu khác nhau. Dưới đây là một ví dụ nhỏ với dữ liệu từ bài đăng gốc và mô hình được trang bị đầu tiên (m1):

library(DHARMa)
sim_residuals <- simulateResiduals(m1, 1000)
plotSimulatedResiduals(sim_residuals)

Phần còn lại của DHARMa

Biểu đồ bên trái hiển thị biểu đồ QQ của phần dư được chia tỷ lệ để phát hiện độ lệch so với phân phối dự kiến ​​và biểu đồ bên phải biểu thị phần dư so với giá trị dự đoán trong khi thực hiện hồi quy lượng tử để phát hiện độ lệch khỏi tính đồng nhất (đường màu đỏ phải nằm ngang và ở mức 0,25 , 0,50 và 0,75).

Ngoài ra, gói cũng có các chức năng cụ thể để kiểm tra mức phân tán trên / dưới và lạm phát bằng không, trong số các gói khác:

testOverdispersionParametric(m1)

Chisq test for overdispersion in GLMMs

data:  poisson
dispersion = 0.18926, pearSS = 11.35600, rdf = 60.00000, p-value = 1
alternative hypothesis: true dispersion greater 1

testZeroInflation(sim_residuals)

DHARMa zero-inflation test via comparison to expected zeros with 
simulation under H0 = fitted model


data:  sim_residuals
ratioObsExp = 0.98894, p-value = 0.502
alternative hypothesis: more
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.