I have an output from a lm() object that has ordered factors.

    Min      1Q  Median      3Q     Max 
-1.6584 -0.0969  0.0764  0.2637  5.0639 

                      Estimate Std. Error t value Pr(>|t|)    
(Intercept)           -0.27999    0.05211  -5.373 8.54e-08 ***
GenderMale             0.04547    0.01902   2.390 0.016909 *  
ratings                0.57662    0.02217  26.009  < 2e-16 ***
`Cohort Level (CF)`.L -0.63261    0.05311 -11.911  < 2e-16 ***
`Cohort Level (CF)`.Q -0.38411    0.04705  -8.164 5.36e-16 ***
`Cohort Level (CF)`.C -0.19763    0.04187  -4.720 2.51e-06 ***
`Cohort Level (CF)`^4 -0.12549    0.03521  -3.564 0.000373 ***
`Cohort Level (CF)`^5 -0.04157    0.02582  -1.610 0.107621    
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4444 on 2245 degrees of freedom
  (2544 observations deleted due to missingness)
Multiple R-squared:  0.2747,    Adjusted R-squared:  0.2724 
F-statistic: 121.5 on 7 and 2245 DF,  p-value: < 2.2e-16

I understand that the .L and .Q are linear and quadratic fits, but how exactly can I interpret this data? If the equation is something like lm(retirementPay~Gender+rating+Cohort Level)how can I interpret the effect of cohort level on retirement pay?

  • 1
    $\begingroup$ What does Cohort Level mean in your study, what values does it take and what is the meaning of these values? $\endgroup$ Jan 17, 2019 at 16:24
  • 1
    $\begingroup$ Also, you seem to have an aweful large number of observations deleted from your model! What is your sample size for this study? In other words, what is the percentage of data missingness in your variables and which variables exhibit missing values? $\endgroup$ Jan 17, 2019 at 16:26
  • 1
    $\begingroup$ Cohort is what level of management you are. so Analyst, Associate, Manager, Director, etc. and you can ignore the missingness, I had a typo when i created my levels, theres no missing data here. oops! $\endgroup$
    – Ted Mosby
    Jan 18, 2019 at 15:37
  • $\begingroup$ For interpretation purposes, it might (?) be easier to code Cohort Level as an unordered factor using the 'ordered = FALSE' option of the factor() function. Then you can compare directly the expected retirement pay of people in different levels of management who share the same gender and rating. Treating Cohort Level as ordinal allows you to describe the overall trend present in the effect of Cohort Level. Perhaps you would expect the expected retirement pay to change in a possibly non-linear fashion from the lowest to the highest level of management among people with the same sex and rating. $\endgroup$ Jan 18, 2019 at 16:35
  • $\begingroup$ In either case, you can use the "effects" package in R to visualize the effect of Cohort Level - that will make it a lot easier to interpret the results of your model. $\endgroup$ Jan 18, 2019 at 16:36

2 Answers 2


As mentioned in the comments above, Ben Bolker and others have answered this quite nuanced question in a few places, which I'm collecting into an answer to simplify things for others who may come across this quesiton:


As appears on one of the references by Magnus( Results of lm() function with a dependent ordered categorical variable?), ordered factors are automatically converted into orthogonal polynomial contrasts first, which you can check by contr.poly(6) for your 6-level factor, followed by polynomial regression using these values in the contrast.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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