No.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次関数近似は扱いが簡単で便利ですから。)
No.2
- 回答日時:
(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を各パラメータで偏微分するとゼロになる」と読み替えます。その上でニュートン法を使うと、(最初の見込みが大体合っていればですが、)効率良く最適値に近づく事ができます。
もっとも、式とデータを入力すれば自動的に最小二乗法を実行してくれるアプリもありますけどね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 数学?算数の問題です どのような解答になりますか? 2 2022/04/22 04:46
- 数学 冪乗の計算について教えてください 5 2023/04/22 22:36
- 化学 【 化基 相対質量 】 相対質量を求めるときに、指数がーになっている数の割り算をするのですが、どうす 2 2022/09/14 20:35
- 物理学 誤差の問題についでです。 yがy=A+Bxの上に乗ると予想でき、以下の4個の測定値 (2,3.2±1 2 2023/04/25 00:54
- C言語・C++・C# C言語でファクト関数を使わずに階乗を計算する方法はありますか?できれば教えてください 4 2023/06/07 11:45
- JavaScript 最小二乗法 2 2023/01/01 20:57
- 計算機科学 この二つの計算方法が分からないです。 ・2進数10111010を10進数へ。 ・10進数28を2進数 7 2022/10/11 01:18
- 数学 最小公倍数と最大公約数の求め方で画像のような計算法があったのですが、理解できません。 なぜ2つ数24 4 2022/04/10 13:37
- その他(プログラミング・Web制作) プログラミングって本来数学的な計算をする為のものではないのですか? 学校で配られたFortran90 11 2022/08/25 22:14
- 数学 小数点の計算についてです。 答えは与えられた数字の中で最も少ない桁に四捨五入で合わせるのですが、ひと 2 2023/04/04 15:19
このQ&Aを見た人はこんなQ&Aも見ています
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
5元連立方程式を解きたい
-
|(x-a1)/b1|>|(x-a2)/b2|を満た...
-
最小二乗法での指数関数の計算
-
大好きなソフト(めも電卓ver0.9...
-
EXCELで2つの数値のうち大きい...
-
エクセルで二つの数字の小さい...
-
Excelで隣のセルと同じ内容に列...
-
エクセルで最初のスペースまで...
-
PowerPointで表の1つの列だけ...
-
エクセルでオートフィルタのボ...
-
エクセル 文字数 多い順 並...
-
2つのエクセルのデータを同じよ...
-
SUMIFとCOUNTIFを合わせたよう...
-
エクセルのオートフィルタで最...
-
エクセルで、2種類のデータを...
-
エクセルでの複数条件下での標...
-
エクセルで時刻(8:00~20:00)...
-
エクセルの表から正の数、負の...
-
VBAで文字列を数値に変換したい
-
エクセル 同じ値を探して隣の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで1と入力すると〇倍 2...
-
ベクトルの内積を考えるとき、θ...
-
なんでa₁b₁を分けて考えないと...
-
最小二乗法での指数関数の計算
-
5元連立方程式を解きたい
-
Maximaで非可換代数計算を行う方法
-
箱桁の重心位置の公式
-
再投稿ですいません。前の質問...
-
この問題の解き方を教えて欲し...
-
数II・Bの数列の問題です a1+a3+...
-
大好きなソフト(めも電卓ver0.9...
-
エクセルでA1のセルの文字に...
-
統計ソフトRの重回帰分析につい...
-
|(x-a1)/b1|>|(x-a2)/b2|を満た...
-
同時分布関数について。 Pr{a1...
-
IIRフィルタについて
-
エクセルのVBA 条件分岐を...
-
vlookup関数でエラー表示を空白...
-
エクセルのVBAで範囲指定に変数...
-
どれだけ似てるかを統計的に解析
おすすめ情報