ちょっと変わったマニアな作品が集結

ある実験データがあり、正規分布に近い形をしています。しかし近いとはいえ、少々ズレているため分散と平均値を求め正規分布の曲線を実験データに重ねて描くと、、、なぜか大幅にずれてます。原因は、平均から大きく離れたところにデータが少ないとはいえポツポツとあり、分散が大きくなるからです(平均値はほぼ正しい値と思われます)。

分散を求める際に正規分布おかまいなく求めるため過大になるのかと思い、正規分布にfittingしようと考えました。つまり最小二乗法により実験データに近い正規分布を求め、分散を求めるのです。

この方法は意味ありますか?おそらく太古の昔から用いられてるような誰でも思い付く方法と思いますが。。。また、実際に計算する場合、エクセル等で関数は用意されてますか?それともlogを取り2次関数に展開しfittingする必要がありますか?

このQ&Aに関連する最新のQ&A

A 回答 (6件)

> 正規分布にフィッティング


 
 「(データを)正規分布にフィッティングする」という表現は意味をなしていません。強いて解釈するなら「正規分布に従うようなウソのデータを作為的にでっち上げる」というほどの意味になるでしょうか。

 さて、ご質問が、「データの散布図に正規分布をフィッティングする」という話なのだとすると、その操作は統計学的・確率論的に解釈しようがなく、まるでナンセンスです。

 しかし「データの分布に正規分布をフィッティングする」ということ、あるいは、「データの散布図にガウス曲線をフィッティングする」ということなら意味があります。両者は全く別の話であって、前者は、データの(散布図ではなく)度数分布図を描いておいて、これにガウス曲線をフィッティングすることによって、データの分布を正規分布で近似する、という意味です。また、後者は確率分布とは何の関係もなくて、単に散布図をある曲線で近似する。その曲線がたまたまガウス曲線である、ということです。

 なので、ご質問はおそらくこのどちらかではないかと思います。

●前者の場合、具体的にやることはただデータの平均と分散を計算するだけ。結果として得られた正規分布が度数分布図の形とまるで似ていないのなら、そのフィッティングは無理である。つまり、「データは正規分布とは異なる分布に従っている」ということを意味しています。

●また、後者、すなわち、ある実験データ(x[i], y[i]) (i=1,2,...., N)があり、その散布図が正規分布の曲線(ガウス曲線)近い形をしている。そこで、データにガウス曲線
f(x, a, b, c, d) = a exp(-((x-b)/c)^2)
をフィッティングしたい、すなわち、fの定数a, b, cを適当に調節して、
  f(x[i], a, b, c,) ≒ y[i]
となるようにしたい、というお尋ねであるなら、たとえば「非線形最小二乗法」というやりかたで数値計算を行えば「ある意味で最適な」a, b, cを算出することができます。この場合、曲線fが散布図上の点(x[i],[y[i])の近くを通るようにするのであって、曲線fは確率とは関係ないのだから、当然、分散だの平均だのも全く関係ありません。
    • good
    • 1
この回答へのお礼

ありがとうございます。
前者の方法でうまくいきませんでした。
前者の目的で後者の操作をしても無意味なのは何故なのでしょうか?

お礼日時:2012/02/16 08:02

fitting(適合)の可否は、常に常識的なものです。

あるパラメータが幾つ以上であれば「可」という指標は一般的には存在しません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
それはそうです。ただ、自分の仕事分野において常識的な範囲というのは存在します。

お礼日時:2012/02/09 06:33

なんか、やたら標準化すればいいような話なってますが、違うと思います。



問題は何をしらべたいか? 

そのために、どういう仮定を置くかということで、正規分布なんて、理想的なものに、世の中がそうなってるわけがない。

大事なのは、何をいいたいか? どういう主張をするかです。それによっては、正規性を必要としない議論もあるわけです。

逆になんでも標準化は感心しません。これはデータ自身の情報を損ねます。

まず、なにを言いたいのか? なにを法則として主張するのか? それが大事です。
    • good
    • 0
この回答へのお礼

ありがとうございます。
使用者の意志が大きく介在するのですね。

お礼日時:2012/02/09 06:32

実験データを標準化し、それが標準正規分布に従っているか、どうかを見た方がいいんじゃないでしょうか?


「分散が大きくなるからです」とおっしゃっているということは標準化されていませんよね?
標準化するとは、実験データを平均μ=ゼロ、標準偏差σ=1の枠にあてはめることです。
それには各実験データを、(実験データ -μ)÷σという式に入れます。
これはExcelならSTANDARDIZE関数で計算できます。
それによって得られる値の分布が、標準正規分布(μ=ゼロ,σ=1)にどれくらい似ているか検証すればいいのだと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
標準化してません。そのまま比較するのと比べて何か違いがあるのでしょうか?

お礼日時:2012/02/07 22:39

外れ値が存在することによりうまく推定できないのであれば、ロバスト(頑健)な方法、例えば、平均値と分散ではなく中央値と四分位範囲/

1.34898を使ってみては如何でしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
自分の中で使うならいいのですが、結果は他人に見せるので違う方法はあまり使いにくいです。

お礼日時:2012/02/09 06:35

論理的にある正規分布になるべきだとされているものを証明するための実験であれば、あまり意味は見出せないね。

 逆に、偏差が小さくなる正規分布にfitする論理的理由を見つけ出すために行うのであれば、行っても良いのかもしれないね。 除外してしまいたいデータがあるんだろうけど、除外する正当な理由を見つけ出すことができないってことだとすると、無理にfitする必要はないかもしれないね。

何のための実験で、どのような結論を期待しているかによるということだね。
    • good
    • 0
この回答へのお礼

ありがとうございます。
正規分布の証明ではなく、正規分布であることが前提です。しかし描かせるとズレが大きい、分散が誤ってるのではないか?分散が大きい理由が、分散の計算方法が正規分布を前提にしてないためではないか?と思ったのです。

無理にfitする必要がないのはどうしてでしょうか。

お礼日時:2012/02/07 20:42

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qガウシアン関数へのフィッティングについて

現在、ガウシアン関数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
.....}

