• 締切済み

EMアルゴリズムを用いて不完全データ(パラメータ数が未知)問題を解ける

EMアルゴリズムを用いて不完全データ(パラメータ数が未知)問題を解けるか知りたいのですが。 今、何カ国かの男性の身長データのサンプルがN個混在してあります。ただし、N個のデータはすべて、どの国の男性の身長データなのか分かっていません(不完全データ)。このとき、EMアルゴリズムを用いて、「何カ国のデータが混在しているのか※1」と、「各国の身長の平均値と分散※2」を同時に求めたいのですが、国の数を1,2,3,4,・・・と増加させていったときに、果たして最大尤度が極大値を持つのかどうかが私にはわかりません。どなたかご存知の方がいらっしゃいましたらご教示お願いします。 一般に、パラメータ数(この場合、国の数)が増加すると、最大尤度も増加するといわれておりますが、この問題では、最適なパラメータ数(国の数)が存在するような気がしているのですが、いかがでしょうか。。。 ※1 国の数をmとし、今回はN>>mとします。 ※2 すべての国の男性の身長は正規分布に従うと仮定し、どの国の平均値も同じ値になることはないとします。

みんなの回答

  • ur2c
  • ベストアンサー率63% (264/416)
回答No.1

> 国の数が増加すると、最大尤度も増加する のですから、 > 最適な国の数が存在する わけで、 最適 := 尤度最大 とするのなら m = N が最適。それがいやで、かつ max m << N なら 最適 := 情報量基準最小 とすれば話の辻褄だけは合って、max m より小さい m が得られる可能性があります。 > 身長は正規分布に従う 分散をどう扱うかによって、答えがだいぶ違いそう。たとえば、全ての国に共通とするのか、各国で異なるとするのか。 EM を使うということは、どこにも効いてません。強いて言えば、局所最適につかまって誤った答えを出す可能性が高いことくらいでしょう。

adamosfamily
質問者

お礼

