Ploynomial regression

set.seed(1)
x <- seq(from=0, to=20, by=1)
y <- 500 - 4 * (x-10)^3
noise <- rnorm(length(x), mean=10, sd=80)
noisyY <- y + 5*noise
fitted <- lm(noisyY ~ poly(x,3))
plot(x,noisyY,col='blue',xlab='q',main='Observed data')
lines(sort(x), fitted(fitted)[order(x)], col='red') 

Cubic Spline fitting

library(splines) 
set.seed(1)
x <- seq(from=0, to=20, by=0.15)
y <- 500 - 0.25 * (x-4)^2 * (x-16)^2
noise <- rnorm(length(x), mean=10, sd=80)
noisyY <- y + 1*noise
# fitted <- lm(noisyY ~ poly(x,3))
fitted <-lm(noisyY ~ bs(x, knots = c(10)) )
plot(x,noisyY,col='blue',xlab='q',main='Observed data')
lines(sort(x), fitted(fitted)[order(x)], col='red') 

LS0tCnRpdGxlOiAiTWF0aCA1MCIKb3V0cHV0OgogIGh0bWxfZG9jdW1lbnQ6IGRlZmF1bHQKICBodG1sX25vdGVib29rOiBkZWZhdWx0Ci0tLQoKCiMjIyMgUGxveW5vbWlhbCByZWdyZXNzaW9uIApgYGB7cn0KCnNldC5zZWVkKDEpCgp4IDwtIHNlcShmcm9tPTAsIHRvPTIwLCBieT0xKQp5IDwtIDUwMCAtIDQgKiAoeC0xMCleMwoKbm9pc2UgPC0gcm5vcm0obGVuZ3RoKHgpLCBtZWFuPTEwLCBzZD04MCkKbm9pc3lZIDwtIHkgKyA1Km5vaXNlCgpmaXR0ZWQgPC0gbG0obm9pc3lZIH4gcG9seSh4LDMpKQpwbG90KHgsbm9pc3lZLGNvbD0nYmx1ZScseGxhYj0ncScsbWFpbj0nT2JzZXJ2ZWQgZGF0YScpCmxpbmVzKHNvcnQoeCksIGZpdHRlZChmaXR0ZWQpW29yZGVyKHgpXSwgY29sPSdyZWQnKSAKCmBgYAoKIyMjIEN1YmljIFNwbGluZSBmaXR0aW5nIApgYGB7cn0KCmxpYnJhcnkoc3BsaW5lcykgCgpzZXQuc2VlZCgxKQp4IDwtIHNlcShmcm9tPTAsIHRvPTIwLCBieT0wLjE1KQp5IDwtIDUwMCAtIDAuMjUgKiAoeC00KV4yICogKHgtMTYpXjIKCm5vaXNlIDwtIHJub3JtKGxlbmd0aCh4KSwgbWVhbj0xMCwgc2Q9ODApCm5vaXN5WSA8LSB5ICsgMSpub2lzZQoKIyBmaXR0ZWQgPC0gbG0obm9pc3lZIH4gcG9seSh4LDMpKQpmaXR0ZWQgPC1sbShub2lzeVkgfiBicyh4LCBrbm90cyA9IGMoMTApKSApCgpwbG90KHgsbm9pc3lZLGNvbD0nYmx1ZScseGxhYj0ncScsbWFpbj0nT2JzZXJ2ZWQgZGF0YScpCmxpbmVzKHNvcnQoeCksIGZpdHRlZChmaXR0ZWQpW29yZGVyKHgpXSwgY29sPSdyZWQnKSAKCgpgYGAKCgo=