Skip to contents

If blocks is NULL, this computes the log likelihood as the sum of per time contributions from logL_inad_i for computational convenience.

Usage

logL_inad(
  y,
  order = 1,
  thinning = c("binom", "pois", "nbinom"),
  innovation = c("pois", "bell", "nbinom"),
  alpha,
  theta,
  nb_inno_size = NULL,
  blocks = NULL,
  tau = 0,
  na_action = c("fail", "complete", "marginalize")
)

Arguments

y

Integer matrix n_sub by n_time.

order

Integer in {0, 1, 2}.

thinning

One of "binom", "pois", "nbinom".

innovation

One of "pois", "bell", "nbinom".

alpha

Thinning parameters. For order 1, numeric length 1 or n_time. For order 2, either a matrix n_time by 2 or a list(alpha1, alpha2).

theta

Innovation parameter(s). Numeric length 1 or n_time. For Poisson and negative binomial innovations, this is the innovation mean. For Bell innovations, this is the Bell rate parameter (mean \(\theta e^\theta\)).

nb_inno_size

Size parameter for innovation "nbinom". Numeric length 1 or n_time.

blocks

Optional integer vector of length n_sub. If NULL, no fixed effect.

tau

Optional numeric vector. Only used if blocks is not NULL.

na_action

How to handle missing values:

  • "fail": error if any NA is present.

  • "complete": use only complete-case subjects.

  • "marginalize": observed-data likelihood under MAR via truncated-state recursion.

Value

A scalar log likelihood.

Examples

set.seed(1)
y <- simulate_inad(
  n_subjects = 60,
  n_time = 5,
  order = 1,
  thinning = "binom",
  innovation = "pois",
  alpha = 0.3,
  theta = 2
)
fit <- fit_inad(y, order = 1, thinning = "binom", innovation = "pois", max_iter = 20)
logL_inad(
  y,
  order = 1,
  thinning = "binom",
  innovation = "pois",
  alpha = fit$alpha,
  theta = fit$theta
)
#> [1] -522.7922