- ベストアンサー
ガウスフィッティングについて
- ガウスフィッティングについての質問です。
- ガウス関数の最小二乗法による当てはめについて、エクセルなどのソフトを使わずに解く方法を知りたいです。
- 他の方法も考えましたが、パラメータの a が邪魔で解けません。何か良い方法があれば教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
最小化したいのは E=Σ(yi-y(t))^2 ですね。パラメータをベクトルで p=(a,b,c,σ) と書くことにします。 どうやっても非線形で、反復計算が必要です。「理論式」という観点で言い換えるなら、「最小二乗解pに収束する漸化式」を作るところまでしか出来ない、ってことです。 その漸化式は、たとえば「第n回目の反復で得られたパラメータの推定値p[n]を使って、(∂E/∂p)(p[n])を係数とするpの一次式でEを近似し、これを使ってp[n]よりも最小二乗解に近いp[n+1]を計算する」というものですから、「適切な初項を与えれば最小二乗解に収束する漸化式」でしかありません。(他にもアプローチはありますが、初項が必要なのは同じ。) ここで「適切な初項」というのは、「初項で決まるガウス曲線がもしデータとかけ離れていたら、漸化式が収束しない」ってことです。では初項が「適切」かどうかを予め判定する手段はというと、これまた一般にはありませんで、計算してみて収束していくかどうかを見るしかない。そういう事情です。 なので、実地に計算するには、漸化式の初項(つまりpの最初の推測値)を決める方法が必要。これはイロイロ工夫するしかありません。 以下は「適切な初項を決める手段」の話なので、現段階ではご興味ないのかも知れませんが: 「パラメータaをなんとか推定したうえで、対数を取って線形最小二乗法でb,c,σを出す」というのは一つの方法です。ただしこのままだと F=Σ(ln(yi)-ln(y(t)))^2 を最小化することになり、Eの最小化とはかなり違います。むしろ G=Σ(yi (ln(yi)-ln(y(t)))^2 でEをよく近似できます。( ln(1+x)≒x を使っています。) もちろん、これは飽くまで初項を推定する方法であって、それを使って「Eを最小化する漸化式」で反復計算をすることになります。 別の手段として、もしデータyiによくフィットする曲線y(t)が存在する(データがほぼ綺麗にガウスカーブになっている)なら、データの最大値付近に放物線をフィッティングするなどしてcの推測値を決め、さらに直線 y=(最大値-最小値)/2 とデータの折れ線グラフとの交点の間隔2w(半値幅)からσを推定して、線形最小二乗法でa,bを決める、などなど。
その他の回答 (1)
- spring135
- ベストアンサー率44% (1487/3332)
必ずしも良く理解しているわけではないのですが確率密度関数としてガウス分布を仮定するならば a=0, c=Σyi/n, b=1/(2π)^.5σ、σ=Σ(yi-c)^2/n でデータから一義的に来ますと思いますが、データセットが違うのでしょうか。
お礼
ご回答どうもありがとうございました。 頂いた回答を参考にしつつ、いろいろ調べた結果、 なんとか、解法に辿り着きました。 どうもありがとうございました。
補足
データは、その両端において必ずしも 0 に収束しません。 両端では、ある値(正か負)付近で振動しているようなデータです。 ですので、a は必ずしも 0 になりません。
お礼
ご回答どうもありがとうございました。 頂いた回答を参考にしつつ、いろいろ調べた結果、 なんとか、解法に辿り着きました。 どうもありがとうございました。
補足
> 「最小二乗解pに収束する漸化式」を作るところまでしか出来ない いろいろ調べているのですが、やはり反復法などが多くヒットしますね。 やはり、理論的に解くというのは厳しいものなのか…。 その「漸化式を作る」というのを、もう少し詳しく解説して貰えないでしょうか? それから、E を最小化する p と F を最小化する p は違う解になるのですか? よく理解していませんので、自分的には同じになると思っておりましたが。