- ベストアンサー
最小二乗法での指数関数の計算
最小二乗法での指数関数の計算 最小二乗法での指数関数の計算方法が良く分からないのですが公式などありますか? y=ae^bxでしたらやり方があるのですがy=ae^bx+cの方法がわかりません・・・・・・
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No1の方が書いておられるように、これは厳密には非線形の最小二乗法になります。 ただし、単にそう書いても、質問者の方にはわからないと思いますので、具体的かつ実用的なやり方を書きましょう。 と言っても、簡単です。 まず、cとして、適当な値c1を仮定します。 すると、 y-c1=a1e^b1x の最小二乗法に帰着され、a1,b1が求まります。 この時の残差を、z1とします。 z1=Σ(yi-c1-a1e^b1xi)^2 次に、cの増分値をΔcとして、 c2←c1+Δc と置いて、また最小二乗法を適用し、残差z2を求めます。 z2=Σ(yi-c2-a2e^b2xi)^2 さらに、 c3←c1+2Δc と置いて、また最小二乗法を適用し、残差z3を求めます。 この段階で、cに対して残差zをプロットし、2次関数近似してみましょう。 うまくいけば、極小値がこの範囲内にみつかります。 この2次関数から直接、または、初期値c1と増分値Δcをもっと適切な値となるように設定するなりして極小値の存在範囲を狭めてから2次関数近似して、この極小値cを求めましょう。 最後にもういちど、cに対する最小二乗法を適用して、係数a,bを求めれば、それが答です。 もし、cに対するzが、単調増加、あるいは単調減少になってしまったら? この場合、Δcが大きすぎると、極小値が範囲内にあるにも関わらず、単調増加あるいは単調減少になってしまっている可能性も高いので、c1,c2,c3は変えず、Δcを1/2にして、c1とc2、c2とc3の間の値を求め、全5点をプロットしてみます。 本質的に単調増加あるいは単調減少なら、傾向に変化はないはずです。この場合には、zが小さくなる方向にcの初期値と増分値Δcを選びなおして、再計算してみましょう。 区間内に極小値がある場合には、傾向が”それらしく"変化しますから、増分値をもっと細かくして、極小値を押さえれば良いのです。 慣れてくれば、2次関数近似といわず、最初から絨毯爆撃的にcを規則的に変化させながらzの動きを把握していくなどの小ざかしい方法を覚えるようになりますが、最後は極小値の存在する区間の3個の値から2次関数近似することには変わりがありません。(2次関数近似は扱いが簡単で便利ですから。)
その他の回答 (2)
- kappa_ena
- ベストアンサー率24% (13/53)
(xi,yi)のデータの組n個(つまり、i=1,2,...,n)を使って、パラメータa,b,cを最適化したいのですよね? 電卓を叩けば答えが出るような、高校で言うところの「公式」はありません。 やり方の「公式」ならあります。どんなに複雑な式でも、基本は同じです。 まず、グラフを書いてみたりする事によって、a,b,cの見込みの値、a1,b1,c1を決めます(これが結構面倒なのですが・・・)。次に各xiに対して、a1,b1,c1を使って計算した値Yiを求めます。このYiと実際のデータyiとの差を二乗したものをi=1からi=nまで足し上げます。これを残差平方和と言います。パラメータが最適の時には残差平方和は最小となります(最小二乗法の原理)。パラメータとしてa1,b1,c1を使った時の残差平方和をS(a1,b1,c1)と書きましょう。次にパラメータとしてa2,b1,c1を使ってS(a2,b1,c1)を求めます。もしS(a2,b1,c1)がS(a1,b1,c1)よりも小さければ、パラメータの組として(a2,b1,c1)が(a1,b1,c1)よりも優れている事が分かります。このような改善を繰り返していけば、最適なパラメータの組が得られます。データは不確かさを含んでいるので、パラメータの最適化もある程度のところで止めて差し支えありません。 計算に費やす時間を短くしたい場合は、「パラメータが最適の時には残差平方和は最小となる」という条件を、「パラメータが最適の時にはSを各パラメータで偏微分するとゼロになる」と読み替えます。その上でニュートン法を使うと、(最初の見込みが大体合っていればですが、)効率良く最適値に近づく事ができます。 もっとも、式とデータを入力すれば自動的に最小二乗法を実行してくれるアプリもありますけどね。
- hitokotonusi
- ベストアンサー率52% (571/1086)
そのままの形だと非線形の最小二乗法になりますね。 線形最小二乗法とほぼ同じ計算を収束するまで繰り返すことになります。