Ordinal logit is a model for modeling the association between covariates and the likelihood of observing a particular level of an ordered categorical outcome. Coefficients are reported in log-odds. These examples assume `y_ord`

is a categorical variable taking at least 3 (mutually exclusive) ordered values.

Stata uses `ologit`

for multinomial models.

`ologit y_ord x z`

The most commonly used ordinal logistic regression function in R is `polr`

in the `MASS`

package. `y_ord`

here should be an ordered.

```
example_ologit <-
MASS::polr(y_ord ~ x + z,
data=example_data,
Hess=TRUE)
```

Note `Hess=TRUE`

just tells the function to return the hessian matrix required to estimate standard errors.

`summary()`

produces summary output with standard errors. You can also use `broom::tidy()`

to get a data frame of coefficients, standard errors, and p-values–and confidence intervals when using `conf.int=TRUE`

.

```
summary(example_ologit)
broom::tidy(example_ologit)
```

Generalized ordinal models relax the proportional odds assumption

`gologit2`

is used to fit these models in Stata. Variables with a proportional relationship to the outcome are listed in `pl()`

. In the output, proportional variables will be fixed to the same value across all outcome thresholds, while the others will vary between thresholds.

`gologit2 z, pl(x)`

Generalized ordinal logit models may be run using `ordinal::clm()`

. The argument `nominal =`

specifies variables which are *not proportional* to the outcome. These are treated as `nominal`

with regard to the outcome. In the output, nominal variable effects will be shown under `Threshold Coefficients`

while proportional coefficiens will display under `Coefficients`

.

`clm(y_ord ~ x, nominal = ~ z, data = example_data)`

No one has requested this yet: Let me know if desired. Mostly redundant with other model types.

If you want the predicted outcome for each case, you can use `predict()`

.

`predict(example_ologit)`

If you want the probability of falling into each level of the outcome, you can use `predict()`

with `type = "probs"`

.

`predict(example_ologit, type = "probs")`

Note this will produce a column of probabilities for each level of the outcome.

`ggeffects`

can make predictions over a range of covariates.

```
library(ggeffects)
library(dplyr) # For the pipes
example_ologit %>%
ggpredict(terms = c("x","z")) %>%
plot()
```

Brant tests are used to test the parallel odds assumption of the ordinal logit model.

You can test this assumption with a Brant test using the `brant`

postestimation command in Stata. This function is in the `spost`

package. The `detail`

option provides more… detail.

```
ologit y_ord x z
brant, detail
```

You can conduct a Brant test using `poTest()`

in the `car`

package.

`car::poTest(example_ologit)`