Probably you didn't want to set x0=0:1? Here is some code, to do what you want.
(The CI shape is not identical to the plot(b) version as the uncertainty 
includes
the uncertainty in the other smooths and the intercept now.)

library(mgcv)
set.seed(2)
dat <- gamSim(1,n=400,dist="normal",scale=2)
b <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),data=dat)
plot(b,select=1)

plot(y~x0,dat)
mydata=data.frame(x0=0:200/200,x1=mean(dat$x1),x2=mean(dat$x2),x3=mean(dat$x3))
pv <- predict(b,mydata,type="response",se=TRUE)
lines(mydata$x0,pv$fit)
lines(mydata$x0,pv$fit+2*pv$se.fit,lty=2)
lines(mydata$x0,pv$fit-2*pv$se.fit,lty=2)


On 16/07/13 09:52, Christoph Scherber wrote:
Dear R users,

I´ve stumbled over a problem that can be easily seen from the R code below:

- When I use plot.gam() on a fitted model object, I get a nice and well-looking 
smooth curve for all
terms in the model.

- However, when I use predict(model) for a given predictor, with values of all 
other predictors set
to their means, the resulting curve doesn´t fit well at all.

Is there a way to "overlay" the curve produced by plot.gam() over a plot of the 
original data?

Here´s some reproducible code with mgcv version 1.7-22 on R3.0.1 (Windows 7):

##

library(mgcv)
set.seed(2)
dat <- gamSim(1,n=400,dist="normal",scale=2)
b <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),data=dat)
plot(b,select=1)

plot(y~x0,dat)
mydata=data.frame(x0=0:1,x1=mean(dat$x1),x2=mean(dat$x2),x3=mean(dat$x3))
lines(0:1,predict(b,mydata,type="response"))

##

Best wishes,
Christoph



______________________________________________
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.

Reply via email to