Have you been plotting the columns of the model matrix against age, and finding differences between replicates? If so, the differences that you see are the differences induced by the *identifiability constraints* applied to the different replicates. The identifiability constraint is that the smooth should sum to zero over the covariate values, but the covariate values differ between replicates. (Identifiability constraints are applied even if there is only one smooth, but an intercept coefficient is always included, by default)
The space of representable functions is identical between the replicates, since the identifiability constraints do no more than remove confounding with the intercept. Here is a small example illustrating what's happening library(mgcv) set.seed(0) ## simulate some data... ## replicate 1 dat <- gamSim(1,n=400,dist="normal",scale=2) b <- gam(y~s(x2,bs='cr'),data=dat,knots=list(x2=seq(-.1,1.1,length=10))) ## replicate 2 dat <- gamSim(1,n=400,dist="normal",scale=2) b1 <- gam(y~s(x2,bs='cr'),data=dat,knots=list(x2=seq(-.1,1.1,length=10))) par(mfrow=c(2,2)) ## model matrix columns differ between replicates. ## because of constraint on smooth... plot(b$model$x2,model.matrix(b)[,2],pch=".") points(b1$model$x2,model.matrix(b1)[,2],pch=".",col=2) plot(b$model$x2,model.matrix(b)[,3],pch=".") points(b1$model$x2,model.matrix(b1)[,3],pch=".",col=2) ## underlying basis functions do not differ... ## get *unconstrained* model matrix for smooth Xp <- Predict.matrix2(b$smooth[[1]],data=b$model) Xp1 <- Predict.matrix2(b1$smooth[[1]],data=b1$model) plot(b$model$x2,Xp[,1],pch=".") points(b1$model$x2,Xp1[,1],pch=".",col=2) plot(b$model$x2,Xp[,2],pch=".") points(b1$model$x2,Xp1[,2],pch=".",col=2) best, Simon On Sunday 20 September 2009 21:59, Yan Li wrote: > Hi, all > > I want to choose same knots in GAM for 10 different studies so that they > has the same basis function. Even though I choose same knots and same > dimensions of basis smoothing, the basis representations are still not > same. > > My command is as follows: > data.gam<-gam(y~s(age,bs='cr',k=10)+male,family=binomial,knots=list(age=seq >(45,64,length=10))) > > > What is my mistake for choice of knots and dimension? Thank you very much. > > Lee > > [[alternative HTML version deleted]] > > ______________________________________________ > 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 Sciences, University of Bath, Bath, BA2 7AY UK > +44 1225 386603 www.maths.bath.ac.uk/~sw283 ______________________________________________ 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.