Imagine you have an ordinal outcome with \(\textit{J}\) ordered categories, for example:
The ordered logit model (proportional odds model) does not predict the probability of being in category 2, 3, etc. directly. Instead, it models the cumulative logits - that is, the log-odds of being in a higher category or better.
Let \(\textit{Y}\) be the ordinal response (1, 2, …, \(\textit{J}\)).
The proportional odds model says:
\[\begin{equation*} \log\left(\frac{P(Y \leq j \mid X)}{P(Y > j \mid X)}\right) = \alpha_j - (X\beta) \quad \text{for } j = 1, 2, \dots, J-1 \end{equation*}\]
or, more commonly written as the log-odds of being greater than category \(\textit{j}\):
\[\begin{equation*} \log\left(\frac{P(Y > j \mid X)}{P(Y \leq j \mid X)}\right) = \alpha_j + X\beta \quad \text{(note the sign flip)} \end{equation*}\]
Key points:
This is the \(\textbf{proportional odds}\) assumption: the effect of each predictor \(\textit{X}\) (the \(\beta\) coefficients) is identical no matter where you cut the ordinal scale!
The odds ratio for a one-unit increase in \(\textit{X}\) is:
\(\text{OR} = \exp(\beta)\)
and this odds ratio is \(\textbf{the same}\) whether you are comparing:
So, if \(\beta\) for “high income” = 0.80 \(\rightarrow\) OR = exp(0.80) \(\approx\) 2.2. In words, people with high income have \(\textbf{2.2 times greater odds}\) of being in a higher satisfaction category than lower, regardless of whether “higher” means Medium-or-High vs Low, or High vs Medium-or-Low.
If the true effect of income is very strong when moving from Low \(\rightarrow\) Medium, but almost zero when moving from Medium \(\rightarrow\) High, then \(\beta\) would need to be different for different cuts. The single \(\beta\) in the proportional odds model would be a misleading average, and some diagnostic tests (such as nominal_test in \(\textsf{R}\)’s \(\textsf{ordinal}\) package or the user-written \(\textsf{brant}\) command in \(\textsf{Stata}\)) would usually reject the assumption.
Only the intercepts (\(\alpha_1\), \(\alpha_2\)) change; the slope \(\beta\) stays identical \(\rightarrow\) parallel cumulative logit lines \(\rightarrow\) “parallel regression” = “proportional odds”. So, to make an analogy: Proportional odds means “the predictors push you up (or down) the ordinal scale with \(\textbf{the same relative force}\) at \(\textbf{every rung}\) of the ladder.”
Let’s work out an example in \(\textsf{R}\).
# install.packages(c("ordinal", "MASS"))
# Load libraries
library(ordinal)
library(MASS)
# Load the built-in housing dataset
data(housing)
# View the summary of the data
summary(housing)
## Sat Infl Type Cont Freq
## Low :24 Low :24 Tower :18 Low :36 Min. : 3.00
## Medium:24 Medium:24 Apartment:18 High:36 1st Qu.:10.00
## High :24 High :24 Atrium :18 Median :19.50
## Terrace :18 Mean :23.35
## 3rd Qu.:31.75
## Max. :86.00
# Fit an ordered logit model (proportional odds)
model <- clm(Sat ~ Infl + Type + Cont, data = housing, link = "logit")
# Summary of the model
summary(model)
## formula: Sat ~ Infl + Type + Cont
## data: housing
##
## link threshold nobs logLik AIC niter max.grad cond.H
## logit flexible 72 -79.10 174.20 0(0) 0.00e+00 3.9e+01
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## InflMedium 0.0000 0.5303 0 1
## InflHigh 0.0000 0.5303 0 1
## TypeApartment 0.0000 0.6124 0 1
## TypeAtrium 0.0000 0.6124 0 1
## TypeTerrace 0.0000 0.6124 0 1
## ContHigh 0.0000 0.4330 0 1
##
## Threshold coefficients:
## Estimate Std. Error z value
## Low|Medium -0.6931 0.5863 -1.182
## Medium|High 0.6931 0.5863 1.182
# Test the proportional odds assumption using nominal_test()
# It tests if effects are constant across thresholds
po_test <- nominal_test(model)
# Print the test results
print(po_test)
## Tests of nominal effects
##
## formula: Sat ~ Infl + Type + Cont
## Df logLik AIC LRT Pr(>Chi)
## <none> -79.1 174.2
## Infl 2 -79.1 178.2 0 1
## Type 3 -79.1 180.2 0 1
## Cont 1 -79.1 176.2 0 1
# Interpretation: Check p-values in po_test.
# If p > 0.05 for the predictors (x), the proportional odds assumption holds.
It looks like all p-values > 0.05, so the proportional odds assumption holds–no evidence of violation!