Ordinal Logistic Regression and its Assumptions — Brant Test

Brant Test in R to test the proportional odds assumption.

Evangeline Lee
evangelinelee
3 min readMay 26, 2019

--

This article is intended for whoever is looking for a function in R that tests the “proportional odds assumption” for Ordinal Logistic Regression.

If you are reading this post, you probably have already read UCLA IDRE’s tutorial on Ordinal Logistic Regression. They used a graphical method to test this assumption because at that time there was no package that performs test to check this assumption in R.

When I was working on the Ordinal Logistic Regression for the 2019 World’s Happiness Report, I first tried to follow through the graphical method, however for some reasons it kept giving me error message and I couldn’t figure out why. But this assumption has to be checked before I can say that my model is a valid model (all other assumptions passed)!

After doing some research on Google, I found that most people either recommended the graphical approach or the VGAM approach. I think this is due to no other package was available until recent years.

VGAM is a package that is available to download on CRAN. In order to test the assumption using VGAM package, you would first need to fit 2 models using the vglm() function, one model without the proportional odds assumption, the other with the proportional odds assumption. After this, you would need to find the difference in -2 log likelihood and also the difference in degrees of freedom. Then you use the two differences to perform the Likelihood Ratio Test and get your result in probability. The downsides of checking assumption this way are: 1) you wouldn’t know which variable is the main cause that violate the assumption; 2) it’s a lot of steps to go through.

Luckily, I finally found this StackExchange post where Mr. Benjamin Schlegel replied that he implemented the Brant Test to R and this package is available for download on CRAN (upvote for him!)!

This package is called “brant” and is created specifically to use in conjunction with polr() function from MASS package. polr() is one of the functions that you can choose to perform the Ordinal Logistic Regression in R.

In short, Brant Test assesses whether the observed deviations from our Ordinal Logistic Regression model are larger than what could be attributed to chance alone. More detail of Brant Test is available here, the original journal article by Rollin Brant in 1990.

This Brant Test in R is easy to use and the output is easy to read. Below is just the code and output from my analysis on World Happiness Report. If the probability is greater than your alpha level, then your dataset satisfies this proportional odds assumption.

# testing parallel regression assumption using Brant's test
brant(fit)

I hope this article helped anyone who is searching for functions in R to test the proportional odds assumption. Not a lot of information is available on Google for this specific task, which is the main reason why I want to write this article — to provide some information.

References

Schlegel, B. (2017, November 27). Brant test in R. Retrieved May 09, 2019, from https://stats.stackexchange.com/questions/58772/brant-test-in-r

Brant, R. (1990). Assessing Proportionality in the Proportional Odds Model for Ordinal Logistic Regression. Biometrics, 46(4), 1171–1178. doi:10.2307/2532457

Richard Williams (2016) Understanding and interpreting generalized ordered logit models, The Journal of Mathematical Sociology, 40:1, 7–20, DOI: 10.1080/0022250X.2015.1112384

--

--

Evangeline Lee
evangelinelee

Data Analyst at National Debt Relief; MS Applied Statistics from University of Kansas. Get in touch: https://www.linkedin.com/in/evangelinelee