
18.2
単純なモデル
313
最良の10モデルを元のデータに重ねると、いずれもかなりよいようです。
ggplot(sim1, aes(x, y)) +
geom_point(size = 2, color = "grey30") +
geom_abline(
aes(intercept = a1, slope = a2, color = -dist),
data = filter(grid, rank(dist) <= 10)
)
格子を細かくしていけば、最良モデルに絞り込むことができると考えるかもしれませんが、もっと
よい方法があります。Newton–Raphson探索(ニュートン法とも)という数値的最小化ツールです。
ニュートン法は直感的には極めて単純です。開始点を適当に取り、傾きの一番急なところを探します。
これ以上下がれないところに到達するまで曲線上を徐々に滑り降りていきます。Rでは、
optim()
で
これができます。
best <- optim(c(0, 0), measure_distance, data = sim1)
best$par
#> [1] 4.22 2.05
ggplot(sim1, aes(x, y)) +