Aベストアンサー

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部でしたのでこちらで実験することはできませんでした。ちなみに私は通常、カレイダグラフというグラフソフトで任意関数のフィッティングをやっています。

Excelしか使えないのであれば、ソルバーを使って、以下の手順で「残差2乗和」を最小とするパラメータ a, b, c, d を探すと良いでしょう。ただし、パラメータの初期値があまりかけ離れていると変な値に収束するか解が見つかりません。a, b, c は元のデータのグラフから見当をつけられると思います( a はベースライン高さ、b はピーク高さ、 c はピーク位置x)。d は直感では見当をつけられないので、(ピークの半値全幅)/1.67 で計算してそれを初期値としてください。

【ソルバーを使った最小自乗法】
(1...続きを読む

QExcelでGaussian fittingをしたいのですが、どうすれば良いですか?

A1・・・A1001にx軸の値が
B1・・・B1001にy軸の値が入っているとします。
このデータをグラフ化したのちに、ガウシアン関数y=a+b*exp(-(x-c)^2/d^2)に対してフィッティングを行い、それぞれの定数を算出及び、その算出されたグラフを上に乗せるということをしたいのですが、
Excel VBAを使ってどのようにすれば良いのでしょうか?

また、ピークが1本ではなく2本ある場合Multipeak Gaussian fittingというものでそれぞれのピークに対してフィッティングすることもできるそうなのですが、できればその方法についても教えて頂けないでしょうか?

自分でひな形くらい作って質問したいところですが、全くどうやって作れば良いのか検討もつかないのでどなたかよろしくお願い致します。

Aベストアンサー

こんにちは、

http://nuclear.phys.tohoku.ac.jp/~ykoba/latex2html/gaussian-fitting/

これのことですか???

これのことなら、二次の最小二乗法を理解していれば
でるようですが、

これの事とは、違うのですか。
若干ガウシアンの式の形が違うようですが。


マルチは、ちょっと解りません。

Qエクセル STDEVとSTDEVPの違い

エクセルの統計関数で標準偏差を求める時、STDEVとSTDEVPがあります。両者の違いが良くわかりません。
宜しかったら、恐縮ですが、以下の具体例で、『噛み砕いて』教えて下さい。
(例)
セルA1~A13に1~13の数字を入力、平均値=7、STDEVでは3.89444、STDEVPでは3.741657となります。
また、平均値7と各数字の差を取り、それを2乗し、総和を取る(182)、これをデータの個数13で割る(14)、この平方根を取ると3.741657となります。
では、STDEVとSTDEVPの違いは何なのでしょうか?統計のことは疎く、お手数ですが、サルにもわかるようご教授頂きたく、お願い致します。

Aベストアンサー

データが母集団そのものからとったか、標本データかで違います。また母集団そのものだったとしても(例えばクラス全員というような)、その背景にさらならる母集団(例えば学年全体)を想定して比較するような時もありますので、その場合は標本となります。
で標本データの時はSTDEVを使って、母集団の時はSTDEVPをつかうことになります。
公式の違いは分母がn-1(STDEV)かn(STDEVP)かの違いしかありません。まぁ感覚的に理解するなら、分母がn-1になるということはそれだけ結果が大きくなるわけで、つまりそれだけのりしろを多くもって推測に当たるというようなことになります。
AとBの違いがあるかないかという推測をする時、通常は標本同士の検証になるわけですので、偏差を余裕をもってわざとちょっと大きめに見るということで、それだけ確証の度合いを上げるというわけです。

Q統計学的に信頼できるサンプル数って?

統計の「と」の字も理解していない者ですが、
よく「統計学的に信頼できるサンプル数」っていいますよね。

あれって「この統計を調べたいときはこれぐらいのサンプル数があれば信頼できる」という決まりがあるものなのでしょうか?
また、その標本数はどのように算定され、どのような評価基準をもって客観的に信頼できると判断できるのでしょうか?
たとえば、99人の専門家が信頼できると言い、1人がまだこの数では信頼できないと言った場合は信頼できるサンプル数と言えるのでしょうか?

わかりやすく教えていただけると幸いです。

Aベストアンサー

> この統計を調べたいときはこれぐらいのサンプル数があれば信頼できる・・・
 調べたいどの集団でも、ある一定数以上なら信頼できるというような決まりはありません。
 何かサンプルを集め、それをなんかの傾向があるかどうかという仮説を検証するために統計学的検定を行って、仮設が否定されるかされないかを調べる中で、どの検定方法を使うかで、最低限必要なサンプル数というのはあります。また、集めたサンプルを何か基準とすべき別のサンプルと比べる検定して、基準のサンプルと統計上差を出すに必要なサンプル数は、比べる検定手法により計算できるものもあります。
 最低限必要なサンプル数ということでは、例えば、ある集団から、ある条件で抽出したサンプルと、条件付けをしないで抽出したサンプル(比べるための基準となるサンプル)を比較するときに、そのサンプルの分布が正規分布(正規分布解説:身長を5cmきざみでグループ分けし、低いグループから順に並べたときに、日本人男子の身長なら170cm前後のグループの人数が最も多く、それよりも高い人のグループと低い人のグループの人数は、170cmのグループから離れるほど人数が減ってくるような集団の分布様式)でない分布形態で、しかし分布の形は双方とも同じような場合「Wilcoxon符号順位検定」という検定手法で検定することができますが、この検定手法は、サンプルデータに同じ値を含まずに最低6つのサンプル数が必要になります。それ以下では、いくらデータに差があるように見えても検定で差を検出できません。
 また、統計上差を出すのに必要なサンプル数の例では、A国とB国のそれぞれの成人男子の身長サンプルがともに正規分布、または正規分布と仮定した場合に「t検定」という検定手法で検定することができますが、このときにはその分布を差がないのにあると間違える確率と、差があるのにないと間違える確率の許容値を自分で決めた上で、そのサンプルの分布の値のばらつき具合から、計算して求めることができます。ただし、その計算は、現実に集めたそれぞれのサンプル間で生じた平均値の差や分布のばらつき具合(分散値)、どのくらいの程度で判定を間違える可能性がどこまで許されるかなどの条件から、サンプル間で差があると認められるために必要なサンプル数ですから、まったく同じデータを集めた場合でない限り、計算上算出された(差を出すために)必要なサンプル数だけサンプルデータを集めれば、差があると判定されます(すなわち、サンプルを無制限に集めることができれば、だいたい差が出るという判定となる)。よって、集めるサンプルの種類により、計算上出された(差を出すために)必要なサンプル数が現実的に妥当なものか、そうでないのかを、最終的には人間が判断することになります。

 具体的に例示してみましょう。
 ある集団からランダムに集めたデータが15,12,18,12,22,13,21,12,17,15,19、もう一方のデータが22,21,25,24,24,18,18,26,21,27,25としましょう。一見すると後者のほうが値が大きく、前者と差があるように見えます。そこで、差を検定するために、t検定を行います。結果として計算上差があり、前者と後者は計算上差がないのにあると間違えて判断する可能性の許容値(有意確率)何%の確率で差があるといえます。常識的に考えても、これだけのサンプル数で差があると計算されたのだから、差があると判断しても差し支えないだろうと判断できます。
 ちなみにこの場合の差が出るための必要サンプル数は、有意確率5%、検出力0.8とした場合に5.7299、つまりそれぞれの集団で6つ以上サンプルを集めれば、差を出せるのです。一方、サンプルが、15,12,18,12,21,20,21,25,24,19の集団と、22,21125,24,24,15,12,18,12,22の集団ではどうでしょう。有意確率5%で差があるとはいえない結果になります。この場合に、このサンプルの分布様式で拾い出して差を出すために必要なサンプル数は551.33となり、552個もサンプルを抽出しないと差が出ないことになります。この計算上の必要サンプル数がこのくらい調査しないといけないものならば、必要サンプル数以上のサンプルを集めて調べなければなりませんし、これだけの数を集める必要がない、もしくは集めることが困難な場合は差があるとはいえないという判断をすることになるかと思います。

 一方、支持率調査や視聴率調査などの場合、比べるべき基準の対象がありません。その場合は、サンプル数が少ないレベルで予備調査を行い、さらにもう少しサンプル数を増やして予備調査を行いを何回か繰り返し、それぞれの調査でサンプルの分布形やその他検討するべき指数を計算し、これ以上集計をとってもデータのばらつきや変化が許容範囲(小数点何桁レベルの誤差)に納まるようなサンプル数を算出していると考えます。テレビ視聴率調査は関東では300件のサンプル数程度と聞いていますが、調査会社ではサンプルのとり方がなるべく関東在住の家庭構成と年齢層、性別などの割合が同じになるように、また、サンプルをとる地域の人口分布が同じ割合になるようにサンプル抽出条件を整えた上で、ランダムに抽出しているため、数千万人いる関東の本当の視聴率を割合反映して出しているそうです。これはすでに必要サンプル数の割り出し方がノウハウとして知られていますが、未知の調査項目では必要サンプル数を導き出すためには試行錯誤で適切と判断できる数をひたすら調査するしかないかと思います。

> どのような評価基準をもって客観的に信頼できると判断・・・
 例えば、工場で作られるネジの直径などは、まったくばらつきなくぴったり想定した直径のネジを作ることはきわめて困難です。多少の大きさのばらつきが生じてしまいます。1mm違っても規格外品となります。工場では企画外品をなるべく出さないように、統計を取って、ネジの直径のばらつき具合を調べ、製造工程をチェックして、不良品の出る確率を下げようとします。しかし、製品をすべて調べるわけにはいきません。そこで、調べるのに最低限必要なサンプル数を調査と計算を重ねてチェックしていきます。
 一方、農場で生産されたネギの直径は、1mmくらいの差ならほぼ同じロットとして扱われます。また、農産物は年や品種の違いにより生育に差が出やすく、そもそも規格はネジに比べて相当ばらつき具合の許容範囲が広くなっています。ネジに対してネギのような検査を行っていたのでは信頼性が損なわれます。
 そもそも、統計学的検定は客観的判断基準の一指針ではあっても絶対的な評価になりません。あくまでも最終的に判断するのは人間であって、それも、サンプルの質や検証する精度によって、必要サンプルは変わるのです。

 あと、お礼の欄にあった専門家:統計学者とありましたが、統計学者が指摘できるのはあくまでもそのサンプルに対して適切な検定を使って正しい計算を行ったかだけで、たとえ適切な検定手法で導き出された結果であっても、それが妥当か否か判断することは難しいと思います。そのサンプルが、何を示し、何を解き明かし、何に利用されるかで信頼度は変化するからです。
 ただ、経験則上指標的なものはあります。正規分布を示すサンプルなら、20~30のサンプル数があれば検定上差し支えない(それ以下でも問題ない場合もある)とか、正規分布でないサンプルは最低6~8のサンプル数が必要とか、厳密さを要求される調査であれば50くらいのサンプル数が必要であろうとかです。でも、あくまでも指標です。

> この統計を調べたいときはこれぐらいのサンプル数があれば信頼できる・・・
 調べたいどの集団でも、ある一定数以上なら信頼できるというような決まりはありません。
 何かサンプルを集め、それをなんかの傾向があるかどうかという仮説を検証するために統計学的検定を行って、仮設が否定されるかされないかを調べる中で、どの検定方法を使うかで、最低限必要なサンプル数というのはあります。また、集めたサンプルを何か基準とすべき別のサンプルと比べる検定して、基準のサンプルと統計上差を出すに必要な...続きを読む

Q2つの正規分布を合成したらどうなるのでしょうか?

現在大学の研究の過程で統計学を学ぶ必要がでてきました。僕自身は統計学に詳しくはないので知識のある方の回答は非常に助かります。
どうかご教授よろしくおねがいします。


平均μ、分散σで表される正規分布はf(x)=1/((√2π)σ) exp-{((x-μ)^2)/2σ^2}で表されますが



例えば互いに独立で

国語の平均点、分散を(μ1,σ1)としての正規分布f(国語)
数学の平均点、分散を(μ2,σ2)としての正規分布f(数学)

とした時の国語と数学の合計得点の分布f(国語+数学)はどのように表せばよいのでしょうか?

もしμ3=μ1+μ2,σ3=σ1+σ2のように平均も分散も和で考えてよいのなら

f(国語+数学)=1/((√2π)σ3) exp-{((x-μ3)^2)/2σ3^2}

が答えだと思っているのですが、それとは別のやり方で



f(国語)=1/((√2π)σ1) exp-{((x-μ1)^2)/2σ1^2}と
f(数学)=1/((√2π)σ2) exp-{((x-μ2)^2)/2σ2^2}をたたみこみ積分すれば答えがでるのではないかと考えています。

しかし、僕の数学の知識ではこれができなくて困っています。ガウス積分の公式を使ったりしなければいけないのではないかとも考えいるのですが行き詰っています。

アドバイスよろしくお願いいたします。

現在大学の研究の過程で統計学を学ぶ必要がでてきました。僕自身は統計学に詳しくはないので知識のある方の回答は非常に助かります。
どうかご教授よろしくおねがいします。


平均μ、分散σで表される正規分布はf(x)=1/((√2π)σ) exp-{((x-μ)^2)/2σ^2}で表されますが



例えば互いに独立で

国語の平均点、分散を(μ1,σ1)としての正規分布f(国語)
数学の平均点、分散を(μ2,σ2)としての正規分布f(数学)

とした時の国語と数学の合計得点の分布f(国語+数学)はどのように表せばよいのでしょうか?

...続きを読む

Aベストアンサー

> 平均μ、分散σで表される正規分布はf(x)=1/((√2π)σ) exp-{((x-μ)^2)/2σ^2}で表されますが
一般的には分散をσ^2と表し、標準偏差はその平方根でσと表します。
質問者さんが示された確率密度関数は、平均 μ、分散 「σ^2 」の正規分布のものです。分散と標準偏差の扱いをもう少しきちんとしましょう。

> μ3=μ1+μ2, σ3=σ1+σ2のように平均も分散も和で考えてよいのなら
2つの確率変数 X, Y があり、それぞれの平均と「分散」がμ1, (σ1)^2, μ2, (σ2)^2 であるとします。確率変数 Z を Z = X + Y で定め、Z の平均と「分散」をμ3, (σ3)^2 とすると・・・

μ3 = μ1 + μ2
は、X, Y がどのような分布であっても(X, Y が異なる分布であっても)成立しますし、X, Y が互いに独立であるか否かに関わらず成立します。
また、X, Y が互いに独立であれば(それらの分布によらず)、
(σ3)^2 = (σ1)^2 + (σ2)^2
が成立します。(このとき Z = X + Y の「標準偏差」σ3 は、σ3 = √( (σ1)^2 + (σ2)^2 ) )

> f(国語+数学)=1/((√2π)σ3) exp-{((x-μ3)^2)/2σ3^2}
> が答えだと思っているのですが
X, Y が互いに独立な確率変数であり、共に正規分布に従うならば、X + Y もまた正規分布に従うという事実は確かにありますが、これは正規分布の「再生性」と呼ばれる特別な性質であることを理解していなければなりません。その点、大丈夫ですか?

> それとは別のやり方で
> f(国語)=1/((√2π)σ1) exp-{((x-μ1)^2)/2σ1^2}と
> f(数学)=1/((√2π)σ2) exp-{((x-μ2)^2)/2σ2^2}をたたみこみ積分すれば答えがでるのではないかと考えています。
上述したように、正規分布の再生性を示す必要があるならば、畳み込み積分でそれを示すのが一法なのであって、何も「別のやり方」ではありません。
案ずるより計算するが易しです。式の整理が面倒なだけで、特別な知識は不要です。
f(x) = 1/((√2π)σ1) exp-{((x-μ1)^2)/2σ1^2}
g(x) = 1/((√2π)σ2) exp-{((x-μ2)^2)/2σ2^2}
h(x) = ∫f(t) g(x - t) dt
  = 1/(2πσ1 σ2) ∫exp{ - (t - μ1)^2 / (2σ1^2) - (x - t - μ2)^2 / (2σ2^2) } dt
  epx( ) の指数部を t で平方完成して
  = 1/(2πσ1 σ2) ∫exp{ - (t - 何ちゃら )^2 / (2σ1^2 σ2^2 / (σ1^2 + σ2^2)) - (x - μ1 - μ2)^2 / 2 (σ1^2 + σ^2) } dt
  = 1/(2πσ1 σ2) exp{ - (x - μ1 - μ2)^2 / 2 (σ1^2 + σ^2) } ∫exp{ - (t - 何ちゃら )^2 / (2σ1^2 σ2^2 / (σ1^2 + σ2^2))} dt
  = 1/√(2π(σ1^2 + σ2^2)) exp{ - (x - μ1 - μ2)^2 / 2 (σ1^2 + σ^2) }
  (∵ ∫ exp ( - (t - A)^2 / 2B^2 ) dt = √(2π) B )
μ3 = μ1 + μ2, σ3^2 = σ1^2 + σ2^2 とおけば
h(x) = 1/(√(2π) σ3) exp( - (x - μ3)^2 / 2 σ3^2 )
途中、「何ちゃら」の部分は省略してますので、興味があれば追っかけてみてください。

なお、本件は確率論において、ごくごく基本的な事項です。
もし、これから確率統計を使って研究をされるのならば、このような件を簡単に質問して済ませるのは危うい感じがします。ちゃんと書籍を読まれ、その上で質問されるのが宜しいでしょう。

> 平均μ、分散σで表される正規分布はf(x)=1/((√2π)σ) exp-{((x-μ)^2)/2σ^2}で表されますが
一般的には分散をσ^2と表し、標準偏差はその平方根でσと表します。
質問者さんが示された確率密度関数は、平均 μ、分散 「σ^2 」の正規分布のものです。分散と標準偏差の扱いをもう少しきちんとしましょう。

> μ3=μ1+μ2, σ3=σ1+σ2のように平均も分散も和で考えてよいのなら
2つの確率変数 X, Y があり、それぞれの平均と「分散」がμ1, (σ1)^2, μ2, (σ2)^2 であるとします。確率変数 Z を Z = X + Y で定め、Z ...続きを読む

Qガウシアンフィッティングのアルゴリズム

c言語等を用いて実験データの解析を行おうと思っています。

データの形式は(x・・・時間軸、y・・・値)の列になっていて、
これをグラフにすると、パルス状の波形が連続する形になっています。

求めたい情報は、各パルス波形の山に対応する時刻の羅列
なのですが、現在ではガウス曲線近似機能のついたグラフソフトで、
一個一個手作業で求めています。

これを、解析プログラムを作って自動化しようと思っているのですが、
ガウス曲線(鋭い立ち上がりの)に近い部分を自動的に検出する方法、
また、フィッティングを数値計算的に行う方法がわかりません。

このようなアルゴリズムを考える上で参考になるようなHPや文献を
ご存知の方がいらっしゃれば、教えていただきたいと思っています。

Aベストアンサー

パルスを探すアルゴリズムの具体的な文献はしりませんが、
たとえば、xが小さい方から順にyの値を見ていき最大値を探し
yが一定値以下になったら次の最大値を探し始めるようなのでは
どうでしょうか。

言葉で説明すると難しいのでコードで示すと以下のようになると
思います。(適当に書いたのでバグがあるかも。)

int i;
int flag_peak=0; /* 0: 谷 1: 山 */
float y_max=0;
float x_peak=0;
float x[1000], y[1000]; /* data */
/* ここで x と y の配列にデータをセットする。 */
for(i=0; i<1000; i++){
 if( y[i]<50 ){
  if( flag_peak ==1 ) printf("peak %d %d\n", x[i], y[i]);
  flag_peak=0;
  y_max=0;
 }
 if( y[i]<80 ) continue;
 if( y_max<y[i] ) {
  y_max = y[i];
  x_peak = x[i];
 }
 flag_peak=1;
}

ここで、パルスは上向きで最大値が常に80以上になる、
パルス間の谷は常に50以下になることを仮定しています。
この50と80の差はyのふらつきを考慮したものです。
また、データは xについてソートされているものとしています。

このパルスの位置は最大値の場所と定義していますが、
フィッティングする場合は、この値を フィッティングの初期値として
使うことになると思います。

フィッティングは、最小二乗法や 最尤推定法 (maximum likelihood method)
などがあります。ふつうは最小二乗法かな? データ処理や統計処理の教科書に
載っていると思います。たぶん。

長くなってすみません。

パルスを探すアルゴリズムの具体的な文献はしりませんが、
たとえば、xが小さい方から順にyの値を見ていき最大値を探し
yが一定値以下になったら次の最大値を探し始めるようなのでは
どうでしょうか。

言葉で説明すると難しいのでコードで示すと以下のようになると
思います。(適当に書いたのでバグがあるかも。)

int i;
int flag_peak=0; /* 0: 谷 1: 山 */
float y_max=0;
float x_peak=0;
float x[1000], y[1000]; /* data */
/* ここで x と y の配列にデータをセットする。 */
for(i=...続きを読む

Qパラメータが9個ある関数(ガウス分布)の最小二乗法による近似

ある画像から輝度ヒストグラムを取ったところ3つのガウス分布が重なっているような形状になりました。
これをサンプルデータとし、それを3つのガウス分布の和で近似しようと考えています。
求めたいパラメータはガウス分布A・B・Cの高さh1・h2・h3、平均値μ1・μ2・μ3、分散σ1・σ2・σ3です。
最小二乗法により解こうと考えましたが9元連立方程式となり、指数関数の内外にパラメータが入っており、1つの方程式自体長くなっていることにより解くことが困難です。
パラメータを求める上での条件は3つです。
・サンプルデータを1つのガウス分布で近似しその差を取り、さらにその差をガウス分布で近似し差を取り、再びガウス分布で近似するといった方法を取らない
・h1・h2・h3は必ず正の値をとる
・パラメータはあらかじめおおよその値を予想できない
これらの条件の下で解くことは可能でしょうか。
もし可能ならその解き方を教えてください。
この時、いくつかの解法の仕方がある場合はできるだけ簡単かつ計算量の少ないものを教えてください。
よろしくお願いします。

ある画像から輝度ヒストグラムを取ったところ3つのガウス分布が重なっているような形状になりました。
これをサンプルデータとし、それを3つのガウス分布の和で近似しようと考えています。
求めたいパラメータはガウス分布A・B・Cの高さh1・h2・h3、平均値μ1・μ2・μ3、分散σ1・σ2・σ3です。
最小二乗法により解こうと考えましたが9元連立方程式となり、指数関数の内外にパラメータが入っており、1つの方程式自体長くなっていることにより解くことが困難です。
パラメータを求める上での条件は3つです。
・サ...続きを読む

Aベストアンサー

この問題は、典型的な非線形最適化問題となります。
解析的に解くことはできません。
3つのガウス分布の和の形で与えた式g(x)と実測値f(x)の間の
平均2乗誤差を評価関数とするとよいでしょう。
ただし、パラメータを変換しておきましょう。
(1)h1,h2,h3≧0のためには、代わりにs1,s2,s3を使い
   h1 = (s1)^2, h2=(s2)^2, h3=(s3)^2
(2)σ1、・・・の方は、2乗するので、そのままにしましょう。
これで、拘束条件なしの最適化問題になりました。
評価関数は、
J(s1,s2,s3,μ1,μ2,μ3,σ1,σ2,σ3)
 =∫|f(x)-g(x|s1,・・・,σ3)|^2 dx
 ≒Σ_i{|f(x_i)-g(x_i|s1,・・・,σ3)|^2}Δx
x_iはヒストグラムのサンプル点です。
Jの導関数を使う方法と使わない方法があります。
使わない方法では、Hooke&Jeeves法があります。
(Hooke Jeevesで検索すると、Cのプログラムが見つかる
かも)
これは、パラメータを1つずつ±に少し変化させ、減少する
方向へ移動していくことを原理とする方法です。パターン
サーチ法のひとつです。
導関数を使う場合は、パラメータベクトルをwとすると、
 w(n+1)=w(n)-∇_w J(w(n))
いずれにしても、初期値は適当に決める必要があります。
まったく分からない場合は、ランダムに決めざるを得ません。

繰り返し近似法ですから、計算量の評価は難しい。
なお、パラメータ群を推定することが目的ですか
または、関数近似が目的ですか。
パラメータ群の推定が目的ならば、パラメータの唯一性
(Identifiability)の証明が必要と思います。

あなたの条件には合いませんが、ご参考までに

この問題は、典型的な非線形最適化問題となります。
解析的に解くことはできません。
3つのガウス分布の和の形で与えた式g(x)と実測値f(x)の間の
平均2乗誤差を評価関数とするとよいでしょう。
ただし、パラメータを変換しておきましょう。
(1)h1,h2,h3≧0のためには、代わりにs1,s2,s3を使い
   h1 = (s1)^2, h2=(s2)^2, h3=(s3)^2
(2)σ1、・・・の方は、2乗するので、そのままにしましょう。
これで、拘束条件なしの最適化問題になりました。
評価関数は、
J(s1,s2,s3,μ1,μ2,μ3,σ1,σ2,σ3)...続きを読む

Qデータが正規分布しているか判断するには???

初歩的なことですが。。急いでいます。
おわかりになる方 教えてください。
サンプリングしたデータが正規分布しているかどうかを確認するにはどうすればよろしいでしょうか。
素人でも分かるように説明したいのですが。。
定性的にはヒストグラムを作り視覚的に訴える方法があると思います。今回は定量的に判断する方法を知りたいです。宜しくお願いします。

Aベストアンサー

>機械的に処理してみるとできました。
>でも理屈を理解できていません。
 とりあえず、理屈は後で勉強するとして、有意水準5%で有意差あり(有意確率が0.05以下)であれば、正規分布ではないと結論づけてお終いでいいのではないですか。
>この検定をもっと初心者でもわかりやすく解説しているサイト等ご存じありませんか。
 私が知っている限りでは、紹介したURLのサイトが最も丁寧でわかりやすいサイトでした。
>データの区間を分けるときのルール等ありますでしょうか。
 ヒストグラムを作成する場合、区間距離、度数区分数は、正規的なグラフになるように試行錯誤で行うことが多い(区間距離や度数区分数を本来の分布に則するようにいろいろ当てはめて解釈する。データ個数の不足や、データの取り方、または見かけ上の分布によりデータのばらつきが正しく反映されて見えないことがあるため)のですが、度数区分数は、機械的に、
=ROUNDUP(1+LOG10(データ個数)/LOG10(2),0):エクセル計算式
で区分数を求める方法があります。
 また、区間距離は、=ROUND((データの最高値-最低値)/(度数区分数値-1),有効桁数)で求め、区分の左端は、
=ROUNDUP(データの最低値-区間距離/2,有効桁数)
右端は=ROUNDUP(データの最高値+区間距離/2,有効桁数)
とします。
 区間がと度数区分数が出たら、その範囲にあるデータ数を数えて、ヒストグラムができます。
 
>最小側、最大側は 最小値、最大値を含んだ値としなければならないのでしょうか。
 ヒストグラム作成の処理に関しては、上記を参考にしてください。
 その前に、データの最小値と最大値が、正しくとれたデータか検討するため、棄却検定で外れ値が存在するか否かを検定し、外れ値が存在しないと結論づけられたら、正規分布の検定を行ってみてください。もし外れ値が存在する可能性があれば、そもそも、そのデータの信頼性が失われます。サンプリング手法の再検討(データの取り方に偏りがなかったか、無作為に設定してデータを取っていたか等)をして、再度データを得る必要があります。また、そもそも検定する以前に、データ数が少ないと判断が付かなくなってしまいますので、データ数は十分揃える(少なくとも20~30個)必要もあります。

>機械的に処理してみるとできました。
>でも理屈を理解できていません。
 とりあえず、理屈は後で勉強するとして、有意水準5%で有意差あり(有意確率が0.05以下)であれば、正規分布ではないと結論づけてお終いでいいのではないですか。
>この検定をもっと初心者でもわかりやすく解説しているサイト等ご存じありませんか。
 私が知っている限りでは、紹介したURLのサイトが最も丁寧でわかりやすいサイトでした。
>データの区間を分けるときのルール等ありますでしょうか。
 ヒストグラムを作成する場合、区...続きを読む

Qガウス関数と正規分布と関係について教えて下さい。

Wikiによれば正規分布はガウス関数の部分集合だそうですけど、
ではこれらはどうやって使い分ければ良いのでしょうか?
例えば論文を見ていると結構ガウシアンフィッティングというのを行っていますが、これっておかしくないでしょうか?
実験データの統計をとるためにはガウシアンフィッティングではなく
正規分布フィッティング(?)みたいなものを使う必要があると思うのですが・・・

Aベストアンサー

ガウス関数とガウス分布(密度関数)と正規分布(密度関数)を混同しないようにして下さい。
ガウス分布(密度関数)と正規分布(密度関数)は同じものです。
ガウス関数は分布関数そのものではなく、もっと広い意味の関数です。
言い換えれば、ガウス関数の中の定数に、
分布関数の制約を付加したのがガウス分布(密度関数)と言えます。
ガウス分布は(密度)パラメータとして標準偏差や平均値を使って表現しますが、
f(x)=exp(-x^2)とおくと
ガウス関数はa,b,mをパラメータとする
a*f(b(x-m))
の形の関数をいいます。
定数にガウス分布関数のパラメータと1:1の対応が付けられますので、
>ガウシアンフィッティング
>正規分布フィッティング
のどちらでも本質的な違いではありません。
なので、簡単な係数のガウス関数
a*exp{-b*(x-m)^2} (a>0,b>0)
でフィッテングを行い、
それをa=k/{σ√(2π)},m=μ,b=1/{2σ~2}となるようにk,μ,σに換算してやれば
ガウス分布(正規分布)密度関数
1/{σ√(2π)}*exp{-(-1/2)(x-μ)^2/σ^2}
になります。

詳細は、ガウス関数とガウス分布・正規分布の参考URLで確認ください。

ガウス関数
http://ja.wikipedia.org/wiki/%E3%82%AC%E3%82%A6%E3%82%B9%E9%96%A2%E6%95%B0

ガウス分布(正規分布)密度関数
http://www.tokyo-kasei.ac.jp/~matsuki/jyugyo/johokatuyou/jokatu-2.pdf
http://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E5%88%86%E5%B8%83

ガウス関数とガウス分布(密度関数)と正規分布(密度関数)を混同しないようにして下さい。
ガウス分布(密度関数)と正規分布(密度関数)は同じものです。
ガウス関数は分布関数そのものではなく、もっと広い意味の関数です。
言い換えれば、ガウス関数の中の定数に、
分布関数の制約を付加したのがガウス分布(密度関数)と言えます。
ガウス分布は(密度)パラメータとして標準偏差や平均値を使って表現しますが、
f(x)=exp(-x^2)とおくと
ガウス関数はa,b,mをパラメータとする
a*f(b(x-m))
の形の...続きを読む

Qガウスフィッティングについて

時間 t に対するデータ列 yi (i=1, 2, …) に
最小二乗法を用いて
ガウス関数 y(t) = a + b exp( -(t-c)^2 / 2σ^2 ) を
当てはめたいのです。
これまでは、エクセルなどのソフトを用いて
未知数 a, b, c, σを求めていたのですが、
これをソフトなどを用いずに理論式で解くにはどうすれば良いでしょうか?

ひとつのやり方として、
ガウス関数の右辺の a を左辺に移行して、両辺の対数を取り
対数データ列 ln(yi - a) との誤差を求めて最小二乗法…
という手を考えたのですが、
これだと、誤差の総和を求める際、Σの中にパラメータの a が
ln(yi - a) という形で残ってしまい、
誤差の偏微分で得られるパラメータに関する方程式が、
非線形な連立方程式となって解くことができません。
(説明が分かり難くて申し訳ありません)

その他にもいろいろ考えたのですが、
どうにもうまくいきません。
とにかく、パラメータの a が邪魔で、
これを b, c, σを用いずに先に求める、
という方向で考えているのですが、
何か良い方法がありましたら、よろしくお願いします。

時間 t に対するデータ列 yi (i=1, 2, …) に
最小二乗法を用いて
ガウス関数 y(t) = a + b exp( -(t-c)^2 / 2σ^2 ) を
当てはめたいのです。
これまでは、エクセルなどのソフトを用いて
未知数 a, b, c, σを求めていたのですが、
これをソフトなどを用いずに理論式で解くにはどうすれば良いでしょうか?

ひとつのやり方として、
ガウス関数の右辺の a を左辺に移行して、両辺の対数を取り
対数データ列 ln(yi - a) との誤差を求めて最小二乗法…
という手を考えたのですが、
これだと、誤差の総和を求める際、Σの...続きを読む

Aベストアンサー

 最小化したいのは
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を決める、などなど。

 最小化したいのは
E=Σ(yi-y(t))^2
ですね。パラメータをベクトルで
p=(a,b,c,σ)
と書くことにします。

 どうやっても非線形で、反復計算が必要です。「理論式」という観点で言い換えるなら、「最小二乗解pに収束する漸化式」を作るところまでしか出来ない、ってことです。
 その漸化式は、たとえば「第n回目の反復で得られたパラメータの推定値p[n]を使って、(∂E/∂p)(p[n])を係数とするpの一次式でEを近似し、これを使ってp[n]よりも最小二乗解に近いp[n+1]を計算する」というものですから、「適切な初項を与...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング