I would like to fit a multivariate regression model of an ordinal random vector using ordinal variables as covariates. I am wondering if there is anything implemented in R or other software that could do that. Or, alternatively using a Bayesian approach.

  • $\begingroup$ When you say "multivariate" are you referring to multiple (ordinal) response variables, or just multiple explanatory / predictor variables? $\endgroup$ Feb 12, 2013 at 21:46

2 Answers 2


I would use a Multinomial Generalized Linear Model for this, or rather a collection of them, one for each response. There do also exist Multivariate GLMs, but I don't know of an R package to do that and I also have never seen someone do Multivariate Multinomial GLM, but it should be possible. That said, the benefit of Multivariate GLM is usually not huge over just fitting a separate GLM for each response. Starting from there, then the important point is that you need a Multinomial GLM.

Multinomial GLM is suitible for an ordinal response variable. You set this up effectively by doing an ordered sequence of binary responses, so you have

$g(\mu_m) = X\beta + c_0 +c_1 +\cdots + c_m$

and where $\mu_m = P(Y<m)$

Now you have a choice of link function - probit or logit are the main candidates, and lead to the ordered probit and order logit models. Logit is "perfect" if you fulfil the proportional odds assumption, which basically says that your ordinal levels are evenly spaced. That is, the model will be the same between any pairs of responses equally spaced. So if your responses are A to E, then the proportional odds between A and B will be the same as between D and E. Probit, as usual, is particularly suited when you have "hidden gaussianity", in this case you are going to be thinking about a continuous variable that you are observing as ordinal (exam grades might be a good example).

The normal glm function in R doesn't do this for you, but there is a similar command in the MASS package called polr. It works basically the same as glm: see here for more info: http://stat.ethz.ch/R-manual/R-patched/library/MASS/html/polr.html

As to the issue of ordinal inputs, the usual method is to map them to "sensible numbers" unless the number of levels is low, in which case factors are probably easier. There is, however, an excellent answer on this subject here: https://stats.stackexchange.com/a/5398/19879

  • $\begingroup$ Corone, please unwrap "GLM" in your answer. It might be "General linear model" (= Linear model) or "Generalized linear model". Because of this widely spread confusion it always better to avoid GLM acronym altogether. $\endgroup$
    – ttnphns
    Feb 13, 2013 at 0:25
  • $\begingroup$ Eek sorry, I mean generalized linear model. $\endgroup$
    – Corvus
    Feb 13, 2013 at 7:32
  • $\begingroup$ Dear Corone, thanks for the help. I have done what you are suggesting. My next step is to be able to generate ordinal variables, given a fitted lets say probit model, for a set of given values for the predictors. Should I just use a multinomial distribution using the probabilities output from the fitted model? How the "goodness of fit" of this model could be reflected in this simulation? I am confused about this. $\endgroup$
    – user20780
    Mar 15, 2013 at 18:53
  • $\begingroup$ Just resending it to make sure that @Corone will be notified after my message. Thanks. $\endgroup$
    – user20780
    Mar 18, 2013 at 17:55
  • $\begingroup$ What do you want these generated ordinals for? For simulation purposes? Yes, the prediction from the GLM is a multinomial over the levels of your ordinal variable, but because they are ordinal, remember that missing forecast by 1 level is not as bad as missing by 4. I'm not sure I understand the practical task you are trying to achieve... $\endgroup$
    – Corvus
    Mar 19, 2013 at 9:30

Also you can fit an Ordinal Logit model or a Beyesian Ordinal Probit model (amongst others) using the package Zelig. It's a very well documented package. Type demo(ZeligChoice::ologit) and demo(Zelig::oprobit.bayes) to see a demo of each model.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.