Skip to contents

zero_one_beta() defines a one-response distribution for continuous proportions on [0, 1] when exact zeroes or ones are structural outcomes rather than binomial denominator outcomes.

Usage

zero_one_beta()

Value

A drm_family object.

Details

The implemented fixed-effect contract is logit(mu) = eta_mu, log(sigma) = eta_sigma, logit(zoi) = eta_zoi, and logit(coi) = eta_coi. Here zoi is the probability that an observation is exactly 0 or 1, and coi is the conditional probability of an exact 1 given that the observation is on the boundary. Interior observations follow the same beta mean-scale contract as beta_family(), with internal precision phi = 1 / sigma^2.

fitted() returns the unconditional response mean (1 - zoi) * mu + zoi * coi. Ordinary unlabelled random intercepts and independent numeric slopes such as (1 | id) and (0 + x | id) may enter mu. Point-estimate-only support additionally includes one ordinary intercept-only random effect in sigma, zoi, or coi, separately, plus one ordinary slope-only effect in any one of those parameters when the fixed and random terms use the same raw symbol. Examples are zoi ~ x + (0 + x | id) and coi ~ x + (0 + x | id). The exact coi admissions are that slope form and coi ~ 1 + (1 | id), both with fixed sigma ~ 1 and zoi ~ 1. All of these routes have point-estimate recovery evidence only. The two sigma routes now admit direct profiling, so confint(method = "profile") reaches their SD target; that makes an interval computable, not calibrated, and no interval, coverage, or broader recovery claim is established for them. For the zoi and coi routes, direct profiling, intervals, coverage, and broader recovery claims remain unavailable. In the retained coi recovery rung (M = 64, 50 observations per group), population-level point recovery remained stable when a few groups had fewer than two observed zeroes or ones, but those groups can have weakly identified conditional modes; inspect the within-group atom counts before interpreting individual modes. Correlated or labelled effects, intercept-plus-slope atom effects, transformed or mismatched zoi or coi slope symbols, structured atom effects, covariance blocks, and denominator syntax remain unsupported. One further point-fit-only structured route is available: an unlabelled q1 phylo(1 | group, tree = tree) intercept in mu. It does not license other providers, slopes, labels, covariance, q2-plus structured effects, profiling, intervals, coverage, or inference claims.

Estimating coi needs both kinds of boundary value. If the response has exact zeroes but no exact ones (or exact ones but no exact zeroes), the coi likelihood is maximised at its boundary: the coi coefficient runs towards minus (or plus) infinity with a huge standard error, check_drm() reports the fit as degenerate, and is_converged() returns FALSE. coi cannot be dropped, because an omitted coi formula means coi ~ 1. The likelihood factorises into the interior beta part, the boundary probability zoi, and coi, so for such data fit the same model as two parts instead: beta_family() for the values strictly inside (0, 1) and binomial() for the indicator of an exact boundary value. The two parts give the same mu, sigma, and zoi estimates without the unidentified parameter. drmTMB has no ordered-beta family.

Examples

zero_one_beta()
#> $name
#> [1] "zero_one_beta"
#> 
#> $family
#> [1] "zero_one_beta"
#> 
#> $n_response
#> [1] 1
#> 
#> $dpars
#> [1] "mu"    "sigma" "zoi"   "coi"  
#> 
#> $links
#>      mu   sigma     zoi     coi 
#> "logit"   "log" "logit" "logit" 
#> 
#> attr(,"class")
#> [1] "drm_family"