Skip to content

v2.0.17

Choose a tag to compare

@mattfidler mattfidler released this 11 Sep 23:04
· 12 commits to main since this release
8762757
  • llikNbinom() and llikNbinomMu() now accept a continuous (non-integer)
    size. In the negative binomial's mean/dispersion parameterisation size
    is a real dispersion parameter, not a count, and stats::dnbinom() has
    always allowed it. Previously size was stored in an integer vector and
    silently truncated, so a size above 1 returned the log-likelihood at
    trunc(size) and a size between 0 and 1 truncated to 0 and aborted; the
    R-level assertIntegerish(size) rejected such values outright. Truncation
    also made the log-likelihood a step function of size, so the dispersion
    could not be estimated even when its true value was an integer. This
    blocked nbinomMu() models with continuous overdispersion in nlmixr2.
    size must now be strictly positive; non-positive values return NA. The
    INT_MAX bound added in 2.0.15 still applies to x everywhere, and to
    size for rxLlikBinom where size is a number of trials.

  • llikNbinom() and llikNbinomMu() now return NA instead of aborting the R
    process when the mean handed to the underlying likelihood is out of domain.
    This covers a prob of 0 (and, through the C API, a prob outside [0, 1]
    or a negative mu), and -- because size is no longer bounded by INT_MAX
    -- a large size with a small prob whose product overflows. Previously
    these threw a C++ exception that escaped the rxLlikNbinom() /
    rxLlikNbinomMu() entry points used by rxode2 solves and focei, killing
    the session.

  • llikNbinom() at prob == 1 and llikNbinomMu() at mu == 0 now match
    stats::dnbinom(). The distribution is degenerate at zero there, so fx is
    0 (a likelihood of 1) at x == 0 and -Inf otherwise. These are the only
    points where stats::dnbinom() defines a value that the underlying Stan
    likelihood cannot compute -- it requires a strictly positive mean. No
    derivative exists at a point mass, so dProb / dMu are NA; an unusable
    gradient beats a NA log-likelihood, and beats the abort these used to
    cause. prob == 0 remains NA, matching the NaN R returns there.

  • Added more liklihood families and also added a ABI free header for
    linking