Hartigans의 딥 테스트 해석


18

나는 경험적으로 얻은 일부 분포의 이형성 강도를 정량화하는 방법을 찾고 싶습니다. 내가 읽은 것으로부터, 바이 모달리티를 정량화하는 방법에 대한 논쟁이 여전히 남아 있습니다. 나는 R에서 사용할 수있는 유일한 것 인 Hartigans의 딥 테스트를 사용하기로 선택했습니다 (원본 : http://www.stat.washington.edu/wxs/Stat593-s03/Literature/hartigan85a.pdf ). Hartigans의 딥 테스트는 다음과 같이 정의됩니다. " 딥 테스트는 모든 샘플 포인트에 대해 경험적 분포 함수와 최대 차이를 최소화하는 단봉 분포 함수 사이의 최대 차이로 샘플의 다중 양식을 측정 합니다. "

이 통계를 사용하기 전에 어떻게 해석해야하는지 완전히 이해하고 싶습니다. 분포가 다중 모드 일 경우 딥 테스트가 증가 할 것으로 예상했습니다 ( "단일 분포와의 최대 차이"로 정의 됨). 그러나 : 당신은 wikipedia 페이지에서 multimodal distribution에 대해 읽을 수 있습니다 . . 이러한 진술은이 논문 에서 나옵니다 (그림 2). 이 논문에 따르면, 딥 테스트 지수는 분포가 양봉일 때 0에 가깝습니다. 혼란 스러워요.

Hartigans의 딥 테스트를 올바르게 해석하기 위해 일부 배포판을 작성했으며 (원본 코드는 여기에서 제공 ) exp (mu2)의 값을 늘 렸습니다 ( '이중 강도 강도') -편집 : 나는 그것을 '강도'라고 불렀어야합니다 바이 모달리티 ' ) 의 바이 모달리티 를 얻습니다. 첫 번째 그래프에서 분포의 예를 볼 수 있습니다. 그런 다음 I는 diptest 인덱스 (제 그래프) 및 p의 값 (제 3 graphe) 연관 (패키지 추정 diptest 것과 상이한 분포 시뮬레이션을 행). 사용 된 R 코드는 내 게시물의 끝에 있습니다.

여기서 보여주는 것은 딥 테스트 지수가 높고 분포가 양봉일 때 P 값이 낮다는 것입니다. 인터넷에서 읽을 수있는 것과 반대되는 것입니다.

나는 통계 전문가가 아니기 때문에 Hartigans의 논문을 간신히 이해했습니다. Hartigans의 딥 테스트를 올바르게 해석하는 방법에 대한 의견을 듣고 싶습니다. 내가 어딘가에 잘못인가?

모두 감사합니다. 문안 인사,

고마워

시뮬레이션 된 분포의 예 : 시뮬레이트 된 분포의 예

Hartigan의 딥 테스트 인덱스 관련 : 여기에 이미지 설명을 입력하십시오

Hartigan의 딥 테스트 p. 값 관련 : 여기에 이미지 설명을 입력하십시오

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
통계학 자의 표준에 의해 논란이되는 주제에 대해 매우 철저한 질문을합니다. 가장 먼저 해석 해야 할 첫 번째 질문 은 "왜이 테스트가 필요한가요? 어떤 정보를 전달하기위한 것입니까?"입니다. "딥 테스트"결과의 해석에 대한 훨씬 더 다운 스트림 문제를 야기한 동기에 대한 추가 컨텍스트를 제공 할 수 있습니까? 다시 말하면, 편의성 RRT 프로그래밍 이외의 논리 경로를 통해 "딥 테스트"가 시작된 이유는 무엇입니까?
Mike Hunter

답변 해 주셔서 감사합니다, 마이크 나는 진화 생물학에서 이론적 모델을 연구하고 있고 민감도 분석을 수행하고 있습니다. 특히, 일부 매개 변수를 변경하면 출력 변수의 분포를 단봉에서 이봉 (실제로 매우 흥미 로움)으로 수정합니다. 그렇기 때문에 분포의 다중 모듈성을 설명하는 간단한 통계를 찾고 있습니다. 다중 모듈성에 대한 민감도 분석에 집중할 수 있습니다.
TA

나는 딥 테스트가 R로 쉽게 계산 될 수 있고 단봉 분포로부터의 이탈을 정량화 할 수 있음을 알아 냈습니다. 물론, 나는 분포의 다중 모듈성을 설명하는 다른 통계에 정말로 관심이 있습니다.
TA

흠 ... 몇 가지 겸손한 다항식에 적합하면 관찰하는 곡선을 다루는 "가난한 사람"접근 방식에 해당 할 수 있으며 Hartigan의 테스트보다 더 쉽게 배포 및 해석 될 수 있습니다. 당신은 당신의 문제에 어떤 성장 기능을 다루는 것이 포함되어 있는지 말하지 않습니다. 예를 들어, 인간 발달에서, 생애주기의 별개의 지점에서 성장 궤적에 몇 가지 잘 알려진 "범프"가 있습니다. 비모수 적 모델은 파라 메트릭 모델보다 이러한 비선형성에 더 잘 맞고 근사한 것으로 밝혀졌습니다.
Mike Hunter

1
통계적 문제에 대해 : 언급 한 바와 같이, 딥 테스트는 단일성 기준을 기준으로합니다. 나는 그것으로부터의 이탈이 P 값에서 나온 모드의 수로 해석 될 수 있다고 생각하지 않습니다. 밀도 추정과 실질적인 해석의 조합으로 여러 모드를 해석하는 것이 매우 유용하다는 것을 알았습니다.
Nick Cox

답변:


6

Freeman 씨 ( 내가 말한 논문의 저자 )는 그가 실제로 딥 테스트의 Pvalue 만보고 있다고 말했습니다. 그의 혼동은 그의 문장에서 비롯된다 :
"HDS 값은 0에서 1까지이며 값이 0.05보다 작은 값은 유의 한 이정도를 나타내며, 0.05보다 크지 만 0.1보다 작 으면 값이 중요하지 않다 . " HDS 값은 딥 테스트 통계가 아니라 P 값에 해당합니다. 논문에서 불분명했다.

나의 분석은 양호하다 : 분포가 단봉 분포에서 벗어나면 딥 테스트 통계가 증가한다.

Bimodality 테스트와 Silverman의 테스트는 R에서 쉽게 계산할 수 있으며 작업을 잘 수행 할 수 있습니다.


1
계정을 등록하고 병합하십시오. 도움말 센터내 계정 섹션 에서이 작업을 수행하는 방법에 대한 정보를 찾을 수 있습니다 .
gung-Monica Monica 복원
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.