Interpretazione di Hartigans ' dip test
Su Novembre 18, 2020 da adminVorrei trovare un modo per quantificare lintensità della bimodalità di alcuni distribuzioni che ho ottenuto empiricamente. Da quanto ho letto, cè ancora un dibattito sul modo di quantificare la bimodalità. Ho scelto di utilizzare il “dip test di Hartigans che sembra essere lunico 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 campione, tra la funzione di distribuzione empirica e la funzione di distribuzione unimodale che minimizza tale differenza massima “.
Mi piacerebbe capire completamente come dovrei interpretare queste statistiche prima di usarle. Mi aspettavo che il dip test aumentasse se la distribuzione fosse multimodale (in quanto viene definita “la massima differenza dalla distribuzione unimodale”). Ma : puoi leggere nella pagina di wikipedia sulla distribuzione multimodale che “Valori inferiori a 0,05 indicano una bimodalità e valori significativi maggiore di 0,05 ma minore di 0,10 suggeriscono una bimodalità con significato marginale. “. Tale affermazione viene da questo documento (Fig. 2). Secondo questo documento, lindice del dip test è vicino a 0 quando la distribuzione è bimodale. Mi confonde.
Per interpretare correttamente il dip test di Hartigans ho costruito alcune distribuzioni (il codice originale è da qui ) e ho aumentato il valore di exp (mu2) (dora in poi chiamato “Intensità della bimodularità” – Modifica: avrei dovuto chiamarlo “Intensità della bimodalità” ) per ottenere la bimodalità. Nel primo grafico, puoi vedere qualche esempio di distribuzioni. Quindi ho stimato lindice diptest (secondo grafico) e il valore p (terzo grafico) associati (pacchetto diptest ) a quelle diverse distribuzioni simulate. Il codice R utilizzato è alla fine di il mio post.
Quello che mostro qui è che lindice del dip test è alto e il Pvalue è basso quando le distribuzioni sono bimodali. Il che è contrario a quello che si può leggere su Internet.
Non sono un esperto di statistica, quindi ho capito a malapena larticolo di Hartigan”. Vorrei ricevere alcuni commenti sul modo corretto in cui dovremmo interpretare il “dip test di Hartigan. Mi sbaglio da qualche parte?
Grazie a tutti. Saluti,
TA
Esempio di distribuzione simulata:
Indice del dip test di Hartigan associato:
Valore p.per il dip test di Hartigan associato:
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
Commenti
- Domande molto approfondite elaborate su un argomento che è arcano per qualsiasi ' standard . La prima ovvia domanda, prima ancora di entrare in interpretazione è: " Perché hai bisogno di questo test? Quali informazioni intende comunicare? " Può fornire un contesto aggiuntivo per le motivazioni che ti hanno portato al problema molto, molto più a valle del interpretazione dei risultati del " dip test? " In altre parole, diverso da ' rispetto alla programmazione R, quale percorso logico ti ha portato al " dip test " in primo luogo?
- Grazie per la tua risposta, Mike. ' sto lavorando a un modello teorico di biologia evolutiva e sto effettuando unanalisi 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 lanalisi di sensibilità sulla multimodularità.
- Ho scoperto che il dip test potrebbe essere facilmente calcolato in R e che potrebbe quantificare la devianza da una distribuzione unimodale. Naturalmente, sarei davvero interessato a qualsiasi altra statistica che descriva la multimodularità di una distribuzione.
- Hmmm … ladattamento di pochi umili polinomi potrebbe equivalere a un " povero ' s " approccio per affrontare la curvilinearità che ' stai osservando e potrebbe essere più facilmente implementato e interpretato rispetto al test di Hartigan '. Non ' dire se i tuoi problemi includono la gestione di funzioni di crescita.Ad esempio, nello sviluppo umano, ci sono diversi " dossi " noti nella traiettoria di crescita in punti distinti del ciclo di vita. È stato riscontrato che i modelli non parametrici si adattano e approssimano meglio queste non linearità rispetto ai modelli parametrici.
- Sulle questioni statistiche: come detto, il dip test prende lunimodalità come riferimento. Non ' penso che gli scostamenti da esso possano essere interpretati 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.
Risposta
Mr. Freeman (autore del articolo di cui ti ho parlato) mi ha detto che in realtà stava guardando solo il valore P del dip test. Questa confusione deriva dalla sua frase:
“I valori HDS vanno da 0 a 1 con valori inferiori a .05 che indicano una bimodalità significativa, e valori maggiori di .05 ma inferiori a .10 che suggeriscono bimodalità con significato marginale” . I valori HDS corrispondono al valore P e non alle statistiche del test di immersione. Non era chiaro nel giornale.
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 fanno bene il lavoro.
Commenti
- Registra & unisci i tuoi account. Puoi trovare informazioni su come eseguire questa operazione nella sezione Account personale del nostro centro assistenza .
Lascia un commento