Interpretação do teste de mergulho de Hartigans


18

Gostaria de encontrar uma maneira de quantificar a intensidade da bimodalidade de algumas distribuições que recebi empiricamente. Pelo que li, ainda há algum debate sobre a maneira de quantificar a bimodalidade. Eu escolhi usar o teste de imersão de Hartigans, 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" .

Eu 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 é definida como "a diferença máxima da distribuição unimodal"). Mas : você pode ler na página da wikipedia sobre distribuição multimodal que "Valores menores que 0,05 indicam bimodalidade significativa e valores maiores que 0,05, mas menores que 0,10 sugerem bimodalidade com significância marginal". . Essa afirmação vem deste artigo (Fig. 2). De acordo com este artigo, o índice de teste de mergulho é próximo de 0 quando a distribuição é bimodal. Isso me confunde.

Para interpretar corretamente o teste de imersão dos Hartigans, construí algumas distribuições (o código original é daqui ) e aumentei o valor de exp (mu2) (chamado 'Intensidade de bimodularidade' a partir de agora - Edit: Eu deveria ter chamado de 'Intensidade da bimodalidade ' ) para obter a bimodalidade. No primeiro gráfico, você pode ver alguns exemplos de distribuições. Em seguida, estimei o índice diptest (segundo gráfico) e o valor p (terceiro graphe) associado ( diptest do pacote ) às diferentes distribuições simuladas. O código R usado está no final da 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, de modo que mal entendi o trabalho de Hartigans. Gostaria de receber alguns comentários sobre a maneira correta de interpretar o teste de imersão de Hartigans. Estou errado em algum lugar?

Obrigado a todos. Saudações,

TA

Exemplo de distribuição simulada: Exemplo de distribuição simulada

O índice de teste de mergulho de Hartigan associado: insira a descrição da imagem aqui

Valor do teste de mergulho de Hartigan associado a: insira a descrição da imagem aqui

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

3
Uma pergunta muito minuciosa elabora um tópico que é misterioso para os padrões de qualquer estatístico. As primeiras perguntas óbvias, antes mesmo que alguém entre na interpretação , é: "Por que você precisa desse teste? Que informações ele pretende comunicar?" Pode fornecer algum contexto adicional para as motivações que o levaram à questão muito mais adiante da interpretação dos resultados do "teste de imersão"? Em outras palavras, além da conveniência na programação R, que caminho da lógica levou você ao "teste de mergulho" em primeiro lugar?
Mike Hunter

Obrigado pela resposta, Mike. 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.
TA

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 outras estatísticas que descrevessem a multimodularidade de uma distribuição.
TA

Hmmm ... encaixar alguns polinômios humildes pode equivaler a uma abordagem de "homem pobre" para lidar com a curvilinearidade que você está observando e pode ser mais facilmente implantada e interpretada do que o teste de Hartigan. Você não diz se seus problemas incluem lidar com quaisquer funções de crescimento. Por exemplo, no desenvolvimento humano, existem várias "colisões" bem conhecidas na trajetória de crescimento em pontos distintos do ciclo de vida. Verificou-se que modelos não paramétricos melhor se ajustam e aproximam essas não linearidades do que os modelos paramétricos.
Mike Hunter

1
Sobre as questões estatísticas: Como dito, o teste de mergulho toma a unimodalidade como referência. Não acho que desvios dele possam ser interpretados em termos do número de modos apenas a partir do valor-P. Achei imensamente mais útil interpretar o número de modos com uma combinação de estimativa de densidade e interpretação substantiva.
Nick Cox

Respostas:


6

O Sr. Freeman (autor do artigo sobre o qual lhe falei) me disse que na verdade estava olhando apenas para o Pvalue do teste de mergulho. Essa confusão vem de sua sentença:
"Os valores do 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 Pvalue, e não às estatísticas do teste de mergulho. Não ficou claro no jornal.

Minha análise é boa: as estatísticas do teste DIP aumentam quando a distribuição é desviada de uma distribuição unimodal.

O teste de bimodalidade e o teste de Silverman também podem ser computados facilmente em R e fazer o trabalho bem.


1
Registre e mescle suas contas. Você pode encontrar informações sobre como fazer isso na seção Minha conta da nossa Central de Ajuda .
gung - Restabelece Monica
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.