ハーティガンの解釈'ディップテスト
On 11月 18, 2020 by adminいくつかのバイモダリティの強度を定量化する方法を見つけたい私が経験的に得た分布。私が読んだことから、バイモダリティを定量化する方法についてはまだいくつかの議論があります。 Rで利用できるのはHartigansのディップテストだけのようです(元の論文: http://www.stat.washington.edu/wxs/Stat593-s03/Literature/hartigan85a.pdf )Hartigans “ディップテストは次のように定義されます。“ディップテストは、経験分布関数とその最大差を最小化する単峰分布関数との間の、すべてのサンプルポイントにわたる最大差によってサンプルのマルチモダリティを測定します “。
この統計を使用する前に、この統計をどのように解釈する必要があるかを完全に理解したいと思います。分布がマルチモーダルの場合(「ユニモーダル分布との最大差」として定義されるため)、ディップテストが増加することを期待していました。 しかし:ウィキペディアのページでマルチモーダル分布について読むことができます “0.05未満の値は、有意なバイモダリティと値を示します0.05より大きく0.10未満の場合、重要性がわずかなバイモダリティを示します。」このような記述は、この論文からのものです(図2)。この論文によると、分布が二峰性である場合、ディップテストインデックスは0に近くなります。混乱します。
Hartigansのディップテストを正しく解釈するために、いくつかの分布を作成し(元のコードはここから)、増加しましたexp(mu2)の値(これからは「バイモジュラリティの強度」と呼ばれます-編集:「バイモダリティの強度」と呼ぶべきでした)バイモダリティを取得します。最初のグラフで、次のことがわかります。分布のいくつかの例次に、これらのさまざまなシミュレートされた分布に関連付けられたdiptestインデックス(2番目のグラフ)とp値(3番目のグラフ)(パッケージ diptest )を推定しました。使用されるRコードはの最後にあります。私の投稿。
ここで示すのは、分布がバイモーダルの場合、ディップテストインデックスが高く、P値が低いことです。これはインターネットで読むことができるものとは反対です。
私は統計の専門家ではないので、Hartigansの論文をほとんど理解していません。ハーティガンズのディップテストを正しく解釈する方法についてコメントをお願いします。どこか間違っていますか?
ありがとうございます。よろしくお願いします。
TA
シミュレートされた分布の例:
関連するHartiganのディップテストインデックス:
Hartiganのディップテストのp値の関連付け:
library(diptest) library(ggplot2) # CONSTANT PARAMETERS sig1 <- log(3) sig2 <- log(3) cpct <- 0.5 N=1000 #CREATING BIMOD DISTRIBUTION bimodalDistFunc <- function (n,cpct, mu1, mu2, sig1, sig2) { y0 <- rlnorm(n,mean=mu1, sd = sig1) y1 <- rlnorm(n,mean=mu2, sd = sig2) flag <- rbinom(n,size=1,prob=cpct) y <- y0*(1 - flag) + y1*flag } #DIP TEST DIP_TEST <- function(bimodalData) { TEST <- dip.test(bimodalData) return(TEST$statistic[[1]]) # return(TEST$p.value[[1]]) to get the p value } DIP_TEST(bimodalData) # SIMULATION exp_mu1 = 1 max_exp_mu2 = 100 intervStep = 100 repPerInt = 10 # single distibutions expMu2Value <- c() bimodalData <- c() mu1 <- log(exp_mu1) mu2 <- log(exp_mu1) bimodalData <- c(bimodalData,log(bimodalDistFunc(n=N,cpct,mu1,mu2, sig1,sig2))) expMu2Value <- c(expMu2Value,rep(exp_mu1,length(log(bimodalDistFunc(n=N,cpct,mu1,mu2, sig1,sig2))))) mu1 <- log(exp_mu1) mu2 <- log(max_exp_mu2) bimodalData <- c(bimodalData,log(bimodalDistFunc(n=N,cpct,mu1,mu2, sig1,sig2))) expMu2Value <- c(expMu2Value,rep(max_exp_mu2,length(log(bimodalDistFunc(n=N,cpct,mu1,mu2, sig1,sig2))))) mu1 <- log(exp_mu1) mu2 <- log(trunc((max_exp_mu2-exp_mu1)/2+1)) bimodalData <- c(bimodalData,log(bimodalDistFunc(n=N,cpct,mu1,mu2, sig1,sig2))) expMu2Value <- c(expMu2Value,rep(trunc((max_exp_mu2-exp_mu1)/2+1),length(log(bimodalDistFunc(n=N,cpct,mu1,mu2, sig1,sig2))))) tableExamples <- data.frame(expMu2Value,bimodalData) tableExamples$expMu2Value <- as.factor(tableExamples$expMu2Value) ExamplePlot <- ggplot(tableExamples)+ geom_histogram(aes(bimodalData),color="white")+ ylab("Count")+ xlab("")+ facet_wrap(~expMu2Value)+ ggtitle("Intensity of bimodularity") # calculation of the dip test index exp_mu2Int = seq(from=exp_mu1,to=max_exp_mu2,length.out=intervStep) expmu2Vec = c() dipStat = c() testDone = c() for(exp_mu2 in exp_mu2Int){ mu1 <- log(exp_mu1) mu2 <- log(exp_mu2) for(rep in 1:repPerInt){ bimodalData <- log(bimodalDistFunc(n=N,cpct,mu1,mu2, sig1,sig2)) diptestone = DIP_TEST(bimodalData) expmu2Vec = c(expmu2Vec,exp_mu2) dipStat = c(dipStat,diptestone) testDone = c(testDone,"diptest") } } table = data.frame(expmu2Vec,dipStat,testDone) IndexPlot <- ggplot(table)+ geom_point(aes(expmu2Vec,dipStat,color=testDone))+ ylab("Index")+ xlab("Intensity of Bimodularity")+ scale_color_discrete(name="Test") ExamplePlot IndexPlot
コメント
- 統計学者'の基準では難解なトピックについて非常に徹底的な質問が行われます。解釈に入る前の明らかな最初の質問は、"なぜこのテストが必要なのですか?どのような情報を伝達することを目的としていますか?"のはるかに下流の問題にあなたを導いた動機について、いくつかの追加のコンテキストを提供できます。 "ディップテストの結果の解釈?"つまり、それ以外の場合' Rプログラミングの利便性、そもそも"ディップテスト"にたどり着いたロジックのパスは何ですか?
- 答えてくれてありがとう、マイク。私は'進化生物学の理論モデルに取り組んでおり、感度分析を行っています。特に、いくつかのパラメーターを変更すると、出力変数の分布がユニモーダルからバイモーダルに変更されることがわかります(これは実際には非常に興味深いことです)。そのため、'は、分布の多重モジュール性を説明するための簡単な統計を'探している理由です。これにより、感度分析をマルチモジュラリティに集中させることができます。
- ディップテストはRで簡単に計算でき、単峰性分布からの逸脱を定量化できることがわかりました。もちろん、分布の多重モジュラリティを説明する他の統計に本当に興味があります。
- うーん…いくつかの謙虚な多項式を当てはめると、"貧乏人' s "あなたが観察している曲線性に対処するためのアプローチ' Hartigan 'のテストよりも簡単に展開および解釈できる可能性があります。 '問題に成長機能の処理が含まれるかどうかはわかりません。たとえば、人間開発では、ライフサイクルの異なるポイントでの成長軌道にいくつかのよく知られた"バンプ"があります。ノンパラメトリックモデルは、パラメトリックモデルよりもこれらの非線形性に適合し、近似することがわかっています。
- 統計的問題について:前述のように、ディップテストは単峰性を参照として使用します。 'それからの逸脱は、P値からのモード数の観点から解釈できるとは思いません。 '密度推定と実質的な解釈を組み合わせて、モードの数を解釈する方が非常に便利であることがわかりました。
回答
ミスターFreeman(私があなたに話した紙の著者)は、彼が実際にディップテストのp値だけを見ていると私に言いました。この混乱は彼の文章から来ています:
「HDS値は0から1の範囲で、.05未満の値は有意なバイモダリティを示し、.05より大きく.10未満の値はわずかな有意性のあるバイモダリティを示します」。 HDS値はP値に対応し、ディップ検定統計量には対応しません。論文では不明確でした。
私の分析は良好です。分布が単峰性分布から逸脱すると、ディップ検定統計量が増加します。
バイモダリティテストとシルバーマンのテストもRで簡単に計算でき、うまく機能します。
コメント
- &を登録してアカウントをマージしてください。これを行う方法については、<のマイアカウントセクションをご覧ください。 / div>ヘルプセンター。
コメントを残す