バイモーダル分布を識別する方法は?


48

値をグラフとしてプロットしたら、双峰を観察することで二峰性分布を特定できることを理解していますが、プログラムでどのように見つけるのですか?(アルゴリズムを探しています。)


5
興味深い質問。私はこれについて何も知らないので、答えを試みませんが、グーグルバイモーダル+テストはかなりの見込みのあるリードを与えます。 google.co.uk/search?q=bimodality+test
onestop

マルチモダリティをテストするためのプログラムコードはwww.estima.comから入手でき、MODES.SRCと呼ばれます。Matlab、R、または他のソフトウェアに簡単に変換できます。よろしく、guido。

1
モードの数を特定することはできません(分布が持つ可能性のある小さなウィグルの数に制限はありません)が、下限を取得できます。例:projecteuclid.org/euclid.aos/1176351045
Glen_b 14年

回答:


27

連続分布のモードを識別するには、データを平滑化またはビン化する必要があります。

通常、ビニングはあまりにも原始的です。結果は、多くの場合、ビンカットポイントを配置する場所によって異なります。

カーネルの平滑化(具体的には、カーネル密度推定の形式)は適切な選択です。多くのカーネル形状が可能ですが、通常、結果は形状にあまり依存しません。カーネルの帯域幅に依存します。したがって、人々は、特定されたモードの安定性をチェックするために、適応カーネルスムースを使用するか、固定帯域幅を変化させるカーネルスムージングのシーケンスを実行します。適応的または「最適」なスムーザーを使用することは魅力的ですが、これらのほとんど(すべて?)は、精度と平均精度のバランスをとるように設計されていることに注意してください。モードの位置の推定を最適化するように設計されていません。

実装に関する限り、カーネルスムーザーは、データに合わせて事前に定義された関数をローカルにシフトおよびスケーリングします。この基本関数が微分可能であることを条件に、ガウス関数は何度でも微分できるので良い選択です。そうすれば、その微分関数に置き換えて滑らかな微分係数を取得するだけです。次に、標準的なゼロ検出手順を適用して、重要なポイントを検出してテストするだけです。(Brentの方法はうまく機能します。)もちろん、2番目の導関数でも同じトリックを実行して、クリティカルポイントが極大値、つまりモードであるかどうかをすばやくテストできます。


2
@ venkasub、Mullerのルート検索方法もご覧ください。それはブレントの方法よりも単純で、ニュートンの方法と同じくらい「ほぼ」効率的ですが、ターゲット関数の導関数を知る必要はありません。
枢機

25

この問題を扱うSilvermanの有名な論文があります。カーネル密度推定を採用しています。見る

BW Silverman、カーネル密度推定を使用してマルチモダリティを調査J。Royal Stat。Soc。B、vol。43、いいえ。1、1981、pp。97-99。

論文の表にはいくつかの誤りがあることに注意してください。これは出発点にすぎませんが、かなり良いものです。それはあなたが最も探しているものである場合には、使用するために明確に定義されたアルゴリズムを提供します。Google Scholarで、より「現代的な」アプローチについて引用している論文をご覧ください。


4
+1このホワイトペーパーでは、見かけのモードの数がカーネルの幅(ガウスカーネルの場合)にどのように依存するかについての情報を活用して、適切な幅を選択し、返信に記載されているように続けます。
whuber

2

パーティーに遅刻しましたが、マルチモーダルであるかどうかだけに興味がある場合、つまりモードの数に興味がない場合は、diptestを見てください

R、パッケージと呼ばれていますdiptest


2
正式名称は、Hartiganの単峰性の浸漬試験です。元の論文では、この説明が記載されています:ディップテストは、サンプルのマルチモダリティを、すべてのサンプルポイントにわたって、経験的分布関数とその最大差を最小化する単峰性分布関数との間の最大差によって測定します。アルゴリズムは簡単なものではありませんが、C、Python、MATLAB、および最新のFortranの翻訳は、「ユニモーダル性をテストするためのDip統計の計算」の元のFortran実装に基づいて簡単に見つけることができます。
mortehu


0

wikiの定義は私を少し混乱させます。モードが1つだけの連続データセットの確率はゼロです。二峰性ディストルビトンをプログラムする簡単な方法は、中心が異なる2つの正規分布を使用することです。これにより、2つのピークまたはwikiがモードと呼ぶものが作成されます。実際には、ほとんどすべての2つの分布を使用できますが、2つのランダムなデータ分布を結合した後、データセットがどのように形成されたかを見つけることは、より難しい統計的機会の1つです。


2つの正規分布の中心をどのように識別しますか?
-venkasub

@venkasub、正規分布の中心はその平均です。2峰性が2つの正規分布に由来することがわかっている場合、混合モデルを近似して平均を推定できます。これは2つのモードになります。
mpiktas
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.