On Jun 9, 2011, at 11:35 AM, Simon Wood wrote:

> I think that the main problem here is that smooths are not constrained to pass through the origin, so the covariate taking the value zero doesn't correspond to no effect in the way that you would like it to. Another way of putting this is that smooths are translation invariant, you get essentially the same inference from the model y_i = f(x_i) + e_i as from y_i = f(x_i + k) + e_i (which implies that x_i=0 can have no special status).

  OK, I understand the translation invariance, I think, and why x_i=0 has no special status.  I don't understand the consequence that you are saying follows from that, though.  Onward...

> All mgcv does in the case of te(a) + te(b) + te(d) + te(a, b) +
> te(a, d) is to remove the bases for te(a), te(b) and te(d) from the basis of te(a,b) and te(a,d). Further constraining  te(a,b) and te(a,d) so that te(0,b) = te(a,0) = 0 etc wouldn't make much sense (in general 0 might not even be in the range of a and b).

  Hmm.  Perhaps my question would be better phrased as a question of model interpretation.  Can I think of the smooth found for te(a) as the "main effect" of a?  If so, should I just not be bothered by the fact that te(a,b) at b=0 has a different shape from te(a)?  Or is the "main effect" of a really, here, te(a) + te(a,b | b=0) + te(a,d | d=0) (if my notation makes any sense, I'm not much at math)?  Or is the whole concept of "main effect" meaningless for these kinds of models -- in which case, how do I interpret what te(a) means?  Or perhaps I should not be trying to interpret a by itself; perhaps I can only interpret the interactions, not the main effects.  In that case, do I interpret te(a,b) by itself, or do I need to conceptually "add in" te(a) to understand what te(a,b) is telling me?  My head is spinning.  Clearly I just don't understand what these GAM models even mean, on a fundamental conceptual level.

> In general I find functional ANOVA not entirely intuitive to think about, but there is a very good book on it by Chong Gu (Smoothing spline ANOVA, 2002, Springer), and the associated package gss is on CRAN.

  Is what I'm doing functional ANOVA?  I realize ANOVA and regression are fundamentally related; but I think of ANOVA as involving discrete levels (factors) in the independent variables, like treatment groups.  My independent variables are all continuous, so I would not have thought of this as ANOVA.  Anyhow, OK.  I will go get that book today, and see if I can figure all this out.

  Thanks for your help!

Ben Haller
McGill University

http://biology.mcgill.ca/grad/ben/


Begin forwarded message:

> From: Simon Wood <s.wood@bath.ac.uk>
> Date: June 9, 2011 11:35:11 AM EDT
> To: r-help@r-project.org, rhelp@sticksoftware.com
> Subject: Re: [R] gam() (in mgcv) with multiple interactions
> 
> I think that the main problem here is that smooths are not constrained to pass through the origin, so the covariate taking the value zero doesn't correspond to no effect in the way that you would like it to. Another way of putting this is that smooths are translation invariant, you get essentially the same inference from the model y_i = f(x_i) + e_i as from y_i = f(x_i + k) + e_i (which implies that x_i=0 can have no special status).
> 
> All mgcv does in the case of te(a) + te(b) + te(d) + te(a, b) +
> te(a, d) is to remove the bases for te(a), te(b) and te(d) from the basis of te(a,b) and te(a,d). Further constraining  te(a,b) and te(a,d) so that te(0,b) = te(a,0) = 0 etc wouldn't make much sense (in general 0 might not even be in the range of a and b).
> 
> In general I find functional ANOVA not entirely intuitive to think about, but there is a very good book on it by Chong Gu (Smoothing spline ANOVA, 2002, Springer), and the associated package gss is on CRAN.
> 
> best,
> Simon
> 
> 
> 
> On 07/06/11 17:00, Ben Haller wrote:
>> Hi!  I'm learning mgcv, and reading Simon Wood's book on GAMs, as
>> recommended to me earlier by some folks on this list.  I've run into
>> a question to which I can't find the answer in his book, so I'm
>> hoping somebody here knows.
>> 
>> My outcome variable is binary, so I'm doing a binomial fit with
>> gam().  I have five independent variables, all continuous, all
>> uniformly distributed in [0, 1].  (This dataset is the result of a
>> simulation model.)  Let's call them a,b,c,d,e for simplicity.  I'm
>> interested in interactions such as a*b, so I'm using tensor product
>> smooths such as te(a,b).  So far so good.  But I'm also interested
>> in, let's say, a*d.  So ok, I put te(a,d) in as well.  Both of these
>> have a as a marginal basis (if I'm using the right terminology; all I
>> mean is, both interactions involve a), and I would have expected them
>> to share that basis; I would have expected them to be constrained
>> such that the effect of a when b=0, for one, would be the same as the
>> effect of a when d=0, for the other.  This would be just as, in a GLM
>> with formula a*b + a*d, that formula would expand to a + b + d + a:b
>> + a:d, and there is only one "a"; a doesn't get to be different for
>> the a*b interaction than it is for the! a*d interaction.  But with
>> tensor product smooths in gam(), that does not seem to be the case.
>> I'm still just getting to know mgcv and experimenting with things, so
>> I may be doing something wrong; but the plots I have done of fits of
>> this type appear to show different marginal effects.
>> 
>> I tried explicitly including terms for the marginal basis; in my
>> example, I tried a formula like te(a) + te(b) + te(d) + te(a, b) +
>> te(a, d).  No dice; in this case, the main effect of a is different
>> between all three places where it occurs in the model.  I.e. te(a)
>> shows a different effect of a than te(a, b) shows at b=0, which is
>> again different from the effect shown by te(a, d) at d=0.  I don't
>> even know what that could possibly mean; it seems wrong to me that
>> this could even be the case, but what do I know.  :->
>> 
>> I could move up to a higher-order tensor like te(a,b,d), but there
>> are three problems with that.  One, the b:d interaction (in my
>> simplified example) is then also part of the model, and I'm not
>> interested in it.  Two, given the set of interactions that I *am*
>> interested in, I would actually be forced to do the full five-way
>> te(a,b,c,d,e), and with a 300,000 row dataset, I shudder to think how
>> long that will take to run, since it would have something like 5^5
>> free parameters to fit; that doesn't seem worth pursuing.  And three,
>> interpretation of a five-way interaction would be unpleasant, to say
>> the least; I'd much rather be able to stay with just the two-way (and
>> one three-way) interactions that I know are of interest (I know this
>> from previous logistic regression modelling of the dataset).
>> 
>> For those who like to see the actual R code, here are two fits I've
>> tried:
>> 
>> gam(outcome ~ te(acl, dispersal) + te(amplitude, dispersal) +
>> te(slope, curvature, amplitude), family=binomial, data=rla,
>> method="REML")
>> 
>> gam(outcome ~ te(slope) + te(curvature) + te(amplitude) + te(acl) +
>> te(dispersal) + te(slope, curvature) + te(slope, amplitude) +
>> te(curvature, amplitude) + te(acl, dispersal) + te(amplitude,
>> dispersal) + te(slope, curvature, amplitude), family=binomial,
>> data=rla, method="REML")
>> 
>> So.  Any advice?  How can I correctly do a gam() fit involving
>> multiple interactions that involve the same independent variable?
>> 
>> Thanks!
>> 
>> Ben Haller McGill University
>> 
>> http://biology.mcgill.ca/grad/ben/
>> 
>> ______________________________________________ R-help@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 Science, University of Bath BA2 7AY UK
> +44 (0)1225 386603               http://people.bath.ac.uk/sw283

	[[alternative HTML version deleted]]

