[R]スプライン関数で簡単に平滑化を行う
splinefun関数を使えば良い。splinefun関数は標準で組み込まれており、特にパッケージを使わなくても使用することができる。
一度計算を行えば、その計算結果を使用して任意の地点の計算値(推定値)を簡単に求めることもでる。さらに、この計算により作成された曲線の傾きの値(1階微分の値)も簡単に得られる。
以下は、簡単な使用例。元の値を黒丸で、スプライン関数により平滑化して作成した値を赤実線で示してある。なお、splinefun関数の戻り値は関数であることに注意。
> # 平滑化を行うデータを作成
> x <- c(0, 1, 2, 3, 4, 5, 6, 8, 9)
> y <- c(0, 1, 2, 3, 2, 3, 4, 5, 5)
> # スプライン関数で平滑化の計算
> sp <- splinefun(x, y)
> # 平滑化データの作成
> xest <- seq(min(x), max(x), by = 0.1)
> yest <- sp(xest)
> # 図の作成
> plot(xest, yest, type = "l", col = "red")
> points(x, y, pch = 16, col = "black")
平滑化により得られた曲線の傾きの値を得るには、上記の例でいえば、splinefun関数の戻り値であるspにderivオプションを付けて実行すれば良い。以下は1階微分の値を得て、それを黒実線で描画した図。
> yest1 <- sp(xest, deriv = 1)
> plot(xest, yest1, type = "l")
« [Excel]切り上げと切り捨てを行う | トップページ | [R]その年が閏年か否かを調べる »
「R(数値計算)」カテゴリの記事
- [R]複数のパラメーターと定数を持つ関数の値が最大・最小となるパラメーターを求める(2026.03.30)
- [R]重み付き線形最小二乗法を行う(2026.03.20)
- [R]重み付き非線形最小二乗法を行う(2026.03.06)
- [R]計算機イプシロンを求める(2025.10.29)
- [R]複数の引数を持つ関数の値の最小値(最大値)を求める(2024.12.07)


コメント