Ordinal Logistic — ordered categories + Brant proportional-odds test

Verified

Advanced & specialized

Independently verified. Every statistic this test reports has been re-derived against an independent reference — never the library the pipeline itself calls — the rendered output was read back in a browser, and the result is locked with a committed regression suite.

Run this test straight away on a free built-in teaching dataset — no data of your own needed — or bring your own. Either opens the guided workspace: variable setup, assumption diagnostics, results with effect sizes and confidence intervals, figures, and APA-ready reporting.

Loading teaching datasets…

Or use your own dataset

Loading your datasets…

Models an ORDERED categorical outcome (3+ levels with natural ranking) via the cumulative-logit (proportional odds) model.

Reports per-predictor cumulative odds ratios with 95% CI, k − 1 cumulative thresholds (intercepts separating adjacent categories), model fit (log-likelihood, McFadden's pseudo-R², Cox-Snell, AIC, BIC), and a Brant-style test of the proportional-odds assumption — the critical assumption that the OR for X is the same across every cumulative-logit threshold. When PO is violated, partial-PO or multinomial alternatives are recommended.

Worked example

What predicts a customer's satisfaction level (low / medium / high)?

Ordered satisfaction (3 levels) was regressed on wait time and price using ordinal (proportional-odds) logistic regression.

Result

Longer waits lowered the odds of higher satisfaction (OR = 0.53 per SD of wait time, p < .001).

How you'd report it (APA)

An ordinal logistic regression showed longer wait times reduced the odds of higher satisfaction, OR = 0.53 per SD, p < .001.

Try it yourself: Load this ready-made sample and follow the run above.

When to use it

  • Ordered categorical outcome (Likert / staging) + predictors
    Pain rating (1-5 Likert) ~ dose + age + sex (n = 400).
  • Patient-reported outcome / symptom severity rating
    Modified Rankin Scale (mRS, 0-6 ordered) at 90 days post-stroke ~ treatment arm + age + baseline NIHSS (n = 600 RCT).

When NOT to — use instead

Hypotheses

H₀: β_j = 0 for all predictors (equivalently OR_j = 1).
Hₐ: at least one β_j ≠ 0.

Parameter tested: vector of cumulative-logit coefficients β plus k−1 cumulative thresholds α_j

Assumptions (and what to do if they fail)

Brant test for proportional odds — H₀: all predictor effects are constant across cut-points. p ≥ .05 supports the assumption; p < .05 flags violation.high

Check: Overall Brant chi² + p-value.

If violated: Proportional-odds violation → coefficients differ across thresholds.

≥ 10 cases per category per predictor (Peduzzi-style rule of thumb adapted for ordinal models). Sparse categories yield unstable thresholds.medium

Check: min(per_category_n) / k.

If violated: Sparse categories inflate threshold uncertainty and OR SEs.

No single case dominates the fit. Use Pearson residuals on the cumulative-logit fit.medium

Check: Count of |std residual| > 2.

If violated: Outliers can flip OR signs in small samples.

VIF for each predictor moderate (< 5 preferred; < 10 tolerable).medium

Check: Max VIF.

If violated: High VIF inflates OR standard errors.

Ready to run a Ordinal Logistic — ordered categories + Brant proportional-odds test on your own data?

Guided setup, automatic assumption checks, effect sizes, figures and an APA write-up.

Run this test →