哈尔蒂冈人的浸水测试的解释


18

我想找到一种方法来量化我凭经验获得的某些分布的双峰强度。据我了解,关于量化双峰态的方法仍有一些争议。我选择使用Hartigans的Dip测试,这似乎是R上唯一可用的测试(原始论文:http : //www.stat.washington.edu/wxs/Stat593-s03/Literature/hartigan85a.pdf)。Hartigans的倾角测试定义为:“倾角测试通过经验分布函数和最小化最大差异的单峰分布函数之间的所有样本点上的最大差来度量样本中的多峰”

我想完全理解在使用统计信息之前应该如何解释。我期望如果分布是多峰的(将其定义为“与单峰分布的最大差异”),则浸入试验会增加。但是:您可以在Wikipedia页面上阅读有关多峰分布的信息:“小于0.05的值表示显着的双峰,而大于0.05但小于0.10的值表明双峰具有边际意义。” 。这种说法来自本文(图2)。根据本文,当分布为双峰时,浸入测试指数接近于0。这让我感到困惑。

为了正确解释Hartigans的Dip测试,我构造了一些分布(原始代码从这里开始),然后增加了exp(mu2)的值(从现在开始称为“双模强度” -编辑:我应该将其称为“强度”双峰的”),以获得双峰。在第一个图中,您可以看到一些分布示例。然后,我估计了与那些不同的模拟分布相关的浸入测试指数(第二张图)和p值(第三幅图)(包装浸入测试)。使用的R代码在我的文章结尾。

我在这里展示的是,当分配为双峰时,倾角测试指数较高,而Pvalue较低。这与您可以在互联网上阅读的内容相反。

我不是统计学专家,所以我几乎不了解Hartigans的论文。我想就正确解释Hartigans浸测的正确方式发表一些意见。我在哪里错了?

谢谢你们。问候,

TA

模拟分布示例: 模拟分布示例

哈蒂根氏浸测指数相关: 在此处输入图片说明

Hartigan的Dip测试p.value相关联: 在此处输入图片说明

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
关于任何统计学家的标准都是不可思议的话题,非常彻底的问题得以解决。甚至在进入解释之前,显而易见的第一个问题是:“为什么需要此测试?它打算传达什么信息?” 能否为导致您进入“浸测”结果解释的下游问题的动机提供更多的背景信息?换句话说,除了R编程的便利性之外,哪种逻辑路径首先导致您进行“浸入测试”?
Mike Hunter 2015年

谢谢您的回答,迈克。我正在研究进化生物学的理论模型,并且正在进行敏感性分析。特别是,我观察到改变某些参数会改变输出变量从单峰到双峰的分布(这实际上非常有趣)。这就是为什么我要寻找一个简单的统计数据来描述分布的多模数。这将使我能够将灵敏度分析的重点放在多模数上。
TA 2015年

我发现可以在R中轻松计算出倾角测试,并且可以量化单峰分布的偏差。当然,我对其他描述分布的多模数的统计数据真的很感兴趣。
TA 2015年

嗯...拟合一些简单的多项式可能相当于“穷人”的方法来处理您所观察到的曲线,并且比Hartigan的测试更容易部署和解释。您没有说您的问题是否包括处理任何增长职能。例如,在人类发展中,生命周期不同点的增长轨迹中有几个众所周知的“凸点”。已经发现,与参数模型相比,非参数模型可以更好地拟合和近似这些非线性。
Mike Hunter

1
关于统计问题:如上所述,浸入测试以单峰性为参考。我认为不能仅凭P值就可以用模态数来解释它的偏离。我发现,结合密度估计和实质性解释来解释多种模式非常有用。
Nick Cox

Answers:


6

弗里曼先生(我告诉过你的论文的作者)告诉我,他实际上只是在看浸洗测试的Pvalue。这种混淆来自于他的一句话:
“ HDS值范围从0到1,值小于.05表示具有显着的双峰性,而值大于.05但小于.10则表明具有双峰性的双峰性”。HDS值对应于Pvalue,而不对应于浸入测试统计数据。该文件尚不清楚。

我的分析很好:当分布偏离单峰分布时,浸入检验统计量会增加。

双峰检验和Silverman检验也可以很容易地在R中计算出来,并且做得很好。


1
请注册并合并您的帐户。您可以在我们的帮助中心的“ 我的帐户”部分中找到有关如何执行此操作的信息。
恢复莫妮卡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.