ZINB 또는 다른 효과가 혼합 된 카운트 데이터에 적합한 모델을 찾는 데 어려움이 있습니까?


12

나는 고독한 꿀벌 풍부도에 대해 매우 작은 데이터 세트를 가지고 있는데, 분석하는데 문제가 있습니다. 그것은 계수 데이터이며, 거의 모든 계수는 다른 처리에서 대부분의 0으로 처리됩니다. 6 개의 사이트 중 2 개에 각각 하나씩 두 개의 매우 높은 값이 있으므로 카운트 분포가 매우 긴 꼬리를 갖습니다. R에서 일하고 있습니다. lme4와 glmmADMB의 두 가지 패키지를 사용했습니다.

포아송 혼합 모델이 적합하지 않음 : 랜덤 효과를 적용하지 않으면 모델이 과도하게 분산되고 (glm 모델), 랜덤 효과를 적용하면 모델이 과도하게 분산되었습니다 (글머 모델). 왜 그런지 이해할 수 없습니다. 실험 설계에서는 중첩 된 랜덤 효과가 필요하므로 포함해야합니다. 푸 아송 대수 정규 오차 분포는 적합도를 개선하지 못했습니다. glmer.nb를 사용하여 음의 이항 오차 분포를 시도했지만 적합하지 못했습니다. glmerControl (tolPwrss = 1e-3)을 사용하여 공차를 변경 한 경우에도 반복 한계에 도달했습니다.

많은 제로는 단순히 꿀벌을 보지 못했기 때문에 발생하기 때문에 (그들은 종종 작은 검은 물건입니다), 나는 다음으로 제로 팽창 모델을 시도했습니다. ZIP이 잘 맞지 않았습니다. ZINB는 지금까지 가장 적합한 모델 이었지만 여전히 모델에 만족하지는 않습니다. 다음에 무엇을 시도해야할지 모르겠습니다. 나는 허들 모델을 시도했지만 0이 아닌 결과에 잘린 분포를 맞출 수 없었습니다. 너무 많은 0이 제어 처리에 있기 때문에 (오류 메시지는 "model.frame.default (formula = Error in model.frame. s.bee ~ tmt + lu + : 가변 길이가 다름 ( '처리'에서 찾음)”).

또한 계수가 비현실적으로 작기 때문에 포함 된 상호 작용이 데이터에 이상한 일을하고 있다고 생각합니다. 상호 작용을 포함하는 모델은 bbmle 패키지에서 AICctab을 사용하는 모델을 비교할 때 가장 좋았습니다.

내 데이터 세트를 거의 재현하는 R 스크립트를 포함시키고 있습니다. 변수는 다음과 같습니다.

d = 줄리안 날짜, df = 줄리안 날짜 (요인), d.sq = df 제곱 (벌의 수 증가 후 여름 내내 떨어짐), st = 사이트, s.bee = 벌의 수, tmt = 치료, lu = 토지 사용의 유형, hab = 주변 경관의 반 자연 서식지 비율, ba = 경계 지역 라운드 필드.

좋은 모델 적합 (대체 오류 분포, 다른 유형의 모델 등)을 얻는 방법에 대한 제안은 대단히 감사하겠습니다!

감사합니다.

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
나는 이것이 매우 오래된 게시물이며 아마도 지금과 관련이 없다는 것을 알고 있지만, 최근에 겪었던 매우 비슷한 문제에 대한 내 경험에서 glmers의 잔차가 정상적으로 배포 될 필요는 없음을 강조하고 싶습니다. 따라서 정규성 검사와 적합 대 잔차 검사는 실제로 필요하지 않습니다. 일반적으로 글머의 잔류 플롯을 진단하는 것은 매우 어렵습니다.
fsociety

답변:


2

이 포스트는 4 년이 지났지 만 의견에서 fsociety가 말한 내용을 따르고 싶었습니다. 표준 잔차 그림은 모형이 올바르게 지정되어 있어도 비정규 성, 이분산성 등을 나타낼 수 있으므로 GLMM의 잔차 진단은 간단하지 않습니다. DHARMa이러한 유형의 모델을 진단하는 데 특히 적합한 R 패키지가 있습니다 .

이 패키지는 적합 화 된 일반 선형 혼합 모형에서 스케일 된 잔차를 생성하고 쉽게 해석 할 수있는 다양한 진단 플롯을 생성하는 시뮬레이션 방식을 기반으로합니다. 다음은 원래 게시물의 데이터와 첫 번째 적합 모델 (m1)의 작은 예입니다.

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

DHARMa 잔차 그림

왼쪽 그림은 예상 분포와의 편차를 탐지하기위한 스케일링 된 잔차의 QQ 그림을 보여 주며, 오른쪽 그림은 균일 성 편차를 탐지하기 위해 Quantile 회귀를 수행하는 동안 잔차 대 예측 된 값을 나타냅니다 (빨간색 선은 가로 및 0.25 여야 함) 0.50 및 0.75).

또한이 패키지에는 과도 / 미만 산포 및 무 인플레이션 테스트를위한 특정 기능이 있습니다.

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.