[R] How to plot results of clmm()?
John Fox
jfox at mcmaster.ca
Tue Nov 5 16:57:19 CET 2013
Dear Thomas and Michael,
As Michael knows, there is a default Effect() method in the development
version of the effects package on R-Forge. This should work with almost all
model objects that produce a single fitted value and that respond to coef(),
model.frame(), formula(), and vcov().
This might cover plotting the latent response in clm() or clmm() models but
not plots of fitted response-category probabilities such as the effects
package can make for models fit by multinom() in the nnet package or polr()
in the MASS package.
Best,
John
> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Michael Friendly
> Sent: Tuesday, November 05, 2013 10:08 AM
> To: thomas; r-help at r-project.org
> Cc: John Fox
> Subject: Re: [R] How to plot results of clmm()?
>
> 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
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-
> guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list