[R] How to make new predictions from a GAM with a spline forced through the origin

Gavan McGrath gavan.mcgrath at uwa.edu.au
Fri May 29 14:12:30 CEST 2015


Hi,

I’m followed an example to fit a GAM with a spline forced through a point, i.e. (0,0). This works fine from one of Simon’s examples however when it comes to making a prediction from a new set of x values I’m a bit stumped.

In the example below a smooth term is constructed and the basis and penalties at x=0 are removed then the gam is fitted to a spline basis matrix X using spline penalties.

Can someone suggest a way that I can make predictions at new  x  values based on the gam b below.


Here is Simon Wood's example:

library(mgcv)
set.seed(0)
n <- 100
x <- runif(n)*4-1;x <- sort(x);
f <- exp(4*x)/(1+exp(4*x));y <- f+rnorm(100)*0.1;plot(x,y)
dat <- data.frame(x=x,y=y)

## Create a spline basis and penalty, making sure there is a knot
## at the constraint point, (0 here, but could be anywhere)
knots <- data.frame(x=seq(-1,3,length=9)) ## create knots
## set up smoother...
sm <- smoothCon(s(x,k=9,bs="cr"),dat,knots=knots)[[1]]

## 3rd parameter is value of spline at knot location 0,
## set it to 0 by dropping...
X <- sm$X[,-3]        ## spline basis
S <- sm$S[[1]][-3,-3] ## spline penalty
off <- y*0 + .6       ## offset term to force curve through (0, .6)

## fit spline constrained through (0, .6)...
b <- gam(y ~ X - 1 + offset(off),paraPen=list(X=list(S)))
lines(x,predict(b))



	[[alternative HTML version deleted]]



More information about the R-help mailing list