リハビリ 人工知能 理学療法 Deep learning Deep Neural Network ディープラーニング AI 鍼灸

人工知能・リハビリ・日記・理学療法

タイトルはAIですが、個人的な日記なので、あまり気になさらないように。

スプライン補間を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.ss

mod.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

f:id:Takuma_AI:20211129221918j:plain

f:id:Takuma_AI:20211129221928j:plain

 

f:id:Takuma_AI:20211129221935j:plain

 

takuma-ai.hatenablog.com

 

takuma-ai.hatenablog.com

 

*1: mod.ss$y - mod.smsp$y )^2

*2: fx - mod.ss$y )^2

*3: fx - mod.smsp$y )^2