[R]簡単に非線形最小2乗法を行う
関数nlsを使うと、簡単に非線形最小2乗法を使うことができる。以下に使用例を示す。
> x <- c(1, 2, 3, 5, 7, 9) # 横軸の値
> y <- c(1, 4, 10, 30, 40, 80) # 縦軸の値
> # 関数nlsで非線形最小2乗法を実施
> r <- nls(y ~ a * exp(b * x), start = c(a = 1, b = 1))
> # 得られた最小2乗解による計算値を計算する横軸座標
> xest <- 1:10
> # 関数predictを使うためにはデータフレームかが必要
> data <- data.frame(x = xest)
> # xestで指定をしたところの最小2乗解を得る
> yest <- predict(r, data)
> plot(x, y) # 観測値を図にプロット
> lines(xest, yest) # 最小2乗解を折れ線で描画
> print(r) # 計算結果を表示
Nonlinear regression model
model: y ~ a * exp(b * x)
data: parent.frame()
a b
4.264107 0.326173
residual sum-of-squares: 114.38Number of iterations to convergence: 12
Achieved convergence tolerance: 3.610584e-06
当然のことながら、適切な初期値を与えないと解は求まらないので注意。
