50% off | Unlimited Data & AI Learning
Get 50% off unlimited learning

depower (version 2025.1.20)

glmm_bnb: GLMM for BNB ratio of means

Description

Generalized linear mixed model for bivariate negative binomial outcomes.

Usage

glmm_bnb(data, test = "wald", ci_level = NULL, ...)

Value

A list with the following elements:

SlotSubslotNameDescription
1chisq\(\chi^2\) test statistic for the ratio of means.
2dfDegrees of freedom.
3pp-value.
4ratioEstimated ratio of means (sample 2 / sample 1).
41estimatePoint estimate.
42lowerConfidence interval lower bound.
43upperConfidence interval upper bound.
5mean1Estimated mean of sample 1.
51estimatePoint estimate.
52lowerConfidence interval lower bound.
53upperConfidence interval upper bound.
6mean2Estimated mean of sample 2.
61estimatePoint estimate.
62lowerConfidence interval lower bound.
63upperConfidence interval upper bound.
7dispersionEstimated dispersion.
71estimatePoint estimate.
72lowerConfidence interval lower bound.
73upperConfidence interval upper bound.
8item_sdEstimated standard deviation of the item (subject) random intercept.
81estimatePoint estimate.
82lowerConfidence interval lower bound.
83upperConfidence interval upper bound.
9n1Sample size of sample 1.
10n2Sample size of sample 2.
11methodMethod used for the results.
12testType of hypothesis test.
13alternativeThe alternative hypothesis.
14ci_levelConfidence level of the interval.
15hessianInformation about the Hessian matrix.
16convergenceInformation about convergence.

Arguments

data

(list)
A list whose first element is the vector of negative binomial values from sample 1 and the second element is the vector of negative binomial values from sample 2. Each vector must be sorted by the subject/item index and must be the same sample size. NAs are silently excluded. The default output from sim_bnb().

test

(String: "wald"; "c("wald", "lrt"))
The statistical method used for the test results. test = "wald" performs a Wald test and optionally the Wald confidence intervals. test = "lrt" performs a likelihood ratio test and optionally the profile likelihood confidence intervals (means and ratio). The Wald interval is always used for the dispersion and standard deviation of the item (subject) random intercept.

ci_level

(Scalar numeric: NULL; (0, 1))
If NULL, confidence intervals are set as NA. If in (0, 1), confidence intervals are calculated at the specified level. Profile likelihood intervals are computationally intensive, so intervals from test = "lrt" may be slow.

...

Optional arguments passed to glmmTMB::glmmTMB().

Details

Uses glmmTMB::glmmTMB() in the form

glmmTMB(
  formula = value ~ condition + (1 | item),
  data = data,
  dispformula = ~ 1,
  family = nbinom2
)

to model dependent negative binomial outcomes \(X_1, X_2 \sim \text{BNB}(\mu, r, \theta)\) where \(\mu\) is the mean of sample 1, \(r\) is the ratio of the means of sample 2 with respect to sample 1, and \(\theta\) is the dispersion parameter.

The hypotheses for the LRT and Wald test of \(r\) are

$$ \begin{aligned} H_{null} &: log(r) = 0 \\ H_{alt} &: log(r) \neq 0 \end{aligned} $$

where \(r = \frac{\bar{X}_2}{\bar{X}_1}\) is the population ratio of arithmetic means for sample 2 with respect to sample 1 and \(log(r_{null}) = 0\) assumes the population means are identical.

When simulating data from sim_bnb(), the mean is a function of the item (subject) random effect which in turn is a function of the dispersion parameter. Thus, glmm_bnb() has biased mean and dispersion estimates. The bias increases as the dispersion parameter gets smaller and decreases as the dispersion parameter gets larger. However, estimates of the ratio and standard deviation of the random intercept tend to be accurate. The p-value for glmm_bnb() is generally overconservative compared to glmm_poisson(), wald_test_bnb() and lrt_bnb(). In summary, the negative binomial mixed-effects model fit by glmm_bnb() is not recommended for the BNB data simulated by sim_bnb(). Instead, wald_test_bnb() or lrt_bnb() should typically be used instead.

References

hilbe_2011depower

hilbe_2014depower

See Also

glmmTMB::glmmTMB()

Examples

Run this code
#----------------------------------------------------------------------------
# glmm_bnb() examples
#----------------------------------------------------------------------------
library(depower)

set.seed(1234)
d <- sim_bnb(
  n = 40,
  mean1 = 10,
  ratio = 1.2,
  dispersion = 2
)

lrt <- glmm_bnb(d, test = "lrt")
lrt

wald <- glmm_bnb(d, test = "wald", ci_level = 0.95)
wald

#----------------------------------------------------------------------------
# Compare results to manual calculation of chi-square statistic
#----------------------------------------------------------------------------
# Use the same data, but as a data frame instead of list
set.seed(1234)
d <- sim_bnb(
  n = 40,
  mean1 = 10,
  ratio = 1.2,
  dispersion = 2,
  return_type = "data.frame"
)

mod_alt <- glmmTMB::glmmTMB(
  formula = value ~ condition + (1 | item),
  data = d,
  dispformula = ~ 1,
  family = glmmTMB::nbinom2,
)
mod_null <- glmmTMB::glmmTMB(
  formula = value ~ 1 + (1 | item),
  data = d,
  dispformula = ~ 1,
  family = glmmTMB::nbinom2,
)

lrt_chisq <- as.numeric(-2 * (logLik(mod_null) - logLik(mod_alt)))
lrt_chisq
wald_chisq <- summary(mod_alt)$coefficients$cond["condition2", "z value"]^2
wald_chisq

anova(mod_null, mod_alt)

Run the code above in your browser using DataLab