現在、ガウシアン関数y=a+b*exp(-(x-c)^2/d^2)に下記のようなデータを使用しフィッティングを行いたいのですが、
手法やパラメータa,b,c,dの求め方がわかりません。
どなたか教えていただけませんか。
よろしくお願いいたします。
(x,y)={
48.8006092
48.8056105
48.8105942
48.8156000
48.8206021
48.8256127
48.8306131
48.8356169
48.8406146
48.8456077
48.8506141
48.8556236
48.8606115
48.8656179
48.8706296
48.8756176
48.8806272
48.8856294
.....}
No.1ベストアンサー
- 回答日時:
Excelしか使えないのであれば、ソルバーを使って、以下の手順で「残差2乗和」を最小とするパラメータ a, b, c, d を探すと良いでしょう。
ただし、パラメータの初期値があまりかけ離れていると変な値に収束するか解が見つかりません。a, b, c は元のデータのグラフから見当をつけられると思います( a はベースライン高さ、b はピーク高さ、 c はピーク位置x)。d は直感では見当をつけられないので、(ピークの半値全幅)/1.67 で計算してそれを初期値としてください。【ソルバーを使った最小自乗法】
(1) Excelのメニューの [ツール] → [アドイン] で [ソルバーアドイン] の左側の□をチェックして OK
(2) A列に x データ、B列に y データを書き込む( x は A1 から、y は B1 から下方向に書き込む)
(3) D1からD4にフィッティングパラメータの初期値を書き込む(a → D1、b → D2、c → D3、d → D4)
(4) セル C1 に以下の式を貼り付ける(これをCopy&Paste)
=($D$1+$D$2*EXP(-1*(A1-$D$3)^2/($D$4)^2)-B1)^2
(5) セルC1をコピーして、C2以下の全データ分のC列にペースト(これでC列=「残差2乗」となる)
(6) セルD5 に =sum(C1:C??)と書く(??はC列最後の行番号)
(7) Excelのメニューの [ツール] → [ソルバー] で [目的セル」を $D$5、[目標値] を 最小、[変化させるセル]を $D$1:$D$4 とする。この意味は、「セルD1~D4に書かれている数値を変化させて、 D5セルを最小となるようにする」ということです。
(8) ソルバーウィンドウのオプションボタンをクリック → 制限時間を 1000、反復回数を 1000、精度・公差・収束をすべて 1e-10 とし、OKをクリック
(9) ソルバーウィンドウの実行ボタンをクリック
(10) フィッティングパラメータが見つかったら、「最適解が見つかりました・・」と出るので、OKをクリック
(11) ExcelのセルD1~D4にフィッティングパラメータが書き込まれている
なお、精度・公差・収束の値をあまり小さくすると収束しないので、もしデータのばらつきが大きくて収束しないときは、これらの値を適宜、大きくしていってみてください。ご質問のデータはGaussianのほんの1部でしたのでこちらで実験することはできませんでした。ちなみに私は通常、カレイダグラフというグラフソフトで任意関数のフィッティングをやっています。
この回答への補足
inara様 御回答ありがとうございます。私の質問内容が少し抜けておりました。Excel、gnuplot等のソフトを使用せず、計算結果が出力されるまでの途中のアルゴリズムを教えていただけませんかと記載すればよかったのですが質問が不十分でした。大変御迷惑をお掛けし、申し訳ありませんでした。
補足日時:2007/11/15 09:17お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) エクセルの関数について 4 2022/07/30 16:42
- Excel(エクセル) 【エクセル関数】アルファベットで以上だったらカウントする 4 2022/07/09 14:07
- PHP 【スプレッドシート】順位のつけ方 2 2022/08/17 13:27
- Excel(エクセル) エクセルで年月ごとの売り上げを集計する方法を教えてください 7 2022/06/01 17:06
- その他(プログラミング・Web制作) 下記内容はpythonの重回帰分析で可能でしょうか? python初心者です。現在の業務でもしかした 2 2022/06/16 00:36
- 数学 参考文献の探し方(数学) 1 2022/07/19 01:09
- Excel(エクセル) DATE関数で指定する「日」のセルが関数の場合の対処法 5 2022/09/14 15:46
- PHP PHPSpreadsheetを使って関数を繰り返し埋め込みたい 1 2023/05/24 11:33
- Excel(エクセル) 【エクセル】元データからの引用 5 2022/04/18 10:22
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
エクセルのグラフから半値幅を求めたいです
その他(教育・科学・学問)
-
ExcelでGaussian fittingをしたいのですが、どうすれば良いですか?
Visual Basic(VBA)
-
正規分布へのfitting
数学
-
-
4
ガウス形とローレンツ形
数学
-
5
ガウシアンフィッティングのアルゴリズム
数学
-
6
パラメータが9個ある関数(ガウス分布)の最小二乗法による近似
数学
-
7
スペクトルのフィッティング関数で、ローレンツ関数とガウス関数が出てきて、それらで合う理由を教えて下さ
物理学
-
8
近似曲線の設定方法
その他(ソフトウェア)
-
9
単位について(a.u.)
化学
-
10
EXCELのマクロが回してる途中から遅くなり、困っています
Excel(エクセル)
-
11
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
12
吸収スペクトルの波形分離方法
化学
-
13
数値データの規格化
数学
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
過去質『すべての自然数とすべ...
-
数学者という職業は今もありま...
-
【数学・標準偏差σ】標準偏差の...
-
方程式の解き方について
-
全然わからないので質問する資...
-
座標計算でのTan(θ)-1/Cos(θ)に...
-
【算数】時速50kmで5秒間...
-
『y=x√a』xはどう求める?※x乗...
-
1分45秒75で289,995円稼ぐA君が...
-
虚数の計算を教えてください
-
youtubeの登録者数100万人はど...
-
初歩的な計算式の問題です。
-
整数問題 兎に角 難問です 千葉...
-
下の画像の問題(7)なのですが、...
-
関数がF = { AB → DE, BC →G, C...
-
ほんとになんでうごくかわからない
-
e^π、e^2πは、別の綺麗な数式で...
-
この変形の何が違うのかわから...
-
数学の関数についての質問です...
-
計算手順について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
整数問題 兎に角 難問です 千葉...
-
えこれわかるひといますか?
-
長方形の分類(幾何学)
-
京都大学理系 過去問 整数問題
-
天孫降臨の神武天皇のY染色体...
-
中学数学の図形の問題です。
-
数学I アホらしい質問なのでそ...
-
正方行列Aについて
-
このルートを外す計算どうすれ...
-
素数についての一考察
-
これて最後どうやりますか??
-
この数学の問題はどうやって解...
-
高校数学の整数問題です。
-
暗闇で2人が出会うには両方動...
-
なんでですか?
-
大学入試の数学で、解答を進め...
-
n^2+n-4032はどうやって解くん...
-
(-1) ^2πってなんで1じゃないん...
-
標準偏差
-
一橋大学過去問 整数 素数 かな...
おすすめ情報