Interpretação de Hartigans ' teste de mergulho
On Novembro 18, 2020 by adminGostaria de encontrar uma maneira de quantificar a intensidade da bimodalidade de alguns distribuições que obtive empiricamente. Pelo que li, ainda há algum debate sobre a forma de quantificar a bimodalidade. Eu escolhi usar o teste de mergulho de Hartigan, que parece ser o único disponível em R (artigo original: http://www.stat.washington.edu/wxs/Stat593-s03/Literature/hartigan85a.pdf ). O teste de mergulho de Hartigans é definido como: “O teste de mergulho mede a multimodalidade em uma amostra pela diferença máxima, em todos os pontos da amostra, entre a função de distribuição empírica e a função de distribuição unimodal que minimiza essa diferença máxima” .
Gostaria de entender completamente como devo interpretar essas estatísticas antes de usá-las. Eu esperava que o teste de mergulho aumentasse se a distribuição fosse multimodal (como é definido como “a diferença máxima da distribuição unimodal”). Mas : você pode ler na página wikipedia sobre distribuição multimodal que “Valores menores que 0,05 indicam bimodalidade e valores significativos maior que 0,05, mas menor que 0,10, sugere bimodalidade com significância marginal. “. Essa declaração vem deste artigo (Fig. 2). De acordo com este artigo, o índice do teste de mergulho é próximo a 0 quando a distribuição é bimodal. Isso me confunde.
Para interpretar corretamente o “teste dip de Hartigan, eu construí algumas distribuições (o código original é de aqui ) e aumentei o valor de exp (mu2) (denominado “Intensidade de bimodularidade” de agora em diante – Editar: eu deveria ter chamado de “Intensidade de bimodalidade” ) para obter a bimodalidade. No primeiro gráfico, você pode ver alguns exemplos de distribuições. Em seguida, estimei o índice de teste (segundo gráfico) e o valor p (terceiro gráfico) associado (pacote teste de teste ) a essas diferentes distribuições simuladas. O código R usado está no final de minha postagem.
O que mostro aqui é que o índice do teste de mergulho é alto e o Pvalue é baixo quando as distribuições são bimodais. O que é contrário ao que você pode ler na internet.
Não sou especialista em estatística, então mal entendi o artigo de Hartigan”. Gostaria de obter alguns comentários sobre a maneira correta de interpretar o teste de mergulho de Hartigan. Estou errado em algum lugar?
Obrigado a todos. Atenciosamente,
TA
Exemplo de distribuição simulada:
Índice de teste de mergulho de Hartigan associado:
Teste de mergulho de Hartigan p.value associado:
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
Comentários
- Questões bem elaboradas sobre um tópico que é misterioso por qualquer estatístico ' padrões . A primeira pergunta óbvia, antes mesmo de entrar na interpretação , é: " Por que você precisa deste teste? Que informações ele pretende comunicar? " Pode fornecer algum contexto adicional para as motivações que o levaram a uma questão muito, muito mais posterior do interpretação dos resultados do " teste de mergulho? " Em outras palavras, diferente dele ' por conveniência em relação à programação R, que caminho da lógica o levou ao " teste de mergulho " em primeiro lugar?
- Obrigado por sua resposta, Mike. Eu ' estou trabalhando em um modelo teórico em biologia evolutiva e estou realizando uma análise de sensibilidade. Em particular, observo que a variação de alguns parâmetros modifica a distribuição de uma variável de saída de unimodal para bimodal (o que é realmente muito interessante). É ' por isso que ' estou procurando uma estatística simples para descrever a multimodularidade de uma distribuição. Isso me permitiria focar a análise de sensibilidade na multimodularidade.
- Eu descobri que o teste de mergulho poderia ser facilmente calculado em R e que poderia quantificar o desvio de uma distribuição unimodal. Claro, eu estaria realmente interessado em qualquer outra estatística que descreva a multimodularidade de uma distribuição.
- Hmmm … ajustar alguns polinômios humildes pode resultar em um " pobre homem ' s " abordagem para lidar com a curvilinearidade que você ' está observando e pode ser implementado e interpretado mais prontamente do que o teste de Hartigan ' s. Você não ' não diz se seus problemas incluem lidar com funções de crescimento.Por exemplo, no desenvolvimento humano, existem várias " saliências " conhecidas na trajetória de crescimento em pontos distintos do ciclo de vida. Os modelos não paramétricos se ajustam melhor e se aproximam dessas não linearidades do que os modelos paramétricos.
- Sobre as questões estatísticas: Como dito, o teste de mergulho toma a unimodalidade como referência. Eu não ' não acho que os desvios dele possam ser interpretados em termos do número de modos apenas a partir do valor P. Eu ' achei imensamente mais útil interpretar o número de modos com uma combinação de estimativa de densidade e interpretação substantiva.
Resposta
Sr. Freeman (autor do artigo de que falei) disse-me que, na verdade, estava olhando apenas para o Pvalue do teste de mergulho. Essa confusão vem de sua frase:
“Os valores de HDS variam de 0 a 1 com valores menores que 0,05 indicando bimodalidade significativa, e valores maiores que 0,05, mas menores que 0,10, sugerindo bimodalidade com significância marginal” . Os valores HDS correspondem ao valor P, e não às estatísticas do teste de mergulho. Não estava claro no jornal.
Minha análise é boa: as estatísticas do teste de mergulho aumentam quando a distribuição é diferente de uma distribuição unimodal.
O teste de bimodalidade e o teste de Silverman também podem ser calculados facilmente em R e funcionam bem.
Comentários
- Registre & mesclar suas contas. Você pode encontrar informações sobre como fazer isso na seção Minha conta de nossa centro de ajuda .
Deixe uma resposta