Hartigans의 해석 ' 딥 테스트
On 11월 18, 2020 by admin일부 쌍봉 성의 강도를 정량화하는 방법을 찾고 싶습니다. 경험적으로 얻은 분포. 내가 읽은 바에 따르면, bimodality를 정량화하는 방법에 대한 논쟁이 여전히 있습니다. R에서 사용할 수있는 유일한 것으로 보이는 Hartigans “딥 테스트를 사용하기로 선택했습니다 (원본 문서 : http://www.stat.washington.edu/wxs/Stat593-s03/Literature/hartigan85a.pdf ). Hartigans “딥 테스트는 다음과 같이 정의됩니다. “딥 테스트는 모든 샘플 포인트에서 경험적 분포 함수와 최대 차이를 최소화하는 단봉 분포 함수 사이의 최대 차이로 샘플의 다중 모드를 측정합니다. “.
이 통계를 사용하기 전에이 통계를 어떻게 해석해야하는지 완전히 이해하고 싶습니다. 나는 분포가 다중 모드 ( “단봉 분포와의 최대 차이”로 정의 됨) 인 경우 딥 테스트가 증가 할 것으로 예상했습니다. 그러나 : 위키피디아 페이지에서 다중 모드 분포에 대해 “0.05 미만의 값은 중요한 이중 모드 및 값을 나타냅니다. 0.05보다 크지 만 0.10보다 작 으면 한계 유의성이있는 이중 모드를 의미합니다. “. 이러한 진술은이 문서 에서 나왔습니다 (그림 2). 이 논문에 따르면 분포가 바이 모달 일 때 딥 테스트 지수는 0에 가깝습니다. 혼란 스럽습니다.
Hartigans “딥 테스트를 올바르게 해석하기 위해 배포본을 구성했습니다 (원본 코드는 여기 에서 가져옴). exp (mu2)의 값 (지금부터 -Edit : “Intensity of bimodality”라고 불렀어야 함)이 bimodality를 얻습니다. 첫 번째 그래프에서 볼 수 있습니다. 분포의 몇 가지 예. 그런 다음 여러 시뮬레이션 된 분포와 관련된 diptest 인덱스 (두 번째 그래프)와 p 값 (세 번째 그래프) (패키지 diptest )을 추정했습니다. 사용 된 R 코드는 내 게시물입니다.
여기서 보여 드리는 것은 분포가 바이 모달 일 때 딥 테스트 지수가 높고 Pvalue가 낮다는 것입니다. 인터넷에서 읽을 수있는 것과는 반대입니다.
나는 통계 전문가가 아니기 때문에 Hartigans의 논문을 거의 이해하지 못했습니다. Hartigans “딥 테스트를 올바른 방식으로 해석하는 방법에 대한 의견을 받고 싶습니다. 제가 어딘가에서 틀렸나 요?
모두 감사합니다. 감사합니다.
TA
시뮬레이션 된 분포의 예 :
관련된 Hartigan의 딥 테스트 색인 :
Hartigan s dip test p.value associated :
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
댓글
- 통계학 자의 기준으로 알 수없는 주제에 대한 철저한 질문 작업 ' . 해석 에 들어가기 전에 분명한 첫 번째 질문은 "이 테스트가 필요한 이유는 무엇입니까? 어떤 정보를 전달하기위한 것입니까? "의 훨씬 더 많은 다운 스트림 문제로 이끈 동기에 대한 추가 컨텍스트를 제공 할 수 있습니다. " dip 테스트의 결과 해석? " 즉, 다른 것 '의 편의성 wrt R 프로그래밍, 어떤 논리 경로로 인해 처음에 " dip 테스트 "로 연결 되었나요?
- 답변 해 주셔서 감사합니다, Mike. 저는 ' 진화 생물학의 이론적 모델을 작업 중이며 민감도 분석을 수행하고 있습니다. 특히, 일부 매개 변수를 변경하면 출력 변수의 분포가 단봉 형에서 쌍봉 형 (실제로 매우 흥미 롭습니다)으로 변경되는 것을 관찰합니다. 이것이 ' ' 분포의 다중 모듈성을 설명하는 간단한 통계를 찾는 이유입니다. 다중 모듈성에 대한 민감도 분석에 초점을 맞출 수있었습니다.
- Dip 테스트는 R에서 쉽게 계산할 수 있고 단일 모드 분포의 편차를 정량화 할 수 있다는 것을 발견했습니다. 물론 분포의 다중 모듈성을 설명하는 다른 통계에 정말 관심이있을 것입니다.
- 흠 … 몇 가지 겸손한 다항식을 맞추는 것은 " 가난한 사람 ' " 당신이 관찰하고있는 곡선 성을 다루기위한 ' 접근 Hartigan '의 테스트보다 더 쉽게 배포하고 해석 할 수 있습니다. ' 문제에 성장 기능 처리가 포함되는지 여부를 말하지 않습니다.예를 들어, 인간 발달 과정에서 생애주기의 각기 다른 지점에서 성장 궤적에 잘 알려진 " 범프 "가 있습니다. 비모수 모델은 매개 변수 모델보다 이러한 비선형 성을 더 잘 맞추고 근사화하는 것으로 밝혀졌습니다.
- 통계 문제 : 언급했듯이 딥 테스트는 단일성을 참조로 사용합니다. 저는 ' 이탈이 P- 값의 모드 수로 해석 될 수 있다고 생각하지 않습니다. 저는 ' 밀도 추정과 실질적인 해석을 조합하여 모드 수를 해석하는 것이 훨씬 더 유용하다는 것을 발견했습니다.
답변
Mr. Freeman ( 논문 의 저자)은 그가 실제로 딥 테스트의 P 값만보고 있다고 말했습니다. 이 혼란은 그의 문장에서 비롯됩니다.
“HDS 값은 0에서 1까지의 값이 .05보다 작은 값은 중요한 이중 모드를 나타내고 .05보다 크지 만 .10보다 작은 값은 한계 중요성이있는 이중 모드를 나타냅니다.”. HDS 값은 딥 테스트 통계가 아니라 P 값에 해당합니다. 신문에서는 불분명했습니다.
내 분석은 훌륭합니다. 분포가 단봉 분포에서 벗어나면 딥 테스트 통계가 증가합니다.
Bimodality 테스트와 Silverman의 테스트는 R에서도 쉽게 계산할 수 있으며 작업을 잘 수행합니다.
코멘트
- 등록하십시오 & 계정을 병합하십시오.이를 수행하는 방법에 대한 정보는 <의 내 계정 섹션에서 찾을 수 있습니다. / div> 도움말 센터 .
답글 남기기