set.seed(1)
x <- seq(from=0, to=20, by=0.4)
y <- 500 + 0.25 * (x-4)^2 * (x-16)^2
noise <- rnorm(length(x), mean=10, sd=80)
noisyY <- y + 1*noise
y <- noisyY 
ySmooth <- y ; 
cc <- 5:(length(y)-4) 
# Manual smoothing
for (i in cc)
{
  ySmooth[i] = (   1.0 * y[i-4] + 2.0 * y[i-3] + 3.0 * y[i-2] + 4.0 * y[i-1] + 4.0 * y[i] 
                 + 1.0 * y[i+4] + 2.0 * y[i+3] + 3.0 * y[i+2] + 4.0 * y[i+1] 
               ) / 24
}
plot(x[cc],noisyY[cc],col='blue',xlab='q',main='Observed data')
lines(ksmooth(x,y,  "normal", bandwidth = 3.72 ))
lines( x[cc],ySmooth[cc], col="red")

LS0tCnRpdGxlOiAiU21vb3RoaW5nIEtlcm5lbHMiCm91dHB1dDoKICBodG1sX2RvY3VtZW50OiBkZWZhdWx0CiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdAotLS0KCgpgYGB7cn0KCnNldC5zZWVkKDEpCnggPC0gc2VxKGZyb209MCwgdG89MjAsIGJ5PTAuNCkKeSA8LSA1MDAgKyAwLjI1ICogKHgtNCleMiAqICh4LTE2KV4yCgpub2lzZSA8LSBybm9ybShsZW5ndGgoeCksIG1lYW49MTAsIHNkPTgwKQpub2lzeVkgPC0geSArIDEqbm9pc2UKCnkgPC0gbm9pc3lZIAoKeVNtb290aCA8LSB5IDsgCgpjYyA8LSA1OihsZW5ndGgoeSktNCkgCgojIE1hbnVhbCBzbW9vdGhpbmcKZm9yIChpIGluIGNjKQp7CiAgeVNtb290aFtpXSA9ICggICAxLjAgKiB5W2ktNF0gKyAyLjAgKiB5W2ktM10gKyAzLjAgKiB5W2ktMl0gKyA0LjAgKiB5W2ktMV0gKyA0LjAgKiB5W2ldIAogICAgICAgICAgICAgICAgICsgMS4wICogeVtpKzRdICsgMi4wICogeVtpKzNdICsgMy4wICogeVtpKzJdICsgNC4wICogeVtpKzFdIAogICAgICAgICAgICAgICApIC8gMjQKfQoKcGxvdCh4W2NjXSxub2lzeVlbY2NdLGNvbD0nYmx1ZScseGxhYj0ncScsbWFpbj0nT2JzZXJ2ZWQgZGF0YScpCmxpbmVzKGtzbW9vdGgoeCx5LCAgIm5vcm1hbCIsIGJhbmR3aWR0aCA9IDMuNzIgKSkKbGluZXMoIHhbY2NdLHlTbW9vdGhbY2NdLCBjb2w9InJlZCIpCgpgYGAK