Atlas
statminds
GLM (Cumulative Logit Model)The underlying model family class (e.g. GLM, linear model, categorical matrix, log-linear).Parametric ReferenceStatistical methods that assume a specific probability distribution family (typically normal).12-stage workflow

Proportional Odds Regression

The engine for Ordinal Discovery. This model audits outcomes with a natural ranking (e.g., Better/Same/Worse), assuming that predictors exert a consistent influence across all category thresholds.

Model familyGLM (Cumulative Logit Model)
Hypothesistwo-tailed
AliasesOrdinal Logistic Regression · Cumulative Logit Model · The Ranked Odds Engine
G1
Ordinal Synergy Audit
Determine the multivariable drivers of movement through ranked categorical thresholds.
G2
Threshold Precision
Identify the specific 'Cut-points' where a predictor triggers a shift into a higher recovery bracket.
G3
Proportionality Validation
Verify that the influence of a variable remains stable across all levels of the ranked outcome.
1

What is it?

Proportional Odds Logistic Regression models ordinal outcomes (levels with order: e.g. Low, Medium, High) assuming covariates shift odds ratios identically across thresholds.

2

When to use it

  • Ordinal Outcomes: Ordered category levels (e.g. survey satisfaction).
  • Parallel Slopes: Odds ratios remain identical across outcome thresholds.
Interactive Sandbox

Ordinal Cumulative Odds Live Laboratory

Adjust parallel shift slope (beta1) to watch parallel threshold S-curves change.

Presets
Parallel Log-Odds Slope1.0
Cumulative probability curve layout (Low Level: blue; Medium Level: green; High: amber)The parallel slopes assumption forces curves to have identical shapes
Cumulative Low ThresholdCumulative Med Threshold
The 12-Stage Precision Workflow
01Rank-Order Influence
Hypotheses
We test the null of zero influence against the discovery of a non-zero shift through the cumulative probability landscape.
02Parallel Slopes
Assumptions
The 'Brant Mandate': Ensuring the relationship between predictors and outcome is consistent across every categorical cut-point.
03Ordinal Symmetry
Diagnostics
Utilizing the Brant Test to verify proportionality—if this fails, the 'Proportional Odds' assumption is a mathematical fiction.
04focus
Predicting FlowMotion Recovery Status (None < Partial < Full) based on Exercise Compliance and Baseline Age.
05Multinomial Pivot
Alternatives
Knowing when to switch to Multinomial Logistic if the 'Parallel Slopes' assumption is violated and the ranking logic collapses.
06Omnibus Likelihood
Significance
Executing the Likelihood Ratio strike to determine if the predictors meaningfully move the ordinal needle.
07Cumulative Odds Ratio
Effect Size
Interpreting COR: e.g., 'For every unit of X, the odds of being in a HIGHER category increase by Y%.'
08Cut-point Power
Sample Size
Calculating the N required to provide stable estimates for multiple threshold intercepts without matrix collapse.
09The Ordered Narrative
Reporting
Reporting the consistent OR across all thresholds, provided the proportionality audit passed the forensic test.
10MASS / polr Logic
Software
Executing the 'polr' or 'clm' commands, ensuring the outcome is correctly encoded as an ordered factor.
11focus
Avoiding the error of treating ranked data as continuous (Linear Regression) or unordered (Multinomial), both of which discard critical information.
12focus
Tracing the logic back to Peter McCullagh (1980) and the foundational breakthroughs in modeling ordered categorical data.
01Hypothesis test logic

Hypotheses

Pragmatic null and alternative hypotheses defined in mathematical notation.

We ask not just 'is there a link?', but 'how much does Y change for every unit of X?'
Logic Core
Null · H₀

H₀: β₁ = 0 (predictor has no effect on log-odds of exceeding any category threshold)

Alternative · Hₐ

Hₐ: β₁ ≠ 0 (predictor affects cumulative log-odds across all thresholds)

Why it matters two-tailed

For each predictor. Overall model test: H₀: all βⱼ = 0 (except intercepts). The proportional odds assumption means the effect of predictors is constant across all threshold comparisons. Coefficients are in log-odds; exponentiate for cumulative odds ratios.

02Model diagnostics

Assumptions

The core mathematical criteria needed to ensure that statistical testing remains unbiased and valid.

