<<目次へ


Excelにある回帰直線・曲線の当てはめ



 マイクロソフト社のExcelには回帰直線と曲線の当てはめがクリックだけで簡単にすることができます。では実際にExcelで扱える線形モデル、非線形モデルにどのようなものがあるのかを紹介します(いったいなぜこのような名称にしているのかはよく分かりませんが、、、)。また、これらをRで行うための方法も解説します。

■ 線形近似 Y = a * X + b

 これは単なる直線回帰のことです。


■ 対数近似 Y = a * log(X) + b

 Rのnls()という関数を使用します。Rで非線形回帰分析をする場合、パラメータの推定を行うために適当な初期値を自分で指定する必要があります。方法は色々ありますが、最も簡単なのはExcelでこの曲線を当てはめて、オプションで指定できる[グラフに数式を表示する]にチェックを入れ、グラフウィンドウに表示されるモデル式の係数を初期値に設定することです。

# Rでのコマンド
> result <- nls(y ~ a * log(x) + b, start = c(a = -15, b = 25))


■ 累乗近似 Y = a * X ^ b

 やり方は対数近似の場合と同様で、モデル式の部分のみを変更すればよい。ちなみに、初期値に指定するときは大体でよい。

> result <- nls(y ~ a * x ^ b, start = c(2, 2.7))


■ 指数近似 Y = a * exp(b * x)

 これもやり方としては全く同様。なお、こういった方法でもたまにうまくいかない場合がある。要するに初期値の設定が悪いとR側に怒られてしまうわけであるが、そういうときはこちらで紹介しているシンプレックス法を適用すれば解決することが多い。

> result <- nls(a * exp(b * x), start = c(a = 0.3, b = 0.6))

 ExcelでできることをなぜわざわざRでやるのか?という疑問を持つ人もいるだろうが、それはExcelの"当てはめ機能"にもバグがあるからである。というか、バグが発生した場合はExcelで表示された係数をパラメータ推定のための初期値に設定することもできないのだが、、、端的にいうと、Excelでやるよりも(学術的で)カッコイイからである。


■ 多項近似 Y = a * X ^ 2 + b * X + c 

 次数は自由に設定できます。例えば、上で示しているのは2次関数で放物線を描くような曲線を当てはめることになります。Rでの使い方はこちらを参照。