スプライン補間をRでしてみた:メモ
どうも、時々、医学系の論文でも出てくるスプライン補正ですが、実装してみました。
スプライン(Spline)補間はあるデータを多項式で補間する手法の1つです。データの点で区間を区切り、区間ごとに異なる多項式を使用して補間する手法です。
メモです。気になさらずに!w
n <- 3000
x <- seq(0, 1, length.out = n)
fx <- sin(6 * pi * x)set.seed(1)
y <- fx + rnorm(n, sd = 1.5)plot(x, y) # data
lines(x, fx, lwd = 2) # f(x)
legend("topright", legend = "f(x)", lty = 1, lwd = 2, bty = "n")
install.packages("npreg")
library(npreg)
mod.ss <- ss(x, y, nknots = 10)
mod.ssmod.smsp <- smooth.spline(x, y, nknots = 10)
mod.smsp
names(mod.ss)names(mod.smsp)
'sqrt(mean*1'"'sqrt(mean*2"
"sqrt(mean*3"
plot(x, y)
lines(x, fx, lwd = 2)
lines(x, mod.ss$y, lty = 2, col = 2, lwd = 2)
lines(x, mod.smsp$y, lty = 3, col = 3, lwd = 2)
legend("topright",
legend = c("f(x)", "ss", "smooth.spline"),
lty = 1:3, col = 1:3, lwd = 2, bty = "n")plot(mod.ss)
mod.sum <- summary(mod.ss)
mod.sum