• R语言
  • bimodal分布的曲线如何拟合

[attachment=90]

有一套数据的分布有双峰,经NOCOM(http://linkage.rockefeller.edu/ott/nocom.htm)检测是显著的,NOCOM使用EM算法,根据你提供的两个分布的均值和标准差估算出均值和标准差。现在我想拟合两个曲线,类似于这张图。这个图的文章好像是根据均值和标准差直接画上去的。不知道R里面有没有这种函数?
按照正态分布,根据两个峰的均值和标准差,也是原文章中作者的方法。
<br />
bi.data <- c(rnorm(1000,mean=2,sd=0.2),rnorm(1000,mean=2.5,sd=0.2))<br />
bi.data <- sort(bi.data)<br />
hist(bi.data,breaks=100,freq=F)<br />
a1 <- 0.5*dnorm(bi.data,mean=2,sd=0.2)<br />
lines(bi.data,a1,col="blue")<br />
a2 <- 0.5*dnorm(bi.data,mean=2.5,sd=0.2)<br />
lines(bi.data,a2,col="blue")<br />


[attachment=92]
上面做法不严格

经典的方法是gaussian mixture model,看成两个正态分布的混合:EM算法或者MCMC估计参数

当然,其他指数分布族的混合也可
多谢关注!补充一点,这个均值和标准差是用NOCOM根据EM算法估算出来的。这个曲线是根据EM估算出来的均值和标准差画的。
同意2楼, a bimodal 分布的曲线 is not the superimposed two curves from each model. The desired pdf  is the sum of two weighted normals.
R中也有专门做gaussian mixture的包,应该可以搜到。