# Create noisy data
t <- seq(0, 1, length.out = 100)
true_signal <- sin(2 * pi * t)
noisy <- true_signal + rnorm(100, sd = 0.3)
fd <- fdata(matrix(noisy, nrow = 1), argvals = t)
# Smooth with P-splines
result <- pspline(fd, nbasis = 20, lambda = 10)
plot(fd)
lines(t, result$fdata$data[1, ], col = "red", lwd = 2)
# Automatic lambda selection
result_auto <- pspline(fd, nbasis = 20, lambda.select = TRUE)
Run the code above in your browser using DataLab