2
$\begingroup$

I am having some difficulty identifying the appropriate GLM family for my proportional data in a mixed model. My response data is inherently proportional (0,1) but also includes values of 1. My proposed model:

prop.surv1 <- glmmTMB(worker.prop ~ Source.pop + (1 | Colony_ID) + (1 | Col_Season),
                      weights= Worker.start, family = quasi_binomial(), data=count)

I have had trouble modeling this with different family types since glmer() and glmmTMB() no longer include the quasi-binomial family.

I've tried out using the beta_family() arg but the beta_family() arg uses a 'logit' link which does not match my data since it includes some values of 1.

Any suggestions that might work for fitting proportional data still within glmmTMB?

Thank you.

$\endgroup$

1 Answer 1

1
$\begingroup$

What about a zero-inflated beta distribution? Dummy example:

x <- rbeta(n = 1000, shape1 = 1, shape2 = 5)
x[1:100] <- 0
hist(x)
mdl <- glmmTMB(x ~ 1, family = beta_family(), ziformula = ~ 1)

You'll have to define worker.prop_m1 <- 1 - worker.prop as the response to switch the 1s to 0s.

I'm not convinced the quasibinomial is suitable, as that's meant for modelling overdispersed binomial data. Proportion and binomial responses are not the same thing.

$\endgroup$
3
  • $\begingroup$ Thanks, I tried your idea with the formula prop.surv2 <- glmmTMB(worker.propm1 ~ Source.pop + (1 |Colony_ID) + (1 |Col_Season), weights= Worker.start, data=count, family = beta_family(), ziformula = ~1) and it returned Error in (function (start, objective, gradient = NULL, hessian = NULL, : NA/NaN gradient evaluation I'm guessing this didn't work as there are only a small number of values that are actually 1 (5 / 48) so that when we transform them to 0, zero-inflation doesn't match $\endgroup$
    – egp
    Commented Oct 26, 2022 at 13:02
  • $\begingroup$ Also though, you've got two random effects + zero inflation with a beta regression... that's a very complicated model for only 48 data points. $\endgroup$
    – Alex J
    Commented Oct 27, 2022 at 2:38
  • $\begingroup$ A follow up: I've adjusted the model to include only 1 random effect (the other was not actually relevant to this dataset and I had included it by mistake since other models did need both). Since only a few values were = 1, I changed these to 0.99999 and then removed the zero inflation addition: glmmTMB(worker.prop ~ Source.pop + (1 | Col_Season), data=count, family = beta_family(link = "logit"), weights = Worker.start) This seemed to work well and fit the data better than using a binomial dist $\endgroup$
    – egp
    Commented Oct 28, 2022 at 12:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.