# How to implement ordinal logistic regression for a factorial design

I have read a few answers (e.g. this, this and this) recommending to use Ordinal Logistic Regression (OLR) as a generalized method when Kruskal-Wallis is not suitable. For instance, a 2x2 factorial design since K-W is the non-parametric equivalent of one-way ANOVA.

My situation: I have a 2x2 design with two treatment variables and each has two levels (so 4 treatments in total). Each variable represents the level of exposure of subjects to some environmental factor. There are two possible values: low and high, and I encode them as 0 (low) and 1 (high) in Stata.

I also have several other variables measuring different characteristics of the subjects after being exposed to different combinations of levels of exposure. I want to explore the individual as well as the interaction effects of the two treatment variables on these characteristics.

I am convinced that I should use OLR to do this, but I have a few questions regarding its implementation:

1. Is it correct to run one regression per characteristic individually (so each characteristic as the dependent variable)?

2. These characteristic variables are continuous, so is it appropriate to use them as the dependent variable in a OLR? I guess it is fine, as OLR handles an ordinal variable and a continuous variable is also ordinal?

3. How do we run the regression exactly? For example, if an interested dependent variable is a, and the treatment/independent variables are b and c, do we simply do ologit a i.b i.c in the case of Stata? (http://www.ats.ucla.edu/stat/stata/dae/ologit.htm) But then how do we find out about the interaction effect?

4. When do we include other variables in the regression in addition to the (categorical) treatment variables? For example, independent variables like age, sex, etc.

5. Do we need to adjust for anything when using OLR this way? I see a few options to use with ologit in Stata (http://www.stata.com/manuals13/rologit.pdf), but am inexperienced to decide which to use, if any.

6. Finally, is it possible to achieve pairwise comparison across treatments using OLR? If so, how do we do it in Stata?

• If your dependent variable is continuous, you should almost certainly not be using ordinal logistic. What is your dependent variable? – Peter Flom Nov 6 '14 at 13:49
• @PeterFlom: That seems a little strong. The pros & cons of carrying out ordinal logistic regression with a continuous response are much the same as with other non-parametric or semi-parametric methods. – Scortchi - Reinstate Monica Nov 6 '14 at 16:53
• @Scortchi How is ordinal logistic regression non-parametric? If you want a model with fewer assumptions for a continuous DV, why not quantile regression? – Peter Flom Nov 8 '14 at 12:36
• @PeterFlom: Semi-parametric in that OLR doesn't make assumptions about the distribution of the response conditional on the predictor values, only about how that distribution changes with the predictor values (the proportional-odds assumption). Pros: the usual apparatus of likelihood-based estimation can be used, including deviance tests of hypotheses, comparing models by AIC, & penalizing the likelihood to shrink parameter estimates. Cons: the proportional odds assumption may be inappropriate; you can try a different link function or indeed use quantile regression. – Scortchi - Reinstate Monica Nov 8 '14 at 15:14
• @Scortchi Fair enough. I wonder if there are any studies of when OLR and quantile regression agree and don't. – Peter Flom Nov 9 '14 at 14:43

2. Yes. You're modelling $\log\frac{\Pr(Y \geq y_i|x_1,x_2,\ldots)}{\Pr(Y < y_i|x_1,x_2,\ldots)}=\beta_{0i} + \beta_1 x_1 + \beta_2 x_2 + \ldots$ for all the observations $y_i$. So the intercepts $\beta_{0i}$ define a kind of baseline distribution for $Y$ (when all the predictor values $x_1, x_2, \ldots$ are zero) as a step function, which you can use when you're making predictions. The assumption that a change in a predictor has the same effect on the log odds for all $i$ is a strong one, & you need to check it.
5. You probably want to present it a bit differently, not wanting a big table of intercepts. And there are some computational issues owing to having so many intercepts. The orm function in the rms package for R deals with them; I don't know about STATA.