Interprétation des Hartigans ' dip test
On novembre 18, 2020 by adminJe voudrais trouver un moyen de quantifier lintensité de bimodalité de certains distributions que jai obtenues empiriquement. Daprès ce que jai lu, il y a encore un débat sur la façon de quantifier la bimodalité. Jai choisi dutiliser le test de dip de Hartigans qui semble être le seul disponible sur R (papier original: http://www.stat.washington.edu/wxs/Stat593-s03/Literature/hartigan85a.pdf ). Le test de creux de Hartigans est défini comme suit: «Le test de creux mesure la multimodalité dans un échantillon par la différence maximale, sur tous les points déchantillonnage, entre la fonction de distribution empirique et la fonction de distribution unimodale qui minimise cette différence maximale» .
Je voudrais comprendre complètement comment je dois interpréter ces statistiques avant de les utiliser. Je mattendais à ce que le test dimmersion augmente si la distribution est multimodale (car elle est définie comme «la différence maximale par rapport à la distribution unimodale»). Mais : vous pouvez lire sur la page wikipedia sur la distribution multimodale que « Les valeurs inférieures à 0,05 indiquent une bimodalité et des valeurs significatives supérieur à 0,05 mais inférieur à 0,10 suggère une bimodalité avec une signification marginale. « . Une telle déclaration provient de cet article (Fig. 2). Selon cet article, lindice de test de trempage est proche de 0 lorsque la distribution est bimodale. Cela me trouble.
Pour interpréter correctement le test de dip de Hartigans, jai construit quelques distributions (le code original est de ici ) et jai augmenté la valeur de exp (mu2) (appelée désormais « Intensité de la bimodularité » – Edit: jaurais dû lappeler « Intensité de la bimodalité » ) pour obtenir la bimodalité. Dans le premier graphique, vous pouvez voir quelques exemples de distributions. Ensuite, jai estimé lindex diptest (deuxième graphe) et la valeur p (troisième graphe) associés (package diptest ) à ces différentes distributions simulées. Le code R utilisé est à la fin de mon message.
Ce que je montre ici, cest que lindice de test de dip est élevé et la Pvalue est faible lorsque les distibutions sont bimodales. Ce qui est contraire à ce que vous pouvez lire sur Internet.
Je ne suis pas un expert en statistiques, donc jai à peine compris larticle de Hartigans. Jaimerais avoir quelques commentaires sur la bonne façon dinterpréter le test dip de Hartigans « . Est-ce que je me trompe quelque part?
Merci à tous. Cordialement,
TA
Exemple de distribution simulée:
Indice de test de creux de Hartigan associé:
Test de creux de Hartigan p.value associée:
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
Commentaires
- Élaboration de questions très approfondies sur un sujet qui est obscur selon les normes de tout statisticien ' . La première question évidente, avant même d’entrer dans l interprétation est: " Pourquoi avez-vous besoin de ce test? Quelles informations est-il destiné à communiquer? " Peut fournir un contexte supplémentaire pour les motivations qui vous ont conduit à la question beaucoup plus en aval de la interprétation des résultats du " dip test? " En dautres termes, autre que celui-ci ' La commodité de div avec la programmation R, quel chemin de logique vous a conduit au " dip test " en premier lieu?
- Merci pour votre réponse, Mike. Je ' m travaille sur un modèle théorique en biologie évolutive et je mène une analyse de sensibilité. En particulier, jobserve que la variation de certains paramètres modifie la distribution dune variable de sortie dunimodale à bimodale (ce qui est en fait très intéressant). Cest ' pourquoi je ' recherche une statistique simple pour décrire la multimodularité dune distribution. Cela me permettrait de concentrer lanalyse de sensibilité sur la multimodularité.
- Jai découvert que le test de dip pouvait être facilement calculé dans R et quil pouvait quantifier lécart à partir dune distribution unimodale. Bien sûr, je serais vraiment intéressé par toute autre statistique décrivant la multimodularité dune distribution.
- Hmmm … lajustement de quelques modestes polynômes pourrait équivaloir à un " le pauvre homme ' s " approche de la curvilinéarité que vous ' observez et pourrait être plus facilement déployé et interprété que le test de Hartigan '. Vous ne dites pas ' si vos problèmes incluent la gestion des fonctions de croissance.Par exemple, dans le développement humain, il existe plusieurs " bosses " bien connus dans la trajectoire de croissance à des moments distincts du cycle de vie. Les modèles non paramétriques ont été trouvés pour mieux ajuster et approximer ces non-linéarités que les modèles paramétriques.
- Sur les questions statistiques: comme dit, le test de dip prend lunimodalité comme référence. Je ne ' t pense que les écarts peuvent être interprétés en termes de nombre de modes uniquement à partir de la valeur P. ' jai trouvé immensément plus utile dinterpréter le nombre de modes avec une combinaison destimation de densité et dinterprétation de fond.
Réponse
M. Freeman (auteur de l article dont je vous ai parlé) ma dit quil ne regardait en fait que la valeur P du test de dip. Cette confusion vient de sa phrase:
« Les valeurs HDS vont de 0 à 1 avec des valeurs inférieures à 0,05 indiquant une bimodalité significative, et des valeurs supérieures à 0,05 mais inférieures à 0,10 suggérant une bimodalité avec une signification marginale » . Les valeurs HDS correspondent à la valeur P, et non aux statistiques du test dimmersion. Ce nétait pas clair dans le journal.
Mon analyse est bonne: les statistiques du test de creux augmentent lorsque la distribution sécarte dune distribution unimodale.
Le test de bimodalité et le test de Silverman peuvent également être calculés facilement dans R et bien faire le travail.
Commentaires
- Veuillez vous inscrire & pour fusionner vos comptes. Vous trouverez des informations sur la façon de procéder dans la section Mon compte de notre centre daide .
Laisser un commentaire