Hartigansのディップテストの解釈


18

経験的に得たいくつかの分布の双峰性の強度を定量化する方法を見つけたいと思います。私が読んだことから、二峰性を定量化する方法についてはまだ議論があります。私は、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)の値を増やしました(これから「Bimodularityの強度」と呼ばれます-編集:「Intensity」と呼ぶ必要があります)二峰性の」)二峰性を取得します。最初のグラフでは、分布の例を見ることができます。次に、これらの異なるシミュレートされた分布に関連付けられたdiptestインデックス(2番目のグラフ)とp値(3番目のグラフ)(パッケージdiptest)を推定しました。使用されるRコードは、私の投稿の最後にあります。

ここで示すのは、分布が二峰性の場合、ディップテストインデックスが高く、P値が低いことです。これは、インターネットで読むことができるものとは反対です。

私は統計学の専門家ではないので、ハルティガンの論文をほとんど理解していませんでした。Hartigansのディップテストを解釈する正しい方法についてのコメントを取得したいと思います。どこか間違ってる?

皆さん、ありがとうございました。よろしく、

TA

シミュレートされた分布の例: シミュレートされた分布の例

Hartiganのディップテストインデックスが関連付けられています。 ここに画像の説明を入力してください

Hartiganのディップテストp.value関連: ここに画像の説明を入力してください

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

3
非常に徹底的な質問が、統計学者の基準では不可解なトピックについて解決します。明らかな最初の質問は、解釈を始める前に、「なぜこのテストが必要なのか、どのような情報を伝達するのか」ということです。「ディップテスト」の結果の解釈について、はるかにさらに下流の問題に導いた動機について、いくつかの追加のコンテキストを提供できますか。言い換えれば、Rプログラミングの利便性以外に、そもそも「ディップテスト」に至ったロジックのパスは何ですか?
マイクハンター

マイク、答えてくれてありがとう。私は進化生物学の理論モデルに取り組んでおり、感度分析を実施しています。特に、いくつかのパラメーターを変更すると、出力変数の分布がユニモーダルからバイモーダルに変わります(実際には非常に興味深い)。それが、分布の多重モジュラ性を説明する簡単な統計を探している理由です。これにより、感度解析を多重モジュール性に集中させることができます。
TA

ディップテストはRで簡単に計算でき、単峰分布からの逸脱を定量化できることがわかりました。もちろん、分布の多重モジュラ性を記述する他の統計に興味があります。
TA

うーん...いくつかの謙虚な多項式をフィッティングすることは、観察している曲線性を扱う「貧乏人」のアプローチに相当する可能性があり、Hartiganのテストよりも簡単に展開および解釈される可能性があります。あなたの問題に成長関数の取り扱いが含まれているかどうかはわかりません。たとえば、人間開発では、ライフサイクルの異なる時点で成長軌道にいくつかのよく知られた「バンプ」があります。ノンパラメトリックモデルは、これらの非線形性をパラメトリックモデルよりも近似し近似することがわかっています。
マイクハンター

1
統計上の問題について:前述のように、ディップテストは基準として単峰性を取ります。それからの逸脱は、P値からだけのモード数の観点から解釈できるとは思わない。密度推定と実質的な解釈を組み合わせて、多数のモードを解釈する方が非常に便利であることがわかりました。
ニックコックス

回答:


6

フリーマン氏(私があなたに話した論文の著者)は、彼が実際にディップテストのPvalueのみを見ていると言った。この混乱は、
「HDS値の範囲は0から1で、0.05未満の値は有意な二峰性を示し、0.05を超えるが.10未満の値は限界的有意性のある二峰性を示唆しています」という文章から来ています。HDS値は、浸漬試験の統計ではなく、P値に対応します。論文では不明瞭でした。

私の分析は良好です。ディップテストの統計は、分布が単峰分布から外れると増加します。

バイモダリティ検定とSilvermanの検定もRで簡単に計算でき、うまく機能します。


1
アカウントを登録して統合してください。ヘルプセンターの[アカウント]セクションでこれを行う方法に関する情報を見つけることができます。
GUNG -復活モニカ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.