[R] How to plot results of clmm()?

Michael Friendly friendly at yorku.ca
Tue Nov 5 16:08:21 CET 2013


On 11/4/2013 9:13 AM, thomas wrote:
> Dear list,
>
> I'd like to create a visual plot of a clmm() I've fitted using the
> 'ordinal' package in R. It's possible to do this with a glm() by using
> the 'effects' package. For example:
>
>     library(effects)
>     data(BEPS)
>     mod <- lm(political.knowledge ~ age + gender + vote, data=BEPS)
>     eff <- effect("age", mod, default.levels=100)
>     plot(eff, colors=c("black", "red"))
>
> Produces: http://i.stack.imgur.com/elo4p.png
>
> The 'effects' package does not support clmm:
>
>     mod <- clmm(as.factor(political.knowledge) ~ age + gender +
> (1|vote), data=BEPS)
>     eff <- effect("age", mod, default.levels=100)
>     > Error in UseMethod("effect", mod) :
>     no applicable method for 'effect' applied to an object of class "clmm"
>
> How would I go about doing this? I can't find any examples with clm() or
> clmm() online. Any suggestions would be much appreciated.
>

You're right that clm() and clmm() models are not supported by the 
effects package.  In principle, this would not be too difficult to add, 
*if* the ordinal package contained the standard collection of methods for
'clm' and 'clmm' objects --- coef(), vcov(), and importantly, predict().
Unfortunately, there is no predict method, and clmm objects don't 
inherit from anything else:

 > methods(class="clmm")
  [1] anova.clmm*      condVar.clmm*    extractAIC.clmm* logLik.clmm*
  [5] nobs.clmm*       print.clmm*      ranef.clmm       summary.clmm*
  [9] VarCorr.clmm     vcov.clmm*
 > class(modc)
[1] "clmm"
 >

If there were, you could simply do what effects does yourself --
obtain predicted values (and CIs) over a grid of values, and plot them,

xlevels <- expand.grid(list(age=seq(20,90,10),
               gender=levels(BEPS$gender), vote=levels(BEPS$vote)))

You can, of course, obtain all the fitted values, and plot those,
but that lacks the simplicity of effect plots in averaging over factors
not shown in a given plot.

library(ordinal)
  modc <- clmm(as.factor(political.knowledge) ~ age + gender +
(1|vote), data=BEPS)

BEPS$fitted <- fitted(modc)
plot(fitted~age, data=BEPS, col=c("red", "blue")[gender])



-- 
Michael Friendly     Email: friendly AT yorku DOT ca
Professor, Psychology Dept. & Chair, Quantitative Methods
York University      Voice: 416 736-2100 x66249 Fax: 416 736-5814
4700 Keele Street    Web:   http://www.datavis.ca
Toronto, ONT  M3J 1P3 CANADA



More information about the R-help mailing list