I have recently applied a questionnaire to our students to understand their likelihood to use SCRUM for future projects in their curricula. Most of the predictors and the response variable are 5-point Likert scales.

I would like to understand how to proceed in a regression context. I understand that I might need, for example, to apply an ordinal logistic regression, but how should I treat the predictors? As continuous variables (bias)? With dummies (difficult to interpret, bad coding)?

Is there some particular model suited to this task? I am currently using the ordinal package in R to fit a cumulative link model (clm), but I am not completely sure it is the best way to proceed (nor do I completely understand the underlying assumptions). Somebody in another thread suggested using ordPens, but it seems to ask for a numeric variables (confusing me), while asking for a parameter $\lambda$ that I do not really know how to select (best from a set of options).


I think you have the right approach using ordinal regression.

The documentation for the ordinal package discusses the "proportional odds assumption" somewhat. See nominal_test and scale_test in this document, and search for "assumption" in the vignette.

I think you can handle the ordinal predictors either way (interval or nominal). I think for me I would lean towards the interval. As an experiment, try to translate you 5-point predictors to an interval scale, say 1 to 100. For most common Likert-type items --- like, Strongly Disagree/D/N/A/SA --- I find that I will translate the categories to, say, 1–20, 21–40, 41–60, 61–80, 81–100. Some Likert-type items won't be like this. But I think if yours are, it makes sense to treat them as equally-spaced interval data.

  • $\begingroup$ Thanks for your help @sal. If I treat them like equally-spaced interval data, should I recode them? In which way? Or does ordinal handle it automatically? $\endgroup$
    – jcredberry
    Aug 16 '18 at 20:34
  • $\begingroup$ @jcredberry, the last I looked, the DV for clm() and clmm() needed to be an ordered category variable. If your Likert-type responses are coded as numeric, you'll need something like Data$Likert.f = factor(Data$Likert, ordered = TRUE). For the IV's, if they are already coded as numeric, R should read them as numeric. If they are factors, as.numeric(Likert) will convert them to numeric, but double check the order of the categories first (levels(Likert)). An example is given here (my own page). $\endgroup$ Aug 16 '18 at 21:47

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.