Rによるデータ分析

Rによるスプライン

スプライン のRによる実施例です。

データ

下記の例は、同じデータを使っています。 直線3本が当てはまりそうですが、赤丸をつけたサンプルは、その線から外れています。
spline

スプライン補間

setwd("C:/Rtest")
library(ggplot2)
Data <- read.csv("Data.csv", header=T)
x <- Data$X
y <- Data$Y
sp <- splinefun(x, y)
xpred <- seq(min(x), max(x), by = 0.1)
ypred <- sp(xpred)
Data2 <- as.data.frame(cbind(xpred, ypred))
ggplot(Data2, aes(x=xpred,y=ypred)) + geom_line()+ggtitle("Interpolating Splines")+xlab("X")+ylab("Y")

spline

平滑化スプライン

setwd("C:/Rtest")
library(mgcv)
library(ggplot2)
Data <- read.csv("Data.csv", header=T)
sp <- gam(Y~s(X), data=Data)
x <- Data$X
X <- seq(min(x), max(x), by = 0.1)
xpred<-as.data.frame(X)
ypred <- predict(sp,xpred)
Data2 <- as.data.frame(cbind(xpred, ypred))
ggplot(Data2, aes(x=X,y=ypred)) + geom_line()+ggtitle("Smoothing Splines")+xlab("X")+ylab("Y")

spline

多変量適応的回帰スプライン

setwd("C:/Rtest")
library(earth)
library(ggplot2)
Data <- read.csv("Data.csv", header=T)
sp <- earth(Y~., data=Data)
x <- Data$X
X <- seq(min(x), max(x), by = 0.1)
xpred<-as.data.frame(X)
ypred <- predict(sp,xpred)
Data2 <- as.data.frame(cbind(xpred, ypred))
ggplot(Data2, aes(x=X,y=ypred)) + geom_line()+ggtitle("Multivariate Adaptive Regression Splines")+xlab("X")+ylab("Y")

spline

多変量適応的回帰スプラインでは、数式を出すことができます。
summary(sp)
spline



参考文献

Multivariate adaptive regression spline
Rのパッケージが、4種類紹介されています。 筆者は4種類とも試してみましたが、使いやすいのはearthでした。
https://en.wikipedia.org/wiki/Multivariate_adaptive_regression_spline


Package ‘earth’
earthのマニュアルです。
https://cran.r-project.org/web/packages/earth/earth.pdf



Rによるデータ分析

データサイエンス教室