[R] ordered logistic regression - cdplot and polr

Joshua Wiley jwiley.psych at gmail.com
Mon Apr 11 19:36:11 CEST 2011

Hi Elizabeth,

On Mon, Apr 11, 2011 at 9:59 AM, Elizabeth Pringle
<epringle at stanford.edu> wrote:
> Hi,
> I have a dataset that I am trying to analyze and plot as an ordered logistic
> regression (y = ordinal categories 1-3, x = continuous variable with values
> 3-9).
> First is a problem with cdplot:
> Produces a beautiful plot, with the "right" trend, but my independent factor
> values are transformed.  The factor has values from 3-9, but the plot
> produces an x-axis with values from 20-140.  When I force the xlim to be
> 3-9, it produces a plot without the trend, which can't be correct.

This is difficult to really help with without some data (we do not
have LogAntDensity).  Certainly, if the graph shows values form 20 -
140, it makes sense that if you then force the range to be from 3 - 9,
you do not see anything.  The problem is not range, it is data/setup.

> Second is a problem with polr:
> The output of the summary command of the model built with polr includes t
> values for lots (if not all) of my independent factor values, but does not
> produce a summary of the fit of the model or of the overall fit of the
> factor.  Also, intercepts are different from those produced with a logistic
> fit in JMP...

Does it not output the Residual Deviance and AIC?  Those relate to
model fit.  Two models can be compared using anova(m1, m2), so to
compare the overall effect of a factor or multiple factors, just fit
and compare two separate models.

> Code below, any help much appreciated.
> Thanks
> Beth
> LogAntDensityFactor<-as.factor(LogAntDensity)
> ###order ordinal variable
> HammerCatOrd<-ordered(HammerCat)
> ###set ordered ordinal dependent variable as factor
> HammerCatOrdFactor<-as.factor(HammerCatOrd)

This is repetivie.  ordered() makes a factor, and you could do the same with:

factor(HammerCat, ordered = TRUE)

Another note/commet, cdplot() and polr() have formula methods and can
access data from a data frame elegantly.  It would be better to keep
all your data bundled together in a data frame, than have different
variables in various stages of transformation but with similar names
floating around.  This may not be true, but wildly unexpected values
almost sounds like a typo may have happened at some point either in
using the name in cdplot OR in assigning data to the variable

> ###density plot with three levels
> cdplot(HammerCatOrdFactor~LogAntDensityFactor,xlab="Log(Ant
> Density)",ylab="Latency
> of response to disturbance (1-3)")

What does str(HammerCatOrdFactor) or summary(HammerCatOrdFactor) (and
ditto for LogAntDensityFactor) give?  My guess is you will find they
are not quite what you thought they were.

> require(MASS)
> logordered<-polr(HammerCatOrdFactor~LogAntDensityFactor,Hess=TRUE)

Side note, why is LogAntDensity a factor? or do you mean factor in a
vernacular sense not in a technical is.factor(LogAntDensityFactor)
sense?  If LogAntDensityFactor is your only other term in the model,
an example comparison could be:

lognull <- polr(HammerCatOrdFactor ~ 1, Hess=TRUE)
logordered <- polr(HammerCatOrdFactor ~ LogAntDensityFactor, Hess=TRUE)

anova(lognull, logordered)



> summary(logordered,digits=3)
>        [[alternative HTML version deleted]]

Plain text emails are preferred.

> ______________________________________________
> 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.

Joshua Wiley
Ph.D. Student, Health Psychology
University of California, Los Angeles

More information about the R-help mailing list