Maximum likelihood estimates (MLE) for bivariate negative binomial outcomes.
mle_bnb_null(data, ratio_null = 1, method = "nlm_constrained", ...)mle_bnb_alt(data, method = "nlm_constrained", ...)
For mle_bnb_alt
, a list with the following elements:
Slot | Name | Description |
1 | mean1 | MLE for mean of sample 1. |
2 | mean2 | MLE for mean of sample 2. |
3 | ratio | MLE for ratio of means. |
4 | dispersion | MLE for BNB dispersion. |
5 | nll | Minimum of negative log-likelihood. |
6 | nparams | Number of estimated parameters. |
7 | n1 | Sample size of sample 1. |
8 | n2 | Sample size of sample 2. |
9 | method | Method used for the results. |
10 | mle_method | Method used for optimization. |
11 | mle_code | Integer indicating why the optimization process terminated. |
12 | mle_message | Additional information from the optimizer. |
For mle_bnb_null
, a list with the following elements:
Slot | Name | Description |
1 | mean1 | MLE for mean of sample 1. |
2 | mean2 | MLE for mean of sample 2. |
3 | ratio_null | Population ratio of means assumed for null hypothesis.
mean2 = mean1 * ratio_null . |
4 | dispersion | MLE for BNB dispersion. |
5 | nll | Minimum of negative log-likelihood. |
6 | nparams | Number of estimated parameters. |
7 | n1 | Sample size of sample 1. |
8 | n2 | Sample size of sample 2. |
9 | method | Method used for the results. |
10 | mle_method | Method used for optimization. |
11 | mle_code | Integer indicating why the optimization process terminated. |
12 | mle_message | Additional information from the optimizer. |
(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()
.
(Scalar numeric: 1
; (0, Inf)
)
The ratio of means assumed under the null hypothesis (sample 2 / sample 1).
Typically ratio_null = 1
(no difference).
(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.
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
.
rettiganti_2012depower
aban_2009depower
sim_bnb()
, nll_bnb
#----------------------------------------------------------------------------
# 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