Skip to contents

The cumulative-logit analogue of ordinal_probit(): the same Wright/Falconer/Dempster-Lerner threshold model for K-category ordinal data with K >= 3, fitted on the latent (logistic) scale instead of the probit scale. The latent variable representation is \(y^* = \eta + \varepsilon\), with \(\varepsilon \sim \text{Logistic}(0, 1)\) and the observed category \(y = k\) iff \(\tau_{k-1} < y^* \le \tau_k\), using cutpoints \(\tau_0 = -\infty\), \(\tau_1 = 0\) (fixed for identifiability), \(\tau_2, \ldots, \tau_{K-1}\), \(\tau_K = +\infty\). A K-category trait therefore estimates K - 2 free cutpoints, reconstructed and reported via the SAME extract_cutpoints() convention as ordinal_probit().

Usage

ordinal_logit(link = "logit")

Arguments

Always "logit"; provided for API symmetry with the other family constructors.

Value

A family object with class c("ordinal_logit", "family"). The cutpoints are estimated as part of the model fit; recover them with extract_cutpoints().

Details

Because the standard logistic distribution has variance \(\pi^2 / 3\), the link-residual variance \(\sigma^2_d = \pi^2 / 3\) exactly – the logit analogue of ordinal_probit()'s \(\sigma^2_d = 1\). As with ordinal_probit(), this fixes the ordinal liability scale; it does not by itself make estimates directly comparable with an observed continuous response.

The K = 2 case reduces exactly to binomial(link = "logit"), the logit analogue of the probit family's Hadfield (2015) eqn 10 reduction (ordinal_probit() with K = 2 reduces to binomial(link = "probit")). Use binomial() for binary outcomes and ordinal_logit() for K >= 3.

Not to be confused with cumulative_logit(). cumulative_logit() is an unrelated predictor-model family tag consumed by impute_model(family = cumulative_logit()) for an ORDERED CATEGORICAL missing covariate inside mi(); it declares no response family and never appears in the top-level family = argument of gllvmTMB(). ordinal_logit(), declared here, is a RESPONSE family for gllvmTMB()'s family = argument, exactly parallel to ordinal_probit(). Both happen to use a cumulative-logit cell probability, but one models a missing predictor's marginal distribution and the other models the observed multivariate response; they are not interchangeable and share no code path.

Cross-engine note: GLLVModels.jl's ordinal family is a cumulative-logit model, so ordinal_logit() is the gllvmTMB family that is directly comparable to it on the link scale (unlike ordinal_probit(), which differs by a factor of roughly \(\pi / \sqrt{3}\); see the cross-engine note on ordinal_probit()).

The per-cell log-probability is floored at log(1e-300) only to avoid -Inf from underflow; this does not change fits in the ordinary range.

References

Hadfield, J. D. (2015). Increasing the efficiency of MCMC for hierarchical phylogenetic models of categorical traits using reduced mixed models. Methods Ecol. Evol. 6:706-714. doi:10.1111/2041-210X.12354

See also

ordinal_probit() for the probit threshold family; extract_cutpoints() to recover \(\tau_2, \ldots, \tau_{K-1}\) after fitting; cumulative_logit() for the UNRELATED missing-predictor family of the same name shape.

Examples

ordinal_logit()
#> 
#> Family: ordinal_logit 
#> Link function: logit 
#>