Interpretation des Hartigans-Dip-Tests


18

Ich möchte einen Weg finden, um die Intensität der Bimodalität einiger Verteilungen zu quantifizieren, die ich empirisch erhalten habe. Nach allem, was ich gelesen habe, gibt es immer noch eine Debatte darüber, wie die Bimodalität quantifiziert werden kann. Ich habe mich für den Hartigans-Dip-Test entschieden, der der einzige auf R verfügbare Test zu sein scheint (Originalpapier: http://www.stat.washington.edu/wxs/Stat593-s03/Literature/hartigan85a.pdf ). : Hartigans' dip Test ist definiert als ‚die DIP - Test misst Multimodalität in einer Probe durch die maximale Differenz, über alle Abtastpunkte zwischen der empirischen Verteilungsfunktion und die Verteilungsfunktion unimodal dass minimiert , die maximale Differenz‘ .

Ich würde gerne verstehen, wie ich diese Statistiken interpretieren sollte, bevor ich sie verwende. Ich hatte erwartet, dass der Dip-Test zunehmen würde, wenn die Verteilung multimodal ist (wie es als "die maximale Differenz von der unimodalen Verteilung" definiert ist). Aber : Sie können auf der Wikipedia-Seite über die multimodale Verteilung lesen, dass "Werte unter 0,05 auf signifikante Bimodalität hinweisen und Werte über 0,05, aber unter 0,10 auf Bimodalität mit marginaler Signifikanz hinweisen." . Eine solche Aussage stammt aus diesem Papier (Abb. 2). Laut dieser Veröffentlichung liegt der Dip-Test-Index nahe bei 0, wenn die Verteilung bimodal ist. Das verwirrt mich.

Um den Hartigans-Dip-Test richtig zu interpretieren, habe ich einige Verteilungen konstruiert (der ursprüngliche Code stammt von hier ) und den Wert von exp (mu2) erhöht (von nun an 'Intensität der Bimodularität' genannt) - Bearbeiten: Ich hätte es 'Intensität' nennen sollen der Bimodalität ' ), um die Bimodalität zu erhalten. Im ersten Diagramm sehen Sie einige Beispiele für Verteilungen. Dann schätzte ich den Diptest-Index (zweites Diagramm) und den p-Wert (dritte Graphe ), der diesen verschiedenen simulierten Verteilungen zugeordnet ist (Paket- Diptest ). Der verwendete R-Code befindet sich am Ende meines Beitrags.

Was ich hier zeige, ist, dass der Dip-Test-Index hoch und der P-Wert niedrig ist, wenn die Verteilungen bimodal sind. Das widerspricht dem, was Sie im Internet lesen können.

Ich bin kein Statistikexperte, so dass ich Hartigans Papier kaum verstehe. Ich würde gerne einige Kommentare dazu erhalten, wie wir Hartigans Dip-Test richtig interpretieren sollten. Irre ich mich irgendwo

Danke euch allen. Grüße,

TA

Beispiel einer simulierten Verteilung: Verteilungsbeispiel simuliert

Hartigans Dip-Test-Index im Zusammenhang mit: Bildbeschreibung hier eingeben

Hartigan's Dip Test p.value verbunden: Bildbeschreibung hier eingeben

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
Sehr gründliche Fragestellung zu einem Thema, das nach den Maßstäben eines jeden Statistikers geheim ist. Die offensichtlichen ersten Fragen, bevor man überhaupt zur Interpretation kommt, lauten: "Warum brauchen Sie diesen Test? Welche Informationen sollen kommuniziert werden?" Kann ein zusätzlicher Kontext für die Motivationen bereitgestellt werden, die Sie zu der viel weiter nachgelagerten Frage der Interpretation der Ergebnisse des "Dip-Tests" geführt haben? Mit anderen Worten, abgesehen von der Bequemlichkeit bei der R-Programmierung, welcher logische Pfad hat Sie überhaupt zum "Dip-Test" geführt?
Mike Hunter

Danke für deine Antwort, Mike. Ich arbeite an einem theoretischen Modell in der Evolutionsbiologie und führe eine Sensitivitätsanalyse durch. Insbesondere beobachte ich, dass das Variieren einiger Parameter die Verteilung einer Ausgabevariablen von unimodal nach bimodal verändert (was eigentlich sehr interessant ist). Aus diesem Grund suche ich nach einer einfachen Statistik, um die Multimodularität einer Distribution zu beschreiben. Es würde mir erlauben, die Sensitivitätsanalyse auf die Multimodularität zu konzentrieren.
TA

Ich fand heraus, dass der Dip-Test leicht in R berechnet werden kann und die Abweichung von einer unimodalen Verteilung quantifiziert werden kann. Natürlich würde mich jede andere Statistik, die die Multimodularität einer Distribution beschreibt, wirklich interessieren.
TA

Hmmm ... das Anpassen einiger bescheidener Polynome könnte einem "armen Mann" im Umgang mit der von Ihnen beobachteten Krummlinigkeit gleichkommen und sich leichter einsetzen und interpretieren lassen als Hartigans Test. Sie sagen nicht, ob Ihre Probleme den Umgang mit Wachstumsfunktionen beinhalten. Zum Beispiel gibt es in der menschlichen Entwicklung mehrere bekannte "Unebenheiten" in der Wachstumspfade an verschiedenen Punkten des Lebenszyklus. Es wurde festgestellt, dass nichtparametrische Modelle besser zu diesen Nichtlinearitäten passen und sich diesen annähern als parametrische Modelle.
Mike Hunter

1
Zu den statistischen Fragestellungen: Wie bereits erwähnt, dient der Dip-Test als Referenz für die Unimodalität. Ich glaube nicht, dass Abweichungen davon in Form der Anzahl der Modi nur anhand des P-Werts interpretiert werden können. Ich fand es immens nützlicher, die Anzahl der Modi mit einer Kombination aus Dichteschätzung und inhaltlicher Interpretation zu interpretieren.
Nick Cox

Antworten:


6

Herr Freeman (Autor des Papiers, von dem ich Ihnen erzählt habe) sagte mir, dass er tatsächlich nur den P-Wert des Dip-Tests betrachtete. Diese Verwirrung kommt aus seinem Satz:
„HDS - Werte reichen von 0 bis 1 mit Werten von weniger als 0,05 angibt signifikanter Bimodalität und Werten größer als 0,05 , jedoch weniger als 0,10 was darauf hindeutet , Bimodalität mit marginaler Bedeutung“ . HDS-Werte entsprechen dem P-Wert und nicht der Eintauchteststatistik. Es war in der Zeitung unklar.

Meine Analyse ist gut: Die Dip-Test-Statistik steigt, wenn die Verteilung von einer unimodalen Verteilung abweicht.

Der Bimodalitätstest und der Silverman-Test können auch einfach in R berechnet werden und machen die Arbeit gut.


1
Bitte registrieren Sie sich und führen Sie Ihre Konten zusammen. Informationen dazu finden Sie im Abschnitt " Mein Konto " in unserer Hilfe .
gung - Wiedereinsetzung von Monica
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.