ほくそ笑む

R言語と統計解析について

R でグラフ中にプロットされてない値を予測してみる

なんていうか、仕事とは関係ないところでの話なんですけど、R でグラフを描いたときに、プロットされてないところの値が知りたい、ということを頼まれまして。
調べましたらスプライン補間が簡単にできるみたいなのでやり方をメモっときます。


まず、下記のようなデータがあって、グラフを描いたとします。

x <- c(1,2,3,4,5,6)
y <- c(1,4,9,7,6,8)
plot(x,y)


このグラフをスプライン補間して、データの無い部分の値を予測してみます。
スプライン補間は、smooth.spline() でオブジェクトを作成して、predict() で値を予測することでできます。

sp <- smooth.spline(x,y)
x <- seq(0, 7, length=100)
pred <- predict(sp, x)
lines(pred)


できました。ちゃんと各点を通る滑らかな曲線が引かれてますね。
このグラフの特定の値、例えば x = 2.5 のときの y の値が知りたいときは、

pred <- predict(sp, x=2.5)
cat("x =", pred$x, ", y = ", pred$y, "\n")

x = 2.5 , y = 6.923214

のようにすれば、x = 2.5 のときは y = 6.92 ぐらいだということがわかります。
以上です。今日は短いのでプログラム全体を最後にのっけときます。それでは〜。

x <- c(1,2,3,4,5,6)
y <- c(1,4,9,7,6,8)
plot(x,y)

sp <- smooth.spline(x,y)

x <- seq(0, 7, length=100)
pred <- predict(sp, x)
lines(pred)

pred <- predict(sp, x=2.5)
cat("x =", pred$x, ", y = ", pred$y, "\n")