Interpretatie van Hartigans ' dip test
Geplaatst op november 18, 2020 door adminIk zou graag een manier willen vinden om de intensiteit van bimodaliteit van sommige distributies die ik empirisch heb gekregen. Van wat ik heb gelezen, is er nog enige discussie over de manier om bimodaliteit te kwantificeren. Ik heb ervoor gekozen om Hartigans “dip-test te gebruiken, die de enige lijkt te zijn die beschikbaar is op R (origineel papier: http://www.stat.washington.edu/wxs/Stat593-s03/Literature/hartigan85a.pdf Hartigans “diptest wordt gedefinieerd als: ” De diptest meet multimodaliteit in een steekproef door het maximale verschil, over alle steekproefpunten, tussen de empirische verdelingsfunctie en de unimodale verdelingsfunctie die dat maximale verschil minimaliseert “.
Ik zou graag volledig willen begrijpen hoe ik deze statistieken moet interpreteren voordat ik ze gebruik. Ik verwachtte dat de dip-test zou toenemen als de distributie multimodaal is (zoals gedefinieerd als “het maximale verschil met de unimodale distributie”). Maar : u kunt op de wikipedia-pagina over multimodale distributie lezen dat “Waarden kleiner dan 0,05 duiden op significante bimodaliteit en waarden groter dan 0,05 maar kleiner dan 0,10 duiden op bimodaliteit met een marginale betekenis. “. Een dergelijke verklaring komt van deze paper (Afb. 2). Volgens dit artikel is de dip-testindex bijna 0 wanneer de distributie bimodaal is. Het verwart me.
Om de Hartigans “dip-test correct te interpreteren heb ik een aantal distributies geconstrueerd (de originele code is van hier ) en ik heb de waarde van exp (mu2) (genaamd “Intensity of bimodularity” vanaf nu – Bewerken: ik had het “Intensity of bimodularity” moeten noemen) om bimodaliteit te krijgen. In de eerste grafiek kun je zien een voorbeeld van distributies. Vervolgens schatte ik de diptest-index (tweede grafiek) en de p-waarde (derde graphe) die is gekoppeld (pakket diptest ) aan die verschillende gesimuleerde distributies. De gebruikte R-code bevindt zich aan het einde van mijn bericht.
Wat ik hier laat zien is dat de dip-testindex hoog is en de P-waarde laag wanneer de verdelingen bimodaal zijn. Wat in tegenspraak is met wat je op internet kunt lezen.
Ik ben geen expert in statistiek, waardoor ik Hartigans paper amper begreep. Ik zou graag wat opmerkingen willen krijgen over de juiste manier waarop we Hartigans “diptest moeten interpreteren. Heb ik het ergens mis?
Bedankt allemaal. Groeten,
TA
Voorbeeld van gesimuleerde distributie:
Hartigans dip-testindex geassocieerd:
Hartigans dip-test p.value geassocieerd:
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
Reacties
- Zeer grondige vraagstelling over een onderwerp dat geheimzinnig is door elke statisticus ' s standaarden . De voor de hand liggende eerste vraag, voordat men überhaupt in interpretatie komt, is: " Waarom heb je deze test nodig? Welke informatie is bedoeld om te communiceren? " Kan wat extra context bieden voor de motivaties die u hebben geleid tot de veel, veel verder stroomafwaartse kwestie van de interpretatie van de resultaten van de " dip-test? " Met andere woorden, anders dan ' gemak ten opzichte van R-programmering, welk pad van de logica heeft u in de eerste plaats naar de " dip-test " geleid?
- Bedankt voor je antwoord, Mike. Ik ' m werk aan een theoretisch model in de evolutiebiologie en voer een gevoeligheidsanalyse uit. In het bijzonder merk ik op dat het variëren van sommige parameters de verdeling van een uitvoervariabele wijzigt van unimodaal naar bimodaal (wat eigenlijk heel interessant is). Dat ' is waarom ik ' zoek naar eenvoudige statistieken om de multimodulariteit van een distributie te beschrijven. Het zou me in staat stellen om de gevoeligheidsanalyse te concentreren op de multimodulariteit.
- Ik ontdekte dat de dip-test gemakkelijk in R berekend kon worden en dat het de afwijking van een unimodale verdeling kon kwantificeren. Natuurlijk zou ik echt geïnteresseerd zijn in andere statistieken die de multimodulariteit van een distributie beschrijven.
- Hmmm … het passen van een paar eenvoudige polynomen zou kunnen neerkomen op een " arme man ' s " benadering van het omgaan met de curvilineariteit die u ' observeert en kan gemakkelijker worden geïmplementeerd en geïnterpreteerd dan de Hartigan ' s-test. U hoeft niet ' te zeggen of uw problemen het omgaan met groeifuncties omvatten.In de menselijke ontwikkeling zijn er bijvoorbeeld verschillende bekende " hobbels " in het groeitraject op verschillende punten van de levenscyclus. Er is gevonden dat niet-parametrische modellen deze niet-lineariteiten beter passen en benaderen dan parametrische modellen.
- Over de statistische kwesties: zoals gezegd, neemt de dip-test unimodaliteit als referentie. Ik denk niet dat ' afwijkingen ervan kunnen worden geïnterpreteerd in termen van het aantal modi alleen vanaf de P-waarde. Ik ' heb het veel nuttiger gevonden om het aantal modi te interpreteren met een combinatie van dichtheidsschatting en inhoudelijke interpretatie.
Antwoord
Mr. Freeman (auteur van de paper waarover ik je vertelde) vertelde me dat hij eigenlijk alleen naar de P-waarde van de dip-test keek. Deze verwarring komt voort uit zijn zin:
“HDS-waarden variëren van 0 tot 1 met waarden kleiner dan .05 die significante bimodaliteit aangeven, en waarden groter dan .05 maar minder dan .10 duiden op bimodaliteit met marginale betekenis” . HDS-waarden komen overeen met de P-waarde en niet met de dip-teststatistieken. Het was onduidelijk in de krant.
Mijn analyse is goed: de dip-teststatistieken nemen toe als de distributie afwijkt van een unimodale distributie.
Bimodaliteitstest en Silverman-test kunnen ook gemakkelijk worden berekend in R en doen het werk goed.
Opmerkingen
- Registreer & voeg uw accounts samen. U vindt informatie over hoe u dit kunt doen in het gedeelte Mijn account van onze helpcentrum .
Geef een reactie