Learn R Programming

depower (version 2025.1.20)

mle_bnb: MLE for BNB

Description

Maximum likelihood estimates (MLE) for bivariate negative binomial outcomes.

Usage

mle_bnb_null(data, ratio_null = 1, method = "nlm_constrained", ...)

mle_bnb_alt(data, method = "nlm_constrained", ...)

Value

  • For mle_bnb_alt, a list with the following elements:

    SlotNameDescription
    1mean1MLE for mean of sample 1.
    2mean2MLE for mean of sample 2.
    3ratioMLE for ratio of means.
    4dispersionMLE for BNB dispersion.
    5nllMinimum of negative log-likelihood.
    6nparamsNumber of estimated parameters.
    7n1Sample size of sample 1.
    8n2Sample size of sample 2.
    9methodMethod used for the results.
    10mle_methodMethod used for optimization.
    11mle_codeInteger indicating why the optimization process terminated.
    12mle_messageAdditional information from the optimizer.
  • For mle_bnb_null, a list with the following elements:

    SlotNameDescription
    1mean1MLE for mean of sample 1.
    2mean2MLE for mean of sample 2.
    3ratio_nullPopulation ratio of means assumed for null hypothesis. mean2 = mean1 * ratio_null.
    4dispersionMLE for BNB dispersion.
    5nllMinimum of negative log-likelihood.
    6nparamsNumber of estimated parameters.
    7n1Sample size of sample 1.
    8n2Sample size of sample 2.
    9methodMethod used for the results.
    10mle_methodMethod used for optimization.
    11mle_codeInteger indicating why the optimization process terminated.
    12mle_messageAdditional information from the optimizer.

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().

ratio_null

(Scalar numeric: 1; (0, Inf))
The ratio of means assumed under the null hypothesis (sample 2 / sample 1). Typically ratio_null = 1 (no difference).

method

(string: "nlm_constrained")
The optimization method. Must choose one of "nlm", "nlm_constrained", "optim", or "optim_constrained". The default bounds for constrained optimization are [1e-03, 1e06].

...

Optional arguments passed to the optimization method.

Details

These functions are primarily designed for speed in simulation. Missing values are silently excluded.

Suppose \(X_1 \mid G = g \sim \text{Poisson}(\mu g)\) and \(X_2 \mid G = g \sim \text{Poisson}(r \mu g)\) where \(G \sim \text{Gamma}(\theta, \theta^{-1})\) is the random item (subject) effect. Then \(X_1, X_2 \sim \text{BNB}(\mu, r, \theta)\) is the joint distribution where \(X_1\) and \(X_2\) are dependent (though conditionally independent), \(X_1\) is the count outcome for sample 1 of the items (subjects), \(X_2\) is the count outcome for sample 2 of the items (subjects), \(\mu\) is the conditional mean of sample 1, \(r\) is the ratio of the conditional means of sample 2 with respect to sample 1, and \(\theta\) is the gamma distribution shape parameter which controls the dispersion and the correlation between sample 1 and 2.

The MLEs of \(r\) and \(\mu\) are \(\hat{r} = \frac{\bar{x}_2}{\bar{x}_1}\) and \(\hat{\mu} = \bar{x}_1\). The MLE of \(\theta\) is found by maximizing the profile log-likelihood \(l(\hat{r}, \hat{\mu}, \theta)\) with respect to \(\theta\). When \(r = r_{null}\) is known, the MLE of \(\mu\) is \(\tilde{\mu} = \frac{\bar{x}_1 + \bar{x}_2}{1 + r_{null}}\) and \(\tilde{\theta}\) is obtained by maximizing the profile log-likelihood \(l(r_{null}, \tilde{\mu}, \theta)\) with respect to \(\theta\).

The backend method for numerical optimization is controlled by argument method which refers to stats::nlm(), stats::nlminb(), or stats::optim(). If you would like to see warnings from the optimizer, include argument warnings = TRUE.

References

rettiganti_2012depower

aban_2009depower

See Also

sim_bnb(), nll_bnb

Examples

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

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

mle_alt <- d |>
  mle_bnb_alt()

mle_null <- d |>
  mle_bnb_null()

mle_alt
mle_null

Run the code above in your browser using DataLab