« [R]文字列で名前を与えた関数を実行する | トップページ | [R]モードについて »

2014年2月13日 (木)

[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.38

Number of iterations to convergence: 12
Achieved convergence tolerance: 3.610584e-06

当然のことながら、適切な初期値を与えないと解は求まらないので注意。

« [R]文字列で名前を与えた関数を実行する | トップページ | [R]モードについて »

R(数値計算)」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« [R]文字列で名前を与えた関数を実行する | トップページ | [R]モードについて »

無料ブログはココログ

■■

■■■