Tolkning av Hartigans ' dip test
On november 18, 2020 by adminJeg vil gjerne finne en måte å kvantifisere intensiteten av bimodalitet hos noen distribusjoner fikk jeg empirisk. Etter det jeg leste, er det fremdeles en del debatt om måten å tallfeste bimodalitet på. Jeg valgte å bruke Hartigans «dip test som ser ut til å være den eneste som er tilgjengelig på R (originalpapir: http://www.stat.washington.edu/wxs/Stat593-s03/Literature/hartigan85a.pdf Hartigans «dyppetest er definert som: » Dyppetesten måler multimodalitet i en prøve med den maksimale forskjellen over alle prøvepunktene mellom den empiriske fordelingsfunksjonen og den unimodale fordelingsfunksjonen som minimerer den maksimale forskjellen «<. / em>.
Jeg vil forstå helt hvordan jeg skal tolke denne statistikken før jeg bruker den. Jeg forventet at dyppetesten ville øke hvis fordelingen er multimodal (da den er definert som «maksimal forskjell fra den unimodale fordelingen»). Men : du kan lese på wikipedia-siden om multimodal fordeling at «Verdier mindre enn 0,05 indikerer betydelig bimodalitet og verdier større enn 0,05, men mindre enn 0,10 antyder bimodalitet med marginal betydning. «. En slik uttalelse kommer fra dette papiret (fig. 2). I følge dette papiret er dyppetestindeksen nær 0 når fordelingen er bimodal. Det forvirrer meg.
For å tolke riktig Hartigans «dip test konstruerte jeg noen distribusjoner (den opprinnelige koden er fra her ) og jeg økte verdien av exp (mu2) (kalt «Intensitet av bimodularitet» fra nå av – Rediger: Jeg burde ha kalt det «Intensitet av bimodalitet» ) for å få bimodalitet. I den første grafen kan du se noen eksempler på distribusjoner. Da estimerte jeg dyppetestindeksen (andre graf) og p-verdien (tredje graf) assosiert (pakke diptest ) til de forskjellige simulerte distribusjonene. R-koden som brukes er på slutten innlegget mitt.
Det jeg viser her er at dip testindeksen er høy og Pvalue er lav når distribusjonene er bimodale. Som er i strid med det du kan lese på internett.
Jeg er ingen ekspert på statistikk, slik at jeg knapt forsto Hartigans papir. Jeg vil gjerne ha noen kommentarer om den rette måten vi skal tolke Hartigans «dip test. Har jeg feil et sted?
Takk alle sammen. Hilsen,
TA
Eksempel på distribusjon simulert:
Hartigan «s dip testindeks assosiert:
Hartigan «s dip test p.value assosiert:
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
Kommentarer
- Veldig grundig spørsmålsarbeid om et emne som er banalt av enhver statistiker ' s standarder De åpenbare første spørsmålene før man til og med går inn i tolkning er, " Hvorfor trenger du denne testen? Hvilken informasjon er det ment å kommunisere? " Kan gi litt ekstra sammenheng for motivasjonene som har ført deg til det mye, mye lenger nedstrøms problemet med tolkning av resultatene fra " dip test? " Med andre ord, annet enn det ' s bekvemmelighet med R-programmering, hvilken vei for logikk har ført deg til " dip test " i utgangspunktet?
- Takk for svaret ditt, Mike. Jeg ' Jeg arbeider med en teoretisk modell i evolusjonsbiologi og utfører en sensitivitetsanalyse. Spesielt observerer jeg at varierende noen parametere endrer fordelingen av en utgangsvariabel fra unimodal til bimodal (noe som faktisk er veldig interessant). At ' derfor jeg ' leter etter en enkel statistikk for å beskrive multimodulariteten til en distribusjon. Det ville tillate meg å fokusere sensitivitetsanalysen på multimodulariteten.
- Jeg fant ut at dip-testen lett kunne beregnes i R og at den kunne kvantifisere avviket fra en unimodal fordeling. Selvfølgelig vil jeg være veldig interessert i annen statistikk som beskriver multimodulariteten til en distribusjon.
- Hmmm … montering av noen ydmyke polynomer kan utgjøre en " stakkars mann ' s " tilnærming til å håndtere kurvlineariteten du ' observerer og kan bli lettere distribuert og tolket enn Hartigan ' s test. Du ' t sier om problemene dine inkluderer håndtering av vekstfunksjoner.For eksempel er det i menneskelig utvikling flere kjente " støt " i vekstbanen på forskjellige punkter i livssyklusen. Ikke-parametriske modeller har blitt funnet å passe bedre og tilnærme disse ikke-lineariteter enn parametriske modeller.
- Om de statistiske spørsmålene: Som sagt tar dip-testen unimodalitet som referanse. Jeg tror ikke ' at avvik fra det kan tolkes i form av antall moduser bare fra P-verdien. Jeg ' har funnet det umåtelig mer nyttig å tolke antall moduser med en kombinasjon av tetthetsestimering og substansiell tolkning.
Svar
Mr. Freeman (forfatter av papiret jeg fortalte deg om) fortalte meg at han faktisk bare så på dyppetestens P-verdi. Denne forvirringen kommer fra setningen hans:
«HDS-verdier varierer fra 0 til 1 med verdier mindre enn 0,05 som indikerer betydelig bimodalitet, og verdier større enn 0,05, men mindre enn .10, noe som tyder på bimodalitet med marginal betydning» . HDS-verdier tilsvarer Pvalue, og ikke dip-teststatistikken. Det var uklart i avisen.
Analysen min er god: dip-teststatistikken øker når fordelingen er avvikende fra en unimodal fordeling.
Bimodalitetstest og Silvermans test kan også beregnes enkelt i R og gjør jobben bra.
Kommentarer
- Registrer & slå sammen kontoene dine. Du finner informasjon om hvordan du gjør dette i delen Min konto i brukerstøtten .
Legg igjen en kommentar