par(mfrow=c(1,2))
m1 <- "Estimated Natural Cubic Spline"
n <- 300
t <- sort(round(runif(n),digits=2))
y <- cos(4*pi*t) + rnorm(n)
ss <- splinek(as.numeric(levels(factor(t))),t)
N <- ss$N
M <- ss$K
lambda <- lambda.hat(y,as.numeric(levels(factor(t))),t,1,plot=TRUE)
lambda <- lambda$lambda_hat
h <- solve(t(N)%*%N + lambda*M)%*%t(N)%*%y
gam <- solve(ss$R)%*%t(ss$Q)%*%h
sa <- ncs.graph(as.numeric(levels(factor(t))),h,gam,1000)
plot(t,y,xlim=range(t),ylim=range(y),cex=0.3,lwd=3,xlab="",ylab="",main=m1)
par(new=TRUE)
plot(t,cos(4*pi*t),xlim=range(t),ylim=range(y),type="l",xlab="",ylab="",col="red")
par(new=TRUE)
plot(sa[,1],sa[,2],xlim=range(t),ylim=range(y),type="l",xlab="t",ylab="y",col="blue")
legend(min(t),max(y),col=c("red","blue"),bty="n",lty=1,legend=c("True function","NCS"))
Run the code above in your browser using DataLab