So, I followed your suggestion and fitted the full model using the cratio
family.
brm(trait.count ~ continuous1*continuous2 + (1|gr(species, cov = A)),
data = data,
family = cratio(),
data2 = list(A = phylogeny),
chains = 2,
cores = 2,
iter = 4000)
I’m astonished about how accurate the predictions of this model are. See for yourself:
Overall PP check
PP check by order
Plotted onto the phylogeny (inner ring = observed, outer ring = predicted)
These predictions are so accurate that I can’t help but feel that something must be wrong. I mean, is this too good to be true?!
The direction of the fixed effects are the same as in the Poisson model, which is also great:
### cratio
Group-Level Effects:
~species (Number of levels: 762)
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
sd(Intercept) 2.79 1.05 1.39 5.48 1.00 624 773
Population-Level Effects:
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
Intercept[1] -0.40 5.09 -10.95 10.03 1.00 1068 617
Intercept[2] 22.58 9.53 6.81 45.76 1.00 498 606
Intercept[3] 44.86 17.45 20.50 89.78 1.00 543 702
continuous1 -6.68 3.28 -14.86 -2.08 1.00 804 1030
continuous2 7.56 3.07 3.31 15.16 1.00 836 1010
continuous1:continuous2 4.04 2.33 0.43 9.53 1.00 1244 1320
Family Specific Parameters:
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
disc 1.00 0.00 1.00 1.00 1.00 4000 4000
### poisson
Group-Level Effects:
~species (Number of levels: 762)
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
sd(Intercept) 0.17 0.02 0.13 0.21 1.00 2383 2840
Population-Level Effects:
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
Intercept -3.96 0.83 -5.71 -2.39 1.00 2299 2518
continuous1 -0.71 0.23 -1.14 -0.26 1.00 3263 3043
continuous2 0.76 0.19 0.39 1.14 1.00 3026 2594
continuous1:continuous2 0.51 0.19 0.14 0.90 1.00 3220 3325
The only thing I am wondering (and that I fear reviewers would wonder) is how valid it is to use an ordinal family when I know that a count process generated the data. But I guess that’s a discussion for another topic!
EDIT: Just found this super interesting paper. It shows that a probit ordinal regression model fits well to count data simulated under various assumptions, and that it performs well in identifying relevant covariates.
At the very least, I have another model backing up the inferences, which is fantastic. Once again, thanks for casting a light on this, Martin!