# [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
response....

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.

best,
Simon

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