No.04338 指数関数近似 y=ae^(bx)に関して  【まさ】 2007/09/11(Tue) 16:22

統計学初心者です。よろしくお願いいたします。
現在,エクセルグラフの近似以外で指数「y=ae^(bx)」での近似を行おうとしています。
元データは下記です
x = 1 2 3 4 5 6 7
y = 4167.156 2087.639 1045.854 523.946 262.483 131.497 65.877

青木先生のページを参考に まずy=ae^(bx)の両辺の対数をとり
log(y) = bx * log(a)
としてlog(y)=V log(a)=cと置き直し,V=bx+cの形で直線回帰を行いました。
が,両対数のグラフが直線になりませんでした。
直線ではありませんが,直線回帰を行い式V=-2.0992x+8.818の式を得ます。
よってc=log(a)よりa=exp(8.818)でa=6754.742を得ます。

結果近似式はy=6754.742e^(-2.0992x)と求まりますが,xに元の値を代入すると,全然値があいません。

知識が乏しいため,かなり初歩的な所で計算間違いがあると思いますが,なにとぞご教授下さい。よろしくお願いいたします。

No.04339 Re: 指数関数近似 y=ae^(bx)に関して  【青木繁伸】 2007/09/11(Tue) 17:45

> log(y) = bx * log(a)

log(y) = bx + log(a) ですね?
そして,根本的な間違いは,Excel の log は「常用対数」関数だということです。
(自然対数でも常用対数でもそのあとちゃんとやれば問題ないのですが,あとで log の逆関数で exp を使おうとしていますよね。これでは矛盾が生じます。Excel の自然対数関数は ln です。)

> 両対数のグラフが直線になりませんでした

V=bx+c は,片対数グラフですよ(xは対数変換されません)
そして,このデータは,きわめてよく直線に乗っていると見えます。

> 直線回帰を行い式V=-2.0992x+8.818の式を得ます

そうはならないようなんですが?(Excel の log でやったとしても。もちろん ln でも)

最終的な答えを書いておくと,y=8318.190315 * exp(-0.6912 * x) となるんだと思います
予測値は4167.201557,2087.661878,1045.865446,523.9519596,262.4865913,131.499099,65.87770048

なお,Excelのグラフでの近似曲線追加機能で表示される係数は有効桁数が不足することが多々あります。Rで同じ計算をすると,

y=8318.10399691879 *exp(-0.6912004231149212 * x)
予測値
4167.15655014020376 2087.63844739244132 1045.85326579211210 523.94563576573569
262.48331215951680 131.49740060633974 65.87682174520774
となるかと。

なお,非線形最小二乗法でやった方がよいと思います(Excel ならソルバーを使う)
参照:http://aoki2.si.gunma-u.ac.jp/Hanasi/StatTalk/solver.html

No.04349 Re: 指数関数近似 y=ae^(bx)に関して  【まさ】 2007/09/12(Wed) 09:53

青木先生,詳しいご回答ありがとうございます。

私の間違いは,まず,なぜか両対数が頭にあったのが大きかったようです。
xも対数をとっていてそれをグラフ化していたため,直線になってませんでした。
根本的な理解不足で単純な間違いですみません。

で得られた直線回帰がV=-0.6912x+9.0262

となり,無事y=8318.19e^(-0.6912x)を得られる事ができました。

これを期に非線形最小二乗法もしっかり勉強しようと思います。
ありがとうございました。

● 「統計学関連なんでもあり」の過去ログ--- 040 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る