Interpretarea Hartiganilor ' dip test
On noiembrie 18, 2020 by adminAș dori să găsesc o modalitate de a cuantifica intensitatea bimodalității unor distribuții pe care le-am obținut empiric. Din ceea ce am citit, există încă unele dezbateri cu privire la modul de cuantificare a bimodalității. Am ales să folosesc „testul dip” Hartigans care pare a fi singurul disponibil pe R (hârtie originală: http://www.stat.washington.edu/wxs/Stat593-s03/Literature/hartigan85a.pdf Hartigans „testul dip este definit ca: ” Testul dip măsoară multimodalitatea într-un eșantion prin diferența maximă, pe toate punctele eșantionului, între funcția de distribuție empirică și funcția de distribuție unimodală care minimizează diferența maximă / em>.
Aș dori să înțeleg complet cum ar trebui să interpretez aceste statistici înainte de a le utiliza. Mă așteptam ca testul dip să crească dacă distribuția este multimodală (deoarece este definită ca „diferența maximă față de distribuția unimodală”). Dar : puteți citi în pagina Wikipedia despre distribuția multimodală că „Valorile mai mici de 0,05 indică valori și bimodalitate semnificative mai mare de 0,05, dar mai puțin de 0,10 sugerează bimodalitate cu semnificație marginală. „. O astfel de afirmație provine din această lucrare (Fig. 2). Conform acestei lucrări, indicele de testare dip este aproape de 0 atunci când distribuția este bimodală. Mă încurcă.
Pentru a interpreta corect testul dip „Hartigans” am construit câteva distribuții (codul original este de la aici ) și am crescut valoarea exp (mu2) (numită „Intensitatea bimodularității” de acum înainte – Edit: ar fi trebuit să o numesc „Intensitatea bimodalității” ) pentru a obține bimodalitatea. În primul grafic, puteți vedea un exemplu de distribuții. Apoi am estimat indicele diptest (al doilea grafic) și valoarea p (al treilea graphe) asociat (pachetul diptest ) acelor distribuții simulate diferite. Codul R utilizat este la sfârșitul postarea mea.
Ceea ce arăt aici este că indicele de testare dip este mare și Pvalue este scăzut atunci când distibuțiile sunt bimodale. Ceea ce este contrar a ceea ce puteți citi pe internet.
Nu sunt expert în statistici, așa că abia am înțeles lucrarea Hartigans. Aș dori să primesc câteva comentarii despre modul corect în care ar trebui să interpretăm „dip testul” Hartigans. Mă înșel undeva?
Vă mulțumesc tuturor. Cu respect,
TA
Exemplu de distribuție simulată:
Indice de test dip dip Hartigan asociat:
Hart dip „s test p.value asociat:
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
Comentarii
- Soluționează o întrebare foarte amănunțită despre un subiect care este arcane de orice standarde ' . Primele întrebări evidente, chiar înainte ca cineva să intre în interpretare este, " De ce aveți nevoie de acest test? Ce informații este destinat să comunicați? " Vă poate oferi un context suplimentar pentru motivațiile care v-au condus la mult, mult mai departe, problema din aval a interpretarea rezultatelor de la " test dip? " Cu alte cuvinte, altele decât ' s comoditate programare R wrt, ce cale de logică te-a condus la " test de dip " în primul rând?
- Mulțumesc pentru răspunsul tău, Mike. Eu ' m lucrez la un model teoretic în biologia evoluției și efectuez o analiză de sensibilitate. În special, observ că variația unor parametri modifică distribuția unei variabile de ieșire de la unimodal la bimodal (ceea ce este de fapt foarte interesant). ' este motivul pentru care ' caut o statistică simplă pentru a descrie multimodularitatea unei distribuții. Mi-ar permite să concentrez analiza sensibilității pe multimodularitate.
- Am aflat că testul dip poate fi calculat cu ușurință în R și că ar putea cuantifica deviația de la o distribuție unimodală. Desigur, m-ar interesa cu adevărat orice altă statistică care descrie multimodularitatea unei distribuții.
- Hmmm … potrivirea câtorva polinoame umile ar putea însuma un " om sărac ' s " abordare pentru a face față curviliniarității pe care ' o observi și ar putea fi mai ușor de implementat și interpretat decât testul Hartigan '. Nu ' nu spuneți dacă problemele dvs. includ tratarea unor funcții de creștere.De exemplu, în dezvoltarea umană, există mai multe cunoscute " umflături " în traiectoria de creștere în puncte distincte ale ciclului de viață. S-a găsit că modelele neparametrice se potrivesc și aproximează mai bine aceste neliniarități decât modelele parametrice.
- În ceea ce privește problemele statistice: După cum sa spus, testul dip ia unimodalitatea ca referință. Nu ' cred că plecările de la acesta pot fi interpretate în funcție de numărul de moduri doar din valoarea P. Am ' considerat că este extrem de util să interpretez numărul de moduri cu o combinație de estimare a densității și interpretare de fond.
Răspuns
Domnule Freeman (autorul lucrării despre care v-am spus) mi-a spus că, de fapt, se uita doar la Pvalue of the dip test. Această confuzie vine din propoziția sa:
„Valorile HDS variază de la 0 la 1 cu valori mai mici de 0,05 indicând bimodalitate semnificativă și valori mai mari de 0,05 dar mai mici de 0,10 sugerând bimodalitate cu semnificație marginală” . Valorile HDS corespund valorii Pvalue, și nu statisticilor testului dip. Nu era clar în ziar.
Analiza mea este bună: statisticile dip test cresc atunci când distribuția deviază de la o distribuție unimodală.
Testul bimodalității și testul Silverman pot fi de asemenea calculate cu ușurință în R și pot face treaba bine.
Comentarii
- Vă rugăm să înregistrați & îmbinați-vă conturile. Puteți găsi informații despre cum să faceți acest lucru în secțiunea Contul meu din centru de ajutor .
Lasă un răspuns