[R] Factor variables with GAM models

Simon Wood s.wood at bath.ac.uk
Mon Mar 22 10:48:30 CET 2010

It doesn't usually make much sense to *smooth* over a factor variable (in the 
cases where it does you should treat the factor as a random effect), but 
there is no problem in including factor variables in a GAM. `gam' lets you 
mix factor and continuous variables in a bunch of ways. Suppose that `a' is a 
factor, `x' is a continuous (or just metric) variable and `y' is a 

y ~ a + s(x)

will fit a model where `a' is treated exactly as a factor variable is treated 
by `lm', while `x' is smoothed over. In mgcv:gam then 

y ~ s(x,by=a)

would create a `smooth-factor interaction' --- a separate smooth of `x' for 
each level of `a'. 

y ~ s(x,by=a,id=1)

would do the same, but would insist on each of the smooths of `x' having the 
same smoothng parameter. ?gam.models gives some more detail. 


On Friday 19 March 2010 19:54, Noah Silverman wrote:
> I'm just starting to learn about GAM models.
> When using the lm function in R, any factors I have in my data set are
> automatically converted into a series of binomial variables.
> For example, if I have a data.frame with a column named color and values
> "red", "green", "blue".   The lm function automatically replaces it with
> 3 variables colorred, colorgreen, colorblue which are binomial {0,1}
> When I use the gam function, R doesn't do this so I get an error.
> 1) Is there a way to ask the gam function to do this conversion for me?
> 2) If not, is there some other tool or utility to make this data
> transformation easy?
> 3) Last option - can I use lm to transform the data and then extract it
> into a new data.frame to then pass to gam?
> Thanks!!!
> ______________________________________________
> 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.

> Simon Wood, Mathematical Sciences, University of Bath, Bath, BA2 7AY UK
> +44 1225 386603  www.maths.bath.ac.uk/~sw283

More information about the R-help mailing list