Linearity is a strong claim. Nature often curves; ensure your model does not force a straight line on a bent world.
Integrity Shield
7
Assumptions
4
Critical / High Severity
How to check
Quick
Verify that category ordering makes substantive sense. Check frequency distribution to ensure no empty or very sparse categories (n < 5 per category). Confirm categories represent increasing levels of a construct.
Rigorous
Content validity assessment of ordinal scale. Check inter-rater reliability if ratings. Verify ordinality with Spearman correlations to continuous measures of same construct. Ensure distance between categories need not be equal (ordinal, not interval).
If violated
If truly nominal (no natural order) → use multinomial logistic regression instead. If only 2 categories → use binary logistic regression. If many categories (7+) and approximately interval → consider linear regression or ordinal with relaxed assumptions. If category collapse needed → combine adjacent sparse categories (pre-specify rules).
multinomial logisticols regression
How to check
Quick
Brant test (p > .05 indicates proportional odds OK). Visual: plot predicted probabilities for each outcome level by predictor; lines should be parallel. Compare cumulative logit models with separate slopes per threshold.
Rigorous
Brant test per predictor and overall. Fit partial proportional odds model (allows some predictors to vary) and compare via likelihood ratio test. Check graphically: cumulative logit plots should show parallel lines across thresholds.
If violated
If Brant test p < .05: (1) BEST: Partial proportional odds model (allows non-proportional predictors while constraining others). (2) Generalized ordered logit (unconstrained). (3) Separate binary logistic regressions per threshold (less efficient). (4) Multinomial logistic regression (ignores ordering, loses power). (5) Check if violation is substantively meaningful or just statistical artifact with large n.
multinomial logistic
How to check
Quick
Design review: check for repeated measures (same subjects), clustering (students in schools, patients in clinics), or matched pairs. Verify each subject contributes only once.
Rigorous
Calculate intraclass correlation (ICC) if clustering suspected. Check for temporal autocorrelation if time series. Review sampling design for dependence structure.
If violated
If repeated measures → use ordinal mixed-effects model (cumulative link mixed model, CLMM) with random intercepts. If clustered data → use CLMM with cluster random effects or GEE for ordinal outcomes. If matched pairs → use conditional ordinal logistic or include matching variable as fixed effect. Alternatively, use cluster-robust standard errors.
gee
How to check
Quick
Calculate variance inflation factors (VIF) for each predictor. VIF > 10 indicates problematic multicollinearity; VIF > 5 is concerning. Check correlation matrix: |r| > .80 suggests redundancy.
Rigorous
VIF analysis, condition indices, tolerance values. Check eigenvalues of correlation matrix. Examine parameter estimate stability when predictors added/removed.
If violated
If VIF > 10: (1) Remove one predictor from highly correlated pair (choose based on theory). (2) Create composite score combining correlated predictors (e.g., sum, mean, factor score). (3) Use ridge regression or elastic net for ordinal outcomes. (4) Center continuous predictors if interaction terms cause multicollinearity.
ridge regressionelastic net
How to check
Quick
Frequency table of outcome categories. Minimum recommended: 10-15 observations per predictor per non-modal category. Check for empty cells in predictor × outcome crosstabs.
Rigorous
Apply EPV (events per variable) rule: need ≥10 events per predictor for least frequent outcome categories. Use simulation to assess bias and coverage with actual sample size.
If violated
If sparse categories: (1) Collapse adjacent ordinal categories (pre-specify rules, e.g., combine 'strongly disagree' with 'disagree'). (2) Use exact methods or penalized likelihood (Firth correction) for small samples. (3) Reduce number of predictors (select based on theory/prior research). (4) Increase sample size if feasible.
How to check
Quick
For continuous predictors: create categorical version (quartiles) and fit model; check if coefficients show linear trend. Plot empirical cumulative logits vs predictor; should be approximately linear.
Rigorous
Add polynomial terms (quadratic, cubic) and test significance. Use splines or GAM for ordinal outcomes to detect nonlinearity. Lowess smoothing of logit vs predictor.
If violated
If nonlinearity detected: (1) Transform continuous predictor (log, sqrt, polynomial). (2) Categorize predictor into meaningful groups (but lose information). (3) Use splines (restricted cubic splines recommended). (4) Include polynomial terms (X, X², interaction terms). Test nested models to confirm improvement.
How to check
Quick
Check leverage values (hat values > 2(p+1)/n suspect). Examine standardized residuals (|r| > 3). Look for unusual covariate combinations in scatterplot matrix.
Rigorous
Cook's distance (D > 1 or 4/n), DFBETAS (|value| > 2/√n), influence plots. Assess change in deviance (ΔDev) when cases removed. Check for separation (predictor perfectly predicts outcome).
If violated
First verify data entry accuracy. If legitimate outliers: (1) Report results with/without outliers (sensitivity analysis). (2) Use robust standard errors. (3) Winsorize extreme values at pre-specified percentiles. (4) If complete/quasi-complete separation detected → use penalized likelihood (Firth method) or exact logistic. Never remove outliers just to achieve significance.
03Residual Forensics

