w=matrix(0,nrow=101,ncol=9) s=seq(0,10,by=.1) for(i in 1:9) w[,i]=dnorm(s-i) x=rnorm(9) z=w%*%x plot(s,z,type="l",ylim=c(min(min(z),min(x)*dnorm(0)),max(max(z),max(x)*dnorm(0))),lwd=2) for(i in 1:9) { lines(s,x[i]*w[,i],col=8) lines(c(i,i),c(0,x[i]*dnorm(0))) } # examples of changing kernel width par(mfrow=c(3,1)) w2=matrix(0,nrow=101,ncol=9) s=seq(0,10,by=.1) for(i in 1:9) w2[,i]=dnorm(s-i,sd=0.4) z=w2%*%x plot(s,z,type="l",lwd=2) for(i in 1:9) { lines(s,x[i]*w2[,i],col=8,lwd=2) lines(c(i,i),c(0,x[i]*dnorm(0,sd=0.4))) } w2=matrix(0,nrow=101,ncol=9) s=seq(0,10,by=.1) for(i in 1:9) w2[,i]=dnorm(s-i,sd=0.6) z=w2%*%x plot(s,z,type="l",lwd=2) for(i in 1:9) { lines(s,x[i]*w2[,i],col=8,lwd=2) lines(c(i,i),c(0,x[i]*dnorm(0,sd=0.6))) } w2=matrix(0,nrow=101,ncol=9) s=seq(0,10,by=.1) for(i in 1:9) w2[,i]=dnorm(s-i,sd=2) z=w2%*%x plot(s,z,type="l",lwd=2) for(i in 1:9) { lines(s,x[i]*w2[,i],col=8,lwd=2) lines(c(i,i),c(0,x[i]*dnorm(0,sd=2))) } # examples of changing kernel shape par(mfrow=c(3,1)) matern1.fun=function(x) return(1.0*abs(x)^0.5*besselK(1.0*abs(x),0.5)/(2*1.253189)) w2=matrix(0,nrow=101,ncol=9) s=seq(0,10.0001,by=.100001) for(i in 1:9) { for(j in 1:101) w2[j,i]=matern1.fun(s[j]-i) } z=w2%*%x plot(s,z,type="l",lwd=2) for(i in 1:9) { lines(s,x[i]*w2[,i],col=8,lwd=2) lines(c(i,i),c(0,x[i]*matern1.fun(0.00001))) } #matern with lambda=2, nu=1.5 matern2.fun=function(x) return((2.0^0.5)*abs(x)^1.5*besselK((2.0^0.5)*abs(x),1.5)/(2*1.490345)) w2=matrix(0,nrow=101,ncol=9) s=seq(0,10.0001,by=.100001) for(i in 1:9) { for(j in 1:101) w2[j,i]=matern2.fun(s[j]-i) } z=w2%*%x plot(s,z,type="l",lwd=2) for(i in 1:9) { lines(s,x[i]*w2[,i],col=8,lwd=2) lines(c(i,i),c(0,x[i]*matern2.fun(0.00001))) } #tricube kernel tricube.fun=function(x) return(0.328*(abs(x)<2.635)*(1-(abs(x)/2.635)^3)^3) w2=matrix(0,nrow=101,ncol=9) s=seq(0,10,by=.1) for(i in 1:9) { for(j in 1:101) w2[j,i]=tricube.fun(s[j]-i) } z=w2%*%x plot(s,z,type="l",lwd=2) for(i in 1:9) { lines(s,x[i]*w2[,i],col=8,lwd=2) lines(c(i,i),c(0,x[i]*0.328)) }