Interpretazione del dip test di Hartigans


18

Vorrei trovare un modo per quantificare l'intensità della bimodalità di alcune distribuzioni ottenute empiricamente. Da quello che ho letto, c'è ancora qualche dibattito sul modo di quantificare la bimodalità. Ho scelto di utilizzare il dip test di Hartigans che sembra essere l'unico disponibile su R (documento originale: http://www.stat.washington.edu/wxs/Stat593-s03/Literature/hartigan85a.pdf ). Il dip test di Hartigans è definito come: "Il dip test misura la multimodalità in un campione in base alla differenza massima, su tutti i punti del campione, tra la funzione di distribuzione empirica e la funzione di distribuzione unimodale che minimizza quella differenza massima" .

Vorrei capire completamente come dovrei interpretare queste statistiche prima di usarle. Mi aspettavo che il dip test aumentasse se la distribuzione fosse multimodale (poiché è definita come "la differenza massima dalla distribuzione unimodale"). Ma : puoi leggere nella pagina di Wikipedia sulla distribuzione multimodale che "Valori inferiori a 0,05 indicano una bimodalità significativa e valori maggiori di 0,05 ma meno di 0,10 suggeriscono bimodalità con significato marginale." . Tale affermazione proviene da questo documento (Fig. 2). Secondo questo articolo, l'indice del dip test è vicino a 0 quando la distribuzione è bimodale. Mi confonde.

Per interpretare correttamente il dip test degli Hartigani ho costruito alcune distribuzioni (il codice originale è da qui ) e ho aumentato il valore di exp (mu2) (d'ora in poi chiamato "Intensità della bimodularità" - Modifica: avrei dovuto chiamarlo "Intensità" della bimodalità ' ) per ottenere la bimodalità. Nel primo grafico, puoi vedere alcuni esempi di distribuzioni. Quindi ho stimato l'indice diptest (secondo grafico) e il valore p (terzo graphe) associato ( diptest del pacchetto ) a quelle diverse distribuzioni simulate. Il codice R utilizzato è alla fine del mio post.

Quello che mostro qui è che l'indice del dip test è alto e il Pvalue è basso quando le distibuzioni sono bimodali. Il che è contrario a ciò che puoi leggere su Internet.

Non sono un esperto di statistica, quindi ho capito a malapena il documento di Hartigans. Vorrei ricevere alcuni commenti sul modo giusto di interpretare il dip test di Hartigans. Sbaglio da qualche parte?

Grazie a tutti. Saluti,

TA

Esempio di distribuzione simulata: Esempio di distribuzione simulato

L'indice del dip test di Hartigan è associato: inserisci qui la descrizione dell'immagine

Hart test di dip p.value associato a: inserisci qui la descrizione dell'immagine

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
Una domanda molto approfondita si risolve su un argomento arcano per gli standard di qualsiasi statistico. Le prime ovvie domande, prima ancora di arrivare all'interpretazione sono: "Perché hai bisogno di questo test? Quali informazioni sono destinate a comunicare?" Può fornire un ulteriore contesto per le motivazioni che ti hanno portato alla questione molto, molto più a valle dell'interpretazione dei risultati del "dip test?" In altre parole, oltre alla convenienza rispetto alla programmazione R, quale percorso logico ti ha portato al "dip test" in primo luogo?
Mike Hunter,

Grazie per la tua risposta, Mike. Sto lavorando a un modello teorico in biologia evolutiva e sto conducendo un'analisi di sensibilità. In particolare, osservo che variando alcuni parametri si modifica la distribuzione di una variabile di output da unimodale a bimodale (che in realtà è molto interessante). Ecco perché sto cercando una semplice statistica per descrivere la multimodularità di una distribuzione. Mi permetterebbe di focalizzare l'analisi della sensibilità sulla multimodularità.
TA,

Ho scoperto che il dip test poteva essere facilmente calcolato in R e che poteva quantificare la deviazione da una distribuzione unimodale. Certo, sarei davvero interessato da qualsiasi altra statistica che descriva la multimodularità di una distribuzione.
TA,

Hmmm ... adattarsi ad alcuni umili polinomi potrebbe equivalere a un approccio da "povero" per affrontare la curvilineità che stai osservando e potrebbe essere implementato e interpretato più facilmente del test di Hartigan. Non dici se i tuoi problemi includono la gestione di eventuali funzioni di crescita. Ad esempio, nello sviluppo umano, ci sono molti "dossi" ben noti nella traiettoria di crescita in punti distinti del ciclo di vita. È stato scoperto che i modelli non parametrici si adattano e approssimano meglio queste non linearità rispetto ai modelli parametrici.
Mike Hunter,

1
Sulle statistiche: come detto, il dip test prende come riferimento l'unimodalità. Non credo che le deviazioni da esso possano essere interpretate in termini di numero di modalità solo dal valore P. Ho trovato immensamente più utile interpretare il numero di modalità con una combinazione di stima della densità e interpretazione sostanziale.
Nick Cox,

Risposte:


6

Il signor Freeman (autore del documento di cui ti ho parlato) mi ha detto che in realtà stava solo guardando il Pvalue del dip test. Questa confusione deriva dalla sua frase:
"I valori di HDS vanno da 0 a 1 con valori inferiori a 0,05 che indicano una bimodalità significativa e valori maggiori di 0,05 ma inferiori a .10 che suggeriscono una bimodalità con significato marginale" . I valori HDS corrispondono al Pvalue e non alle statistiche del dip test. Non era chiaro nel documento.

La mia analisi è buona: le statistiche del dip test aumentano quando la distribuzione è deviante da una distribuzione unimodale.

Il test di bimodalità e il test di Silverman possono anche essere calcolati facilmente in R e fare bene il lavoro.


1
Ti preghiamo di registrarti e unire i tuoi account. Puoi trovare informazioni su come eseguire questa operazione nella sezione Il mio account del nostro centro assistenza .
gung - Ripristina Monica
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.