Looking at the 'contrasts' function, it seems to be imported from 'rms' and to take only 'rms'-type fits (which are different from base-R [g]lm() fits) as input.

I'm not sure exactly what contrasts you're trying to generate, but I would probably use the emmeans package for the task, since it handles a wide range of model types.

Alternately, you could use one of the modeling functions from rms, which should work with rms::contrast(), although I ran into trouble for some reason:

fit1 <- ols(y ~ x + I(x^2), data = mydata)

> Error in if (!length(fname) || !any(fname == zname)) { :
  missing value where TRUE/FALSE needed

I guess rms handles I()-protected terms differently? (The model with just y~x didn't throw an error ...)

On 2025-02-18 12:00 p.m., Sorkin, John wrote:
I am using the contrast package to produce contrasts from a glm model that 
contains a quadratic term:
fit0 <- glm(y ~ x + I(x*x),data=mydata)
I would like to know how to specify the quadratic term, I(x*x), in the contrast 
function.
When I try to use
contrast(fit0,list(x=4))
I receive an error message;
#Error in generateData(fit = list(coefficients = c(`(Intercept)` = 
0.5262645536229,  :not enough factors
When I try to use
contrast(fit0,list(x=4,I(x*x)=16))
I receive an error message:
#Error: unexpected '=' in "contrast(fit0,list(x=4,I(x*x)="
Other variants of the call to contrast including
contrast(fit0,list(x=4,"x*x"=16)) and
contrast(fit0,list(x=4,"I(x*x}"=16))
produce similar error messsages.

Please see my code below.

if (!require(contrast)) install.packages("contrast")
library(contrast)
help(contrast)

x <- 1:100
y <- x + x^2 + rnorm(1)
mydata <- data.frame(x=x,y=y)

fit0 <- glm(y ~ x + I(x*x),data=mydata)
summary(fit0)

contrast(fit0,list(x=4))
#Error in generateData(fit = list(coefficients = c(`(Intercept)` = 
#0.5262645536229,  :  not enough factors

contrast(fit0,list(x=4,I(x*x)=16))
#Error: unexpected '=' in "contrast(fit0,list(x=4,I(x*x)="

Thank you,
John

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

--
Dr. Benjamin Bolker
Professor, Mathematics & Statistics and Biology, McMaster University
Director, School of Computational Science and Engineering
> E-mail is sent at my convenience; I don't expect replies outside of working hours.

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to