[R] how to estimate parameters of multimodal distribution
Petr Pikal
petr.pikal at precheza.cz
Thu Apr 10 12:14:20 CEST 2003
Dear all
Please, is there any function or package for dealing with multimodal distributions?
I try to fit multimodal distribution or more precisely to find out mixture of normal
distributions which can lead to my actual data.
I use optim to find (in that case) two parameters but what I want is to let the
function find out arbitrary number of normal distributions underlaying my actual
data and estimate all parameters automatically. Actually I want to elaborate some
function which is similar to procedures used for evaluating DTA, IR or XRD
spectra. Is the optim way suitable for this task?
I would be gratefull for **any** hint.
Here is some artificial example.
# making two normals and putting them together
x<-seq(5,100,5)
y1<-abs(dnorm(x,30,5)+rnorm(20,0,.002))
y2<-abs(dnorm(x,60,10)+rnorm(20,0,.002))
y<-y1+y2
y<-y/sum(y)*100
# *** my data actually look like this***
n<-round(y/sum(y)*100)
opt<-optim(c(5,10),fff)
matplot(x,cbind(y,fff2(c(5.3,10))),type="l")
# quite OK but I need a little bit more general solution
fff<-function(p)
{
p1<-p[1]
p2<-p[2]
v<-dnorm(x,30,p1)+dnorm(x,60,p2)
s<-sum(v)
sum((y-v/s)^2)
}
fff2<-function(p)
{
p1<-p[1]
p2<-p[2]
v<-dnorm(x,30,p1)+dnorm(x,60,p2)
s<-sum(v)
v/s
}
Thank you very much for any help.
Best regards.
Petr Pikal
petr.pikal at precheza.cz
p.pik at volny.cz
More information about the R-help
mailing list