if (FALSE) {
## tensor product `tesmi2' example
require(scam)
simu <- function(x,z) {2*sin(pi*x) +exp(4*z)/(1+exp(4*z)) }
xs <- seq(0,1,length=30); zs <- seq(-1,3,length=30)
pr <- data.frame(x=rep(xs,30),z=rep(zs,rep(30,30)))
truth <- matrix(simu(pr$x,pr$z),30,30)
set.seed(24)
n <- 500
x <- runif(n)
z <- runif(n)*4-1
f <- simu(x,z)
y <- f + rnorm(n)*.3
## fit model ...
b <- scam(y~s(x,z,bs="tesmi2",k=c(10,10)))
old.par <- par(mfrow=c(2,2))
persp(xs,zs,truth,theta=50,phi=20);title("truth")
vis.scam(b,theta=50,phi=20);title("tesmi2")
plot(b,se=TRUE)
plot(y,b$fitted.values,xlab="Simulated data",ylab="Fitted data")
par(old.par)
## example with cyclic cubic regression spline along the first covariate...
simu2 <- function(x,z) {sin(2*pi*x)+ exp(4*z)/(1+exp(4*z))}
xs <- seq(0,1,length=30); zs <- seq(-1,3,length=30)
pr <- data.frame(x=rep(xs,30),z=rep(zs,rep(30,30)))
truth2 <- matrix(simu2(pr$x,pr$z),30,30)
set.seed(2)
n <- 500
x <- runif(n)
z <- runif(n)*4-1
f <- simu2(x,z)
y <- f + rnorm(n)*.3
## fit model ...
b1 <- scam(y~s(x,z,bs="tesmi2",xt=list("cc"),k=10))
old.par <- par(mfrow=c(2,2))
plot(b1,se=TRUE)
vis.scam(b1,theta=50,phi=20);title("tesmi2, cyclic")
plot(y,b1$fitted.values,xlab="Simulated data",ylab="Fitted data")
persp(xs,zs,truth2,theta = 50, phi = 20);title("truth")
par(old.par)
}
Run the code above in your browser using DataLab