The β’s are constrained to be identical in all equations
The intercepts (α) vary by outcome (which become \(\tau\))
The generalized ordered logit model relaxes the assumption of equal β’s over outcome categories unless there is evidence to suggest this should be the case
Thus, despite the name, it is often no longer an ordinal model; or, most often, partially an ordered model and partially a nominal model
NOTE: I present only a brief introduction here; see Williams (2010; 2016) for the full details on the generalized ordered model
The generalized ordered logit model
The generalized ordered logit model allows none, some, or all of the β’s to be constrained to be identical across all cumulative outcome equations
For example, could find statistical evidence that effect of \(x_{1}\) is the same across the three cumulative probability equations so can constrain \(\beta_{1}\) to be identical across equations; but, in same model, allow the effect for \(x_{2}\) to differ across equations so we estimate three β’s for \(x_{2}\): \(\beta_{2,1}\), \(\beta_{2,2}\), and \(\beta_{2,3}\). E.g.,
library(haven) # import Stata data and labelslibrary(dplyr) # data manipulationlibrary(ordinal) # generalized ordered logit: clm()library(nnet) # multinomial logit: multinom()library(marginaleffects) # marginal effectsparty <-read_dta("https://tdmize.github.io/data/data/cda_gss.dta")party <- party |>filter(year >=2010)# Keep model variables; drop any missing dataparty <- party[c("partyid5", "woman", "edyrs", "age", "parent", "married", "faminc","employed", "region4", "year")]party <- party[complete.cases(party), ]# Ordered outcome; 0/1 indicators for region and year so single categories# can be constrained (as gologit2 does)party <- party |>mutate(party_ord =ordered(as_factor(partyid5)),midwest =as.numeric(region4 ==2), south =as.numeric(region4 ==3),west =as.numeric(region4 ==4),y2012 =as.numeric(year ==2012), y2014 =as.numeric(year ==2014),y2016 =as.numeric(year ==2016), y2018 =as.numeric(year ==2018),y2021 =as.numeric(year ==2021)) |>zap_labels() |>as.data.frame()# Generalized ordered logit: the IVs that gologit2's autofit constrains to have# equal coefficients across equations go in the main formula; the IVs whose# coefficients vary across equations go in nominal = ~ ...# (clm warns the model is "nearly unidentifiable" because the IVs are on very# different scales, e.g., family income vs 0/1 indicators; the estimates are fine)gomod <-clm(party_ord ~ employed + west + y2012 + y2014 + y2018,nominal =~ age + woman + edyrs + parent + married + faminc + midwest + south + y2016 + y2021,data = party)# Odds ratios in the gologit2 form: one column per equation (Strong Dem is# y > 1, Democrat is y > 2, ...). clm models Pr(y <= j), so the signs of the# varying (nominal) coefficients are flippedor_vary <-matrix(exp(-gomod$alpha), ncol =4, byrow =TRUE,dimnames =list(unique(sub("^[^.]*[.]", "", names(gomod$alpha))),levels(party$party_ord)[1:4]))or_equal <-matrix(exp(gomod$beta), nrow =length(gomod$beta), ncol =4,dimnames =list(names(gomod$beta), NULL))round(rbind(or_vary, or_equal), 3)
Recall back to the Brant test earlier; notice similarities in which IVs are constrained to have equal coefficients across equations?
In other words, we are OK to constrain employment status, one of the region indicators, and three of the year indicators (2012, 2014, and 2018) to have equal coefficients across equations; we cannot constrain the other IVs to have equal coefficients
Note that the coefficients vary across equations for age and gender; but are equal for employment status
Predictions outside of 0 and 1
As mentioned above, predictions outside the observed range are possible (see the warning at the end of the gologit2 output above)
gologit2: Changes in Pr(y) | Number of obs = 13430
Expression: Pr(partyid5), predict(outcome())
| Strong ~m Democrat Indepen~t Republi~n Strong ~b
--------------+------------------------------------------------------
age |
+SD | 0.045 -0.038 -0.044 -0.003 0.041
p-value | 0.000 0.000 0.000 0.395 0.000
woman |
Women vs Men | 0.046 0.015 -0.002 -0.048 -0.012
p-value | 0.000 0.055 0.772 0.000 0.028
Average predictions
| Strong ~m Democrat Indepen~t Republi~n Strong ~b
-------------+------------------------------------------------------
Pr(y|base) | 0.186 0.304 0.180 0.223 0.108
*AMEs from mlogitquimlogit partyid5 c.age i.woman c.edyrs i.parent i.married /// c.faminc i.employed i.region4 i.yeareststore mpartymchange age woman, amount(sd)
mlogit: Changes in Pr(y) | Number of obs = 13430
Expression: Pr(partyid5), predict(outcome())
| Strong ~m Democrat Indepen~t Republi~n Strong ~b
--------------+------------------------------------------------------
age |
+SD | 0.041 -0.038 -0.047 -0.000 0.043
p-value | 0.000 0.000 0.000 0.941 0.000
woman |
Women vs Men | 0.047 0.013 0.001 -0.049 -0.012
p-value | 0.000 0.115 0.869 0.000 0.030
Average predictions
| Strong ~m Democrat Indepen~t Republi~n Strong ~b
-------------+------------------------------------------------------
Pr(y|base) | 0.186 0.304 0.179 0.223 0.108
# AMEs from the generalized ordered logit# (mchange's +SD change starts at each observation's value)avg_comparisons(gomod, variables =list(age =sd(party$age)))
Standard errors are somewhat smaller in the generalized ordered logit model; conclusions do not differ
Overall thoughts on the generalized ordered model
If your interest is in MEs for particular categories, it is unlikely that the generalized ordered logit model will provide different conclusions than multinomial logit
However, the generalized ordered logit model can be more efficient and use fewer degrees of freedom. In smaller samples, this could make a difference for significance testing
If your focal IV cannot be constrained to have equal β’s you can no longer interpret the model in terms of the latent y* (for the focal IV) so there is little benefit to the generalized ordered logit model in this case besides efficiency (if some control variable’s β’s can be constrained)
When is the generalized ordered logit model particularly useful? When it is only one or two of your control variables that causes the violation of the parallel regression assumption
In this case, you retain the ability to interpret both MEs and effects in terms of y*for your focal IV, while relaxing an (incorrect) ordinality assumption for variables you are not focused on interpreting