I would like to do a SS type III analysis on a proportional odds logistic regression model. I use drop1(), but dropterm() shows the same behaviour. It works as expected for regular main effects models, however when the model includes an interaction effect it seems to have problems with matching the parameters to the predictor terms. An example: library("MASS"); options(contrasts = c("contr.treatment", "contr.poly")); house.plr1 <- polr(Sat ~ Infl + Type + Cont, weights = Freq, data housing); drop1(house.plr1,attributes(house.plr1$terms)$term.labels,test="Chisq"); house.plr2 <- polr(Sat ~ Infl * Type + Cont, weights = Freq, data housing); drop1(house.plr2,attributes(house.plr2$terms)$term.labels,test="Chisq"); Notice that model 2 has a * instead of a + between predictors Infl and Type. In model 1, estimated parameters are nicely attributed to the right term, however in house.plr2, only 2 of the 4 terms are evaluated. I am using R version 2.7.2 (2008-08-25) i386-pc-mingw32, and MASS_7.2-44. -- View this message in context: http://www.nabble.com/weird-behavior-of-drop1%28%29-for-polr-models-%28MASS%29-tp19742120p19742120.html Sent from the R devel mailing list archive at Nabble.com.
Dear Jeroen, drop1() respects relationships of marginality among the terms in a model and won't drop a lower-order term (e.g., a main effect) when a higher-order relative (e.g., an interaction to which the main effect is marginal) is in the model. If you want a complete "type-III" ANOVA table and are careful with contrast coding (which you were not, since contr.treatment produces contrasts that are not orthogonal in the row basis of the model matrix -- you could use, e.g., contr.sum), then you can use the Anova() function in the car package, specifying type="III". Note: I'm responding to this message on the r-devel list where it was posted, but this is really a question for r-help. I hope this helps, John ------------------------------ John Fox, Professor Department of Sociology McMaster University Hamilton, Ontario, Canada web: socserv.mcmaster.ca/jfox> -----Original Message----- > From: r-devel-bounces at r-project.org [mailto:r-devel-bounces at r-project.org]On> Behalf Of Jeroen Ooms > Sent: September-30-08 9:28 AM > To: r-devel at r-project.org > Subject: [Rd] weird behavior of drop1() for polr models (MASS) > > > I would like to do a SS type III analysis on a proportional odds logistic > regression model. I use drop1(), but dropterm() shows the same behaviour.It> works as expected for regular main effects models, however when the model > includes an interaction effect it seems to have problems with matching the > parameters to the predictor terms. An example: > > library("MASS"); > options(contrasts = c("contr.treatment", "contr.poly")); > > house.plr1 <- polr(Sat ~ Infl + Type + Cont, weights = Freq, data > housing); > drop1(house.plr1,attributes(house.plr1$terms)$term.labels,test="Chisq"); > > house.plr2 <- polr(Sat ~ Infl * Type + Cont, weights = Freq, data > housing); > drop1(house.plr2,attributes(house.plr2$terms)$term.labels,test="Chisq"); > > Notice that model 2 has a * instead of a + between predictors Infl andType.> In model 1, estimated parameters are nicely attributed to the right term, > however in house.plr2, only 2 of the 4 terms are evaluated. > > I am using R version 2.7.2 (2008-08-25) i386-pc-mingw32, and MASS_7.2-44. > > -- > View this message in context: http://www.nabble.com/weird-behavior-of- > drop1%28%29-for-polr-models-%28MASS%29-tp19742120p19742120.html > Sent from the R devel mailing list archive at Nabble.com. > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel
Peter Dalgaard
2008-Sep-30 14:12 UTC
[Rd] weird behavior of drop1() for polr models (MASS)
Jeroen Ooms wrote:> I would like to do a SS type III analysis on a proportional odds logistic > regression model. I use drop1(), but dropterm() shows the same behaviour. It > works as expected for regular main effects models, however when the model > includes an interaction effect it seems to have problems with matching the > parameters to the predictor terms. An example: > > library("MASS"); > options(contrasts = c("contr.treatment", "contr.poly")); > > house.plr1 <- polr(Sat ~ Infl + Type + Cont, weights = Freq, data > housing); > drop1(house.plr1,attributes(house.plr1$terms)$term.labels,test="Chisq"); > > house.plr2 <- polr(Sat ~ Infl * Type + Cont, weights = Freq, data > housing); > drop1(house.plr2,attributes(house.plr2$terms)$term.labels,test="Chisq"); > > Notice that model 2 has a * instead of a + between predictors Infl and Type. > In model 1, estimated parameters are nicely attributed to the right term, > however in house.plr2, only 2 of the 4 terms are evaluated. > > I am using R version 2.7.2 (2008-08-25) i386-pc-mingw32, and MASS_7.2-44. >(It would have been better form to actually print the result so that people can see what you're on about:> drop1(house.plr2,attributes(house.plr2$terms)$term.labels,test="Chisq");Single term deletions Model: Sat ~ Infl * Type + Cont Df AIC LRT Pr(Chi) <none> 3484.6 Infl 0 3484.6 2.086e-08 Type 0 3484.6 -1.301e-10 Cont 1 3497.8 15.1 0.0001009 *** Infl:Type 6 3495.1 22.5 0.0009786 *** I take it that the perceived problem is the two 0-Df lines.) This is slightly peculiar, yes, but notice that in lm() or glm() you'd normally just not get entries for main effects in the presence of their interaction. This is deliberate -- type III tests can be seriously misleading and/or uninterpretable in that case, so you really are better off without them. The direct cause of the behaviour above is that in R, Infl+Type+Infl:Type and Type+Infl:Type are just two parametrizations of the same model. Try summary(house.plr2) summary(update(house.plr2,~.-Type)) -- O__ ---- Peter Dalgaard ?ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907