Diagnostics

Checking residual plots and indices to examine model deviations and ensure standard error integrity.

Trust, but verify. The outliers often hold more truth than the averages.
System Health
Essential checks
  1. Brant test for proportional odds assumption (overall and per predictor)
  2. Frequency distribution of outcome categories (check for sparse cells)
  3. VIF for multicollinearity (VIF < 10, ideally < 5)
  4. Likelihood ratio test for overall model fit
  5. Confusion matrix and classification accuracy
Recommended checks
  1. Residual deviance and Pearson chi-square for goodness-of-fit
  2. Plot predicted probabilities by predictor across outcome levels
  3. Leverage and influence diagnostics (Cook's D, DFBETAS)
  4. ROC curves per dichotomized threshold
  5. Compare nested models with AIC/BIC
  6. Pseudo-R² (McFadden, Nagelkerke)
  7. Proportional odds curves visualization
  8. Check for complete or quasi-complete separation
04Live Instances

Applied Minds

Review concrete study examples, data layout guidelines, and copy executable syntax scripts.

Theory is the map. Practice is the terrain. Simulation bridges the gap.
Applied Wisdom
Example 01

Pain Severity Rating After Yoga Intervention (3-level ordinal outcome)

Research question: Do yoga frequency (weekly sessions) and age predict chronic pain severity improvement in adults with lower back pain? Design: Longitudinal study (n=200) with 12-week yoga intervention. Outcome: Pain improvement rating (1=worse/same, 2=mild improvement, 3=substantial improvement). Predictors: Yoga sessions per week (continuous, 0-7), age (continuous, years).

DesignCross-sectional post-intervention assessment
Outcome ScalePain improvement (ordinal, 3 levels)
# Proportional Odds Logistic Regression: Yoga frequency → Pain improvement
# Based on Cramer et al. (2013) dose-response meta-analysis

library(MASS)        # For polr() proportional odds model
library(brant)       # For Brant test of proportional odds
library(car)         # For VIF
library(ordinal)     # For clm() with more diagnostics
library(ggplot2)     # For visualization
library(effects)     # For effect plots

set.seed(2025)

# Simulate realistic data
# Pain improvement depends on yoga frequency and age
n <- 200
age <- runif(n, 25, 75)
yoga_sessions <- rpois(n, lambda=3)  # 0-7 sessions/week
yoga_sessions[yoga_sessions > 7] <- 7

# Latent pain improvement (higher = better)
latent_improvement <- -1.5 + 0.35*yoga_sessions - 0.02*age + rnorm(n, 0, 1)

# Convert to ordinal categories with thresholds
pain_improvement <- cut(latent_improvement,
                        breaks=c(-Inf, -0.5, 0.8, Inf),
                        labels=c("worse_same", "mild", "substantial"),
                        ordered=TRUE)

data <- data.frame(pain_improvement, yoga_sessions, age)

# === STEP 1: Descriptive Statistics ===
table(data$pain_improvement)
prop.table(table(data$pain_improvement))
# Check for sparse categories (need ≥10 per category)

# Crosstabs
print("Pain improvement by yoga frequency:")
with(data, table(cut(yoga_sessions, breaks=c(0,2,4,7)), pain_improvement))

# === STEP 2: Check Assumptions ===

# Multicollinearity (VIF - fit as linear first)
lm_temp <- lm(as.numeric(pain_improvement) ~ yoga_sessions + age, data=data)
vif(lm_temp)
# Result: VIF < 5 for all predictors (OK)

cat("\n=== VIF(Multicollinearity Check) ===\n")
print(vif(lm_temp))

# === STEP 3: Fit Proportional Odds Model ===

# Using MASS::polr
po_model <- polr(pain_improvement ~ yoga_sessions + age, 
                 data=data, 
                 Hess=TRUE,
                 method="logistic")  # Can also use "probit" or "cloglog"

summary(po_model)

# Coefficients (log-odds scale)
coef(po_model)

# Convert to odds ratios
exp(coef(po_model))
exp(confint(po_model))

# Interpretation:
# OR for yoga_sessions = 1.42: Each additional yoga session per week 
# increases odds of being in higher pain improvement category by 42%
# OR for age = 0.98: Each year older decreases odds of higher improvement by 2%

# === STEP 4: Test Proportional Odds Assumption (CRITICAL!) ===

# Brant test (H0: proportional odds holds)
brant_test <- brant(po_model)
print("\n=== Brant Test for Proportional Odds ===")
print(brant_test)
# Result: If p > .05 for all predictors, proportional odds assumption OK
# If p < .05, consider partial proportional odds or generalized ordered logit

# Visual check: plot cumulative probabilities
# Should be parallel across thresholds
effect_yoga <- Effect("yoga_sessions", po_model)
plot(effect_yoga, 
     main="Proportional Odds: Yoga Sessions → Pain Improvement",
     ylab="Probability",
     xlab="Yoga Sessions per Week")

# === STEP 5: Model Fit Statistics ===

# Likelihood ratio test (compare to null model)
po_null <- polr(pain_improvement ~ 1, data=data, Hess=TRUE)
anova(po_null, po_model)
# Result: Significant LRT indicates model better than null

# Pseudo R-squared
# McFadden's R²
mcfadden_r2 <- 1 - (po_model$deviance / po_null$deviance)
cat("\nMcFadden's Pseudo-R²:", round(mcfadden_r2, 3), "\n")

# AIC/BIC
cat("AIC:", AIC(po_model), "\n")
cat("BIC:", BIC(po_model), "\n")

# === STEP 6: Predictions and Classification ===

# Predicted probabilities for new data
new_data <- expand.grid(yoga_sessions = 0:7,
                        age = c(30, 50, 70))
new_data$pred_class <- predict(po_model, newdata=new_data, type="class")
new_data$prob_worse <- predict(po_model, newdata=new_data, type="probs")[,1]
new_data$prob_mild <- predict(po_model, newdata=new_data, type="probs")[,2]
new_data$prob_substantial <- predict(po_model, newdata=new_data, type="probs")[,3]

print("\n=== Predicted Probabilities ===")
print(head(new_data, 12))

# Classification accuracy
data$predicted <- predict(po_model, type="class")
confusion_matrix <- table(Observed=data$pain_improvement, Predicted=data$predicted)
print("\n=== Confusion Matrix ===")
print(confusion_matrix)
cat("\nAccuracy:", sum(diag(confusion_matrix))/sum(confusion_matrix), "\n")

# === STEP 7: Visualization ===

# Stacked probabilities by yoga frequency
plot_data <- expand.grid(yoga_sessions = seq(0, 7, 0.5), age = 50)
probs <- predict(po_model, newdata=plot_data, type="probs")
plot_data <- cbind(plot_data, probs)

library(reshape2)
plot_long <- melt(plot_data, id.vars=c("yoga_sessions", "age"),
                  variable.name="pain_level", value.name="probability")

ggplot(plot_long, aes(x=yoga_sessions, y=probability, fill=pain_level)) +
  geom_area(alpha=0.7) +
  scale_fill_manual(values=c("#d73027", "#fee08b", "#1a9850"),
                    labels=c("Worse/Same", "Mild Improvement", "Substantial Improvement")) +
  labs(title="Predicted Pain Improvement by Yoga Frequency(Age 50)",
       x="Yoga Sessions per Week",
       y="Predicted Probability",
       fill="Pain Improvement") +
  theme_classic() +
  theme(legend.position="bottom")

# === STEP 8: Alternative Model (if Brant test fails) ===

# If proportional odds violated, try partial proportional odds
# (allows some predictors to have different effects across thresholds)
# Using ordinal package:
library(ordinal)

# Flexible model allowing yoga_sessions to vary across thresholds
# clm_flex <- clm(pain_improvement ~ age, nominal = ~ yoga_sessions, data=data)
# summary(clm_flex)
# anova(clm_model, clm_flex)  # Test if flexibility needed

# === APA-Style Reporting ===
cat("\n=== APA-Style Report ===\n")
cat("A proportional odds logistic regression was conducted to examine the\n")
cat("effects of yoga session frequency and age on pain improvement ratings\n")
cat("in adults with chronic lower back pain(n=200). The outcome variable\n")
cat("was ordinal pain improvement(worse/same < mild < substantial). The\n")
cat("proportional odds assumption was met(Brant test p > .05 for all\n")
cat("predictors). The overall model was significant compared to the null\n")
cat("model, χ²(2) = [LRT value], p < .001, McFadden's pseudo-R² = [value].\n")
cat("\n")
cat("Yoga session frequency significantly predicted higher pain improvement\n")
cat("odds(OR = 1.42, 95% CI [1.28, 1.58], p < .001), indicating that each\n")
cat("additional weekly yoga session increased the odds of being in a higher\n")
cat("improvement category by 42%. Age was negatively associated with\n")
cat("improvement(OR = 0.98, 95% CI [0.96, 0.99], p = .02), with each year\n")
cat("decreasing odds of higher improvement by 2%. These findings support a\n")
cat("dose-response relationship between yoga frequency and pain outcomes.\n")
Interpretation Blueprint

OR = 1.42 for yoga_sessions (p < .001): Each additional yoga session per week increases the odds of being in a higher pain improvement category by 42%, demonstrating a clear dose-response relationship. OR = 0.98 for age (p = .02): Older adults show slightly lower improvement odds. The proportional odds assumption was met (Brant test p > .05), validating the single-coefficient interpretation across all thresholds. McFadden's pseudo-R² = 0.21 indicates moderate model fit. Findings align with Cramer et al. (2013) meta-analysis showing dose-dependent yoga effects on chronic pain.

05Tactical Pivots

Alternatives

Structured fallback pathways for choosing alternative tests when normality or slopes requirements fail.

When the path is blocked, pivot. Rigor is not rigidity; it is the intelligent adaptation to reality.
Adaptive Strategy
Measurement Precision Ladder Ideal · Ordinal / Ranked
Ratio
Consider OLS Regression if the outcome is continuous. Rank conversion (Ordinalization) discards raw-score precision.
Data Compression
Interval
Ideal for Categorical Scales. Ensures the 'Threshold Intercepts' correctly map the ranked story.
Standard Robustness
Ordinal
Maintain Proportional Odds logic. The definitive engine for auditing cumulative shifts through ranked thresholds.
Peak Signal
Nominal
Abandon Ordinal Logit. Use Multinomial Logistic if categories lack a natural, logical order.
Logic Failure
Temporal Trajectory Audit Static Ranked Snapshot
Static Rank
Single point audit.
Stay with Proportional Odds. Map the drivers of movement through recovery stages.
Repeated Ranks
Longitudinal order.
Pivot to Ordinal GEE or Multilevel Ordinal Logistic to account for subject-specific rank trajectories.
Adaptive Technical Safeguards · adaptive safeguards
parallel slopes violated
  • Partial Proportional Odds — Relax the proportionality mandate only for the variables that fail the Brant test.
  • Multinomial Logistic — Abandon the ordinal hierarchy if the predictor effects flip direction across thresholds.
extreme cell sparsity
  • Category Collapsing — Merge adjacent thin categories (e.g., Level 1 + 2) to stabilize the threshold intercepts.
  • Bayesian Ordinal Logit — Use priors to protect against non-convergence in sparse ranked grids.
non linear logits
  • Ordinal GAM — Model the cumulative link function using smoothing splines.
06Adjusted Comparisons

Post-hoc

Group mean comparisons and correction controls (e.g. Tukey HSD, Bonferroni) to protect against Family-Wise Error Rates.

The omnibus test opens the door; post-hoc analysis explores the room.
Forensic Detail
Adjusted Comparisons

Post-hoc pairwise tests defined for this model.

Interpretation Guidelines

No specific guidelines provided.

07Standardized scale impact

Effect Size

Understanding effect sizes (e.g., Cohen's d, Partial Eta-Squared) and clinical impact benchmarks.

Significance is noise. Magnitude is the signal. Measure the impact, not just the probability.
Impact Magnitude

OR = 1.5 means 50% increase in odds of being in higher category per unit increase in predictor. OR = 0.7 means 30% decrease. Report with 95% CI. Cohen's d can be approximated: d ≈ log(OR) × √3/π ≈ 0.55 × log(OR).

McFadden's R²: 0.20-0.40 excellent fit. Nagelkerke R²: comparable to OLS R². Cox-Snell R²: max < 1. Report multiple pseudo-R² measures.

Compare classification accuracy to baseline (modal category). PRE = (Accuracy_model - Accuracy_baseline) / (1 - Accuracy_baseline)

Recommended Metric: odds_ratios with 95% CI (primary), McFadden pseudo-R² (model-level)
Small
0.2
Medium
0.5
Large
0.8
0.50
odds_ratios with 95% CI (primary), McFadden pseudo-R² (model-level)
Recommended Measure
3
Available Metrics
ReportUse odds_ratios with 95% CI (primary), McFadden pseudo-R² (model-level) to represent clinical impact magnitude.
08Statistical Power

Sample Size

Guidelines for minimum sample requirements and power analysis parameters.

An underpowered study is an ethical failure. Respect the data by collecting enough of it.
Power Protocol
Floor Requirements

The 'Threshold Density' Minimum: A minimum of 20 participants per categorical level is essential. Ordinal models mathematically collapse if any 'Cut-point' in the distribution is too sparse to stabilize the cumulative odds.

Effect SizeParametersRequired n
Small EffectOdds Ratio = 1.5 (Small)n ≈ 750 total
Medium EffectOdds Ratio = 2.5 (Medium)n ≈ 150 total
Large EffectOdds Ratio = 4.0 (Large)n ≈ 65 total
Key considerations

The 'Parallel Slopes' Tax: If the proportionality assumption is violated, the model's power becomes a mathematical fiction. Audit the Brant Test first—if it fails, switch to Multinomial and prepare to recruit 30% more participants.

G*Power StrategyBenchmark: Z-tests → Ordinal Logistic (PLUM). Parameters: Odds Ratio (COR), Number of thresholds (k), Base-rate distribution, α = .05, Power = .80. Note: Power is maximized when the categories are balanced.
09APA narrative blueprint

Reporting

How to compile statistical results into publication prose matching APA and journal style guides.

The Beta coefficient is the currency of change. Interpret it in real-world units, not just standardized abstractions.
Narrative Arc
Worked APA paragraph example
A proportional odds logistic regression examined the effects of yoga session frequency and age on pain improvement ratings (n=200, ordinal outcome: worse/same < mild < substantial improvement). The proportional odds assumption was met (Brant test, all p > .05). The overall model significantly predicted pain improvement compared to the null model, χ²(2) = 43.12, p < .001, McFadden's pseudo-R² = .21, indicating moderate fit. Yoga session frequency significantly predicted higher pain improvement (OR = 1.42, 95% CI [1.28, 1.58], p < .001), such that each additional weekly session increased the odds of being in a higher improvement category by 42%, demonstrating a dose-response relationship. Age negatively predicted improvement (OR = 0.98, 95% CI [0.96, 0.99], p = .02), with each additional year decreasing odds of higher improvement by 2%. These findings support yoga as an effective intervention for chronic pain with clear dose-dependent effects.
Reusable template

A proportional odds logistic regression was conducted to examine research question/purpose. The outcome variable was ordinal DV with levels specified. Predictors included list IVs. The proportional odds assumption was assessed using the Brant test result: met/violated; if violated, specify remedy. The overall model was significant compared to the null model, χ²(df) = X.XX, p < .XXX, McFadden's pseudo-R² = .XX interpret: fair/moderate/excellent fit. For each significant predictor: Predictor name significantly predicted higher/lower outcome name (OR = X.XX, 95% CI X.XX, X.XX, p = .XXX), indicating that substantive interpretation in odds language, e.g., 'each unit increase in X increased the odds of being in a higher outcome category by XX%'. Conclude with practical implications and limitations.

Essential statistics to report
  • Likelihood ratio χ² and p-value for overall model
  • Odds ratios with 95% CI for each predictor
  • p-values for each predictor
  • Pseudo-R² (McFadden and/or Nagelkerke)
  • Statement about proportional odds assumption (Brant test result)
  • Sample size and outcome category frequencies
  • Model AIC/BIC if comparing models
10Exhibit Builder

Manuscript Lab

Copy standard summary tables and forensic reporting grids to outline analysis details.

Table 1: Ordinal Logistic Regression for Disease Severity
PredictorOdds Ratio95% CIp-valueInterpretation
Biomarker X2.10[1.45, 3.05]< .001Increases Severity
Treatment0.45[0.25, 0.80].005Reduces Severity
Note. Outcome: Mild < Moderate < Severe. N = 180. Proportional Odds Assumption met (p = .45).
OR = 2.10For every unit rise in Biomarker X, the odds of being in a more severe category more than double.
Header glossary

The Cumulative Shift. The odds of being in a 'higher' severity category vs. all lower categories combined.

The Parallel Assumption. Assumes the effect of X is the same for moving from Mild->Mod as it is for Mod->Severe.

11Algorithmic Logic

Command Center

Syntax libraries and function parameters for executing calculations in stats packages.

Code your model to handle residuals. The errors tell you what your model missed.
Execution Engine
# 1. Fit Ordered Logit (Polr)
model <- MASS::polr(severity ~ marker + tx, data = df, Hess = TRUE)

# 2. Test Parallel Regression Assumption
brant::brant(model)
Library stack
R
MASSbrant
Python
statsmodels
Elite Forensic Strike

If the Brant test is significant, the Parallel Lines assumption is dead. You must pivot to a 'Partial Proportional Odds' model or Multinomial.

# Partial Proportional Odds Model
VGAM::vglm(y ~ x, family = cumulative(parallel = FALSE))
12The Over-adjustment Trap

Common Mistakes

Analytical caveats and corrections to maintain modeling integrity.

Wisdom is learning from the failures of others. Anticipate the error before it occurs.
Defensive Logic
Why it's wrong
Ordinal categories do not have equal intervals (e.g., difference between 'dissatisfied' and 'neutral' may not equal difference between 'neutral' and 'satisfied'). Linear regression assumes equal spacing and can produce nonsensical predictions (e.g., satisfaction = 3.7 when categories are 1-5 integers). Violates distributional assumptions (residuals won't be normal).
The correction
Use proportional odds logistic regression (maintains ordinality without assuming equal intervals) or ordinal probit. Only use linear regression if you have 7+ ordinal categories and can justify near-interval properties (even then, ordinal regression is more appropriate).
Why it's wrong
When proportional odds assumption is violated, the single coefficient per predictor is misleading—it averages effects that actually differ across thresholds. For example, a predictor may strongly affect mild→moderate transition but not moderate→severe, which is hidden in standard model.
The correction
If Brant test p < .05: (1) Use partial proportional odds (allows offending predictors to vary), (2) Use generalized ordered logit (all predictors vary), or (3) Report separate binary logistic regressions per threshold. Compare models via AIC. Report which predictors violate assumption and interpret threshold-specifically.
Why it's wrong
Loses substantial information and statistical power. For example, collapsing 5-point Likert (very dissatisfied to very satisfied) to binary (dissatisfied vs satisfied) discards 3 categories. Reduces ability to detect dose-response effects and nuanced relationships. Arbitrary cutpoint choice affects results (researcher degree of freedom).
The correction
Use full ordinal regression to preserve all information. Only collapse categories if theoretically justified (e.g., combining 'strongly disagree' and 'disagree' if no substantive difference) or if categories are sparse (n<10). Pre-specify collapsing rules before analysis.
Why it's wrong
Multinomial logit treats categories as nominal (unordered), ignoring the ordinal structure. This loses power (more parameters to estimate) and fails to capture meaningful ordering. For example, it doesn't leverage that 'mild improvement' is between 'no improvement' and 'substantial improvement'.
The correction
Use proportional odds or other ordinal regression methods to respect ordinality. Only use multinomial logit if proportional odds is severely violated across all predictors and partial PO isn't suitable, or if outcome is truly nominal.
Why it's wrong
p-values indicate statistical significance but not effect magnitude or precision. OR = 1.02 (p=.04) may be statistically significant but practically trivial. Without CI, uncertainty is unclear (wide CI suggests unreliable estimate).
The correction
Always report odds ratios with 95% confidence intervals for all predictors. Interpret substantively: 'Each additional yoga session increased odds of higher pain improvement by 42% (OR=1.42, 95% CI [1.28, 1.58], p<.001)'. Include pseudo-R² for model-level effect size.
Why it's wrong
Sparse categories (n<10) lead to unstable estimates, inflated SEs, non-convergence. Complete separation (predictor perfectly predicts outcome category) causes infinite parameter estimates and model failure. For example, if all Restorative yoga participants have 'minimal' depression, model can't estimate effect.
The correction
Check frequency table of outcome (table(outcome)) and crosstabs with categorical predictors. If sparse: (1) Collapse adjacent categories, (2) Use exact methods or Firth penalized likelihood, or (3) Increase sample size. For separation, use penalized likelihood (logistf in R) or exact methods.
Why it's wrong
Coefficients are in log-odds (cumulative logit scale), not linear change in outcome. Cannot say 'one unit increase in X increases outcome by β units' because outcome is categorical, not continuous. Mis-interpretation: β=0.35 does not mean '+0.35 satisfaction points'.
The correction
Exponentiate coefficients to get odds ratios. Interpret: 'OR=1.42 means each unit increase in X increases the odds of being in a higher outcome category by 42%.' Use predicted probabilities for clearer interpretation: 'At X=5, P(substantial improvement) = .45; at X=6, P = .58.'
Why it's wrong
Violates independence assumption. Observations within clusters are more similar than between clusters, deflating SEs and inflating Type I error. Standard ordinal regression treats all observations as independent, leading to anti-conservative tests and overstated significance.
The correction
Use ordinal mixed models (cumulative link mixed model, CLMM) with random intercepts for clusters. In R: ordinal::clmm() or use GEE with ordinal family. Alternatively, use cluster-robust standard errors if random effects not needed.
13Academic Lineage

References

Scholarly lineage and citation keys grounding the statistical framework.

We stand on the shoulders of giants. Honor the source of the method.
Academic Lineage
[1]
McCullagh, P. (1980). Regression models for ordinal data. Journal of the Royal Statistical Society: Series B, 42(2), 109-127.
Seminal paper introducing proportional odds model for ordinal outcomes. Foundation for cumulative logit models.
doi: 10.1111/j.2517-6161.1980.tb01109.x
[2]
Brant, R. (1990). Assessing proportionality in the proportional odds model for ordinal logistic regression. Biometrics, 46(4), 1171-1178.
Introduced the Brant test for testing proportional odds assumption. Essential diagnostic for ordinal regression.
doi: 10.2307/2532457
[3]
Agresti, A. (2010). Analysis of Ordinal Categorical Data (2nd ed.). Wiley.
Comprehensive textbook on ordinal data analysis including proportional odds, partial proportional odds, and continuation ratio models.
doi: 10.1002/9780470594001
[4]
Christensen, R. H. B. (2019). ordinal: Regression Models for Ordinal Data. R package version 2019.12-10.
R package for fitting cumulative link models (clm) including flexible proportional odds models. Supports mixed models (clmm) and nominal effects.
[5]
Harrell, F. E. (2015). Regression Modeling Strategies (2nd ed.). Springer.
Chapter 13 covers ordinal logistic regression with emphasis on assumptions, diagnostics, and partial proportional odds models.
doi: 10.1007/978-3-319-19425-7
[6]
Williams, R. (2016). Understanding and interpreting generalized ordered logit models. Journal of Mathematical Sociology, 40(1), 7-20.
Explains partial proportional odds and generalized ordered logit models. Discusses when and how to relax proportional odds assumption.
doi: 10.1080/0022250X.2015.1112384
In an ordered world, the distance between categories is hidden. Proportionality is the lens that allows us to see through that mystery with mathematical authority.
The Interpretive Rigor Directive
statminds · ProportionalMind reference · v2.2 · updated 2026-01-1715 of 15 sections