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