御礼遅くなりました。ご解答いただきどうもありがとうございます。 私自身EMアルゴリズムについてよくわかっていなかったので、 きちんと勉強して不明点を整理したいと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • データの系列の平均の求め方のアルゴリズム

    100個の数値が並んでいてその平均を求めるという場合、全部足して100で割る、ということしか考えられなかったのですが、そうではないアルゴリズムがあるようです。プログラム的な説明だと以下のようです。 ave=0.0 平均が分かっていると仮定する。 do i=1,100 xx=x(i)-ave あるデータx(i)と、分かっている思っている平均aveとの差をとる。 ave=ave+xx/i その差をそこまでのデータ個数iで割る。新しいデータによる平均の変化量とみてそれを前の平均に加える。 enddo それを十分大きな回数繰り返す。そうすると平均に近づく。 このような考え方はある学問分野では常識なのかもしれませんが、近似ということになると思います。データの数が十分大きくて最初の平均が実際と異なるエラーが相対的に減ってくるとかです。このアルゴリズムにはどのような制約が付くものでしょうか。例えば乱数を発生させてその平均を求めるときに全部発生させてから和を取って個数で割るのではなく、1つ1つ乱数を発生させて発生し終わった時点で平均が計算できてしまっている、ということになります。分散も同じようなアルゴリズムになると思います。実験や理論的な検討を加えることはできると思いますが、あまりにも簡単なので常識であり、かつ性質も調べられているのではないかと思ってお尋ねしました。いかがでしょうか。

  • AIC(赤池情報量規準)の導出過程

    現在AIC(赤池情報量規準)について勉強しています。 対数尤度/平均対数尤度/期待平均対数尤度 といった似た言葉が多く混乱しています。 以下の記述は私の理解を整理したものですが、おかしな点はあるでしょうか? ----------------------------------------------- 以下のように記号を定義する θ:未知のパラメータ θ*:真のパラメータ θ★:パラメータの最尤推定量 K:モデルの自由パラメータ数 対数尤度:l(θ) 平均対数尤度のn倍:l*(θ) 期待平均対数尤度:l'*(K) 統計モデルの良さを評価したいとき ●(K-L情報量)が小さい(0に近い)モデルほど良いモデル ↓ ●(K-L情報量)は (定数)-(平均対数尤度) で表されるので (平均対数尤度)が大きいほど良いモデル ↓ ●(平均対数尤度のn倍)が大きいほど良いモデル (∵nは標本数であり一定だから) ↓ ●(平均対数尤度のn倍)の不偏推定量である(対数尤度)が最大になるような未知のパラメーターθ★を求める。これが最尤推定値。 ↓ ●(平均対数尤度のn倍)に最尤推定値θ★を代入した、 l*(θ★)が大きいほど良いモデル ↓ ●l*(θ★)は、得られた標本 x_i (i=1,2,…,n) に依存する値 (∵最尤推定値θ★はx_iによって表される) なので、 l*(θ★)の x_i (i=1,2,…,n) についての期待値をとると これが(期待平均対数尤度) l*'(K) となり、この値が大きいほど良いモデル ↓ ●とはいえ、真のモデルが未知であるため、(期待平均対数尤度)は 実際には求められない ↓ ●(期待平均対数尤度)の不偏推定量である l(θ★)-K が大きいほど 良いモデル ↓ ●歴史的経緯により、l(θ★)-K を-2倍した値が、AIC(赤池情報量規準) であり、AICが小さいほど良いモデル 以上 ----------------------------------------------- ここまでで、どこかおかしなところはあるでしょうか? よろしくお願いします。

  • 正整数Nの最大の素因数を求めるアルゴリズム

    正整数Nの最大の素因数を求めるアルゴリズムがわかりません。 ネットで検索して一応出てきたのですが、どうしても理解できません。 int i,no=N; //Nは正整数 for(i=2;i*i<=no;i++){ while(no%i==0) no/=i; } iまたはnoのどちらかに求めたい素因数が入っています。 なぜこれで求めることができるのでしょうか? noやiが非素数ということもあり得るのでは? ずっと考えましたがわかりません。 誰か教えてください。

  • 3次元混合正規分布のパラメータ推定

    3次元混合正規分布のパラメータ推定 標本(X,Y,Z,値)が大量にあり、これを3次元の混合正規分布で近似しようとしています。 現在、平均や分散などのパラメータの算出をEMアルゴリズムを用いて行おうと考えています。 いろいろ調べて勉強してみましたが、標本をどのように使えばいいか理解することができません。 この標本はどのような形で式につかえばよいでしょうか? そもそもEMアルゴリズムを用いてこの問題を解くことができるのでしょうか? また、この標本をもとにパラメータを決定する代替方法があれば、教えていただけると助かります。 説明不足な点があるかもしれませんが、よろしくお願いします。

  • エクセルの表の列の最下行から指定数のデータで

    データが縦方向に入っている表があります。 新しいデータは最下行に追加していきます。 それぞれの列の最下行から1つ上のセルから任意の数で平均や最大、最小値を求めたいのです。 (つまり統計値に最新値を含まない値で最新値を評価したい) 但し、下記の条件が付きます。 1.データは17行目から始まって、それより上の行は列によってデータ数が違っています。 2.出来ればデータ数が指定(例えば30個)に名足りない場合は最新値を含むデータにしたい。 最初はデータ数が少ないのでそれも含めて統計処理したい。 (この条件でハードルが上がるようなら無視でもOK) 3.データ列には空白セルや「ー」が入っている場合が混在しているので扱うのは数値のみ。 昔ここで教えてもらいながら、試行錯誤してかなり長い式を作って使っていたのですが、最新データを含むと非常にまずいケースがあることに気付き、色々試行しているうちに全く混乱してしまったのでHELPしました。

  • アルゴリズムに関する問題

    こんばんわ、いくつかの問題につまってしまったので解答と簡単な解説をお願いします; 【問1】 4桁の数字( a1a2a3a4 )をハッシュ法を用いて配列に格納したい。 ハッシュ関数をmod( a1 +a2 +a3 +a4 ,5 )とし、求めたハッシュ関数値に対応する位置の配列要素に格納する場合、9576は(ア)~(オ)のどこに入るか。 ここでmod(x,5)の値は、xを5で割った余りとする。 位置  配列 0  (ア) 1  (イ) 2  (ウ) 3  (エ) 4  (オ) 【問2】 相違なるn個のデータが昇順に整列された表がある。この表を1ブロックm個に分割し、各ブロックの最後尾のデータだけ線形検索することによって、目的のデータを探し出す。 次に当該ブロック内を線形検索して目的のデータを探し出す。 このときの平均探索(比較)回数は(ア)~(エ)のうちどれか。 ここでm<nとし、目的のデータは必ず表の中に存在するものとする。 (ア)  (イ)  (ウ)  (エ)  n    n          n    m n  ─    ─    m + ─   ─+─  m    2m         m    2 2m 【問3】 次の手順はシェルソートによる整列を示している。 データ列”7,2,8,3,1,9,4,5,6”を手順(1)~(4)に従って整列すると手順(3)を何回繰り返して完了するか。 ここで、〔〕は小数点以下を切り捨てる。 <手順> (1)〔データ数÷3〕→Hとする。 (2)データ列を互いにH要素分だけ離れた要素の集まりからなる部分列とし、それぞれの部分列を挿入方を用いて整列する。 (3)〔H÷3〕→Hとする (4)Hが0であればデータ列の整列は完了し、0でなければ(2)に戻る。 以上になります。

  • C言語(データ数の読み取り)

     input.txtというファイルの内容が 2 5 3 だとして、この3つの数字の最大値を求める以下のプログラムをコンパイルして実行すると、ファイルを読み込む前にデータ数「3」を入力しなければなりません。  データ数を入力することなくファイルからデータ数を読み取る方法を教えてください。大変お手数ですが、よろしくお願いします。 #include <stdio.h> main() { int i,max,max_no,N,a[1000]; FILE *fpi; printf("データ数を入力してください: "); scanf("%d",&N); if((fpi=fopen("input.txt","r"))==NULL) { fprintf(stderr,"ファイルを開けません\n"); exit(1); } for(i=0;i<N;i++) { fscanf(fpi,"%d",&a[i]); } max_no=0; max=a[max_no]; for(i=1;i<N;i++) { if(a[i]>max) { max=a[i]; max_no=i; } } printf("最大値は %d 番目のデータ %d です。\n",max_no+1,max); }

  • 最尤法について

    現在、独学で最尤法について勉強しています。その中で、少し疑問に思った事があり質問させていただきました。 最尤法について調べると、 ・最尤法は、尤度と呼ばれる量を最大化する事で、確率分布のパラメータを推測する方法。 ・尤度関数が最大となるパラメータ値を求める。 などの記述があり、母集団が正規分布に従うとき標本の値から正規分布のパラメータを推測する例題などがありました。 概念としては理解できているつもりなのですが、何故最尤法が必要となってくるのかがピンときません。 というのも、例えば正規分布のパラメータを知りたいのならば、最尤法を用いなくても「平均値」「分散」という統計量を標本値から求めてしまえば良いのではないでしょうか。他の分布についても、ほとんどの分布は統計量からパラメータを求める事が出来るのではないのでしょうか。 そういった疑問を踏まえて、次の二点について悩んでいます。 ・最尤法によって求められるパラメータ値は統計量から直接求められるパラメータ値と同じものになるのか?(使用する標本は同じもの) ・もし同じものならば、最尤法を利用すべき状況とは一体何なのか。 (自分としては、統計量から求められるパラメータがどれぐらい正しいのかをcheckするぐらいしか利用価値が無いのではないかと思っています。) まだまだ勉強し始めて日も浅いので、もしかすると的外れな疑問なのかもしれませんが、お答えいただけると助かります。

  • [データ構造・アルゴリズム] B木について

    B木について分からないことがあるので教えて頂けたらありがたいです. 1. 平均で16個の子ノードのあるBツリーでは,100万件のデータにアクセスするとすると,最大何回のアクセスが必要になるか?また,その時に必要となる時間は何秒か?ハードディスクからのデータの転送時間は無視できるものとし,データはディスクの上にランダムに並んでいるものとする. 2. B木はメモリ上のデータへのアクセスよりは,外部記憶装置へのアクセスに適しているといわれている.その理由を簡潔に述べよ. 3. B木の1つのノードに格納できるキーの数を増やしていけば,データアクセスの効率はどうなっていくか?定性的に結果を推測せよ. 自分で考えた解答は 1. 10回 2. 探索がやりやすくなるから(よく分かりません・・・) 3. 良くなっていく(よく分かりません・・・) なのですがどうでしょうか?真剣に分からないのでアドバイスなど良かったらお願いします!

  • 標準偏差を求める際のデータ数について

    統計初心者ですが、この度アンケート調査を行い、その結果報告書を作成しなければならないのですが、データ数9の場合、平均、最小、最大に加え、標準偏差も記載しようと思っていますが問題はないでしょうか? 標準偏差は、データが30、50以上ないと意味がないということを聞いたことがあるので戸惑っています。 また問題ない場合、「データ数が少ない場合は補正係数を掛ける」という説明を見かけたのですが、これは単に算出した標準偏差に補正係数を掛けて、記載すればいいのでしょうか? この場合の記載の仕方などについても教えていただけないでしょうか。