[R] Implementation of quasi-bayesian maximum likelihood estimation for normal mixtures
Helena Richter
helenar at gmx.de
Sat Feb 28 14:08:24 CET 2009
Hi,
as you can see in the topic, I am trying to fit a normal mixture
distribution with the approach suggested by Hamilton (1991). Since I
couldn't find any existing packages including the quasi-bayesian mle, I
have to write my own function. Unfortunately, I have absolutely no
experience in doing this.
If you're not familiar with the QB-MLE, I attached the formula as pdf.
The idea is to extend the usual MLE with prior beliefs about the values
sigma_n and sigma_b. My priors are already included in the code below. I
intend to try a mixture of two normal distributions with same mean, and
variances 1 and 5 as starting values.
This is what I've done so far:
> R <-read.table("C:\\...\\rendite.txt", header=F)
> qbmle <- function(p, data){
mu <- mean(data);
(-sum(log(p[1]/p[2]*exp(-0.5*(data-mu)^2/p[2]^2)+(1-p[1])/p[3]*exp(-0.5*data^2/p[3]^2)))-2.772*log(p[2]^2)-2.772*log(p[3]^2)
- 2.772/p[2]^2 - 13.86/p[3]^2 )}
> start <-c(0.9, 1, 5)
> out <- nlm(qbmle, start, data=R)
The result is: error in nlm(...): non-finite value for nlm, plus a lot
of warnings, and the following output:
> out
$minimum
[1] -27513.60
$estimate
[1] 3.478212e+04 -2.146767e+03 -3.806269e-02
$gradient
[1] -5.971628e-02 1.939856e-03 -2.946156e+02
$code
[1] 5
$iterations
[1] 49
So, what did I do wrong? How can I implement any non-negative
constraints, and a restriction for p to be between 0 and 1?
I'm sorry to bother you with such a beginner's question and am very
helpful for any remarks. I don't have to use the qb-mle so if you think
there's a better way to do the estimation tell me.
Thanks a lot,
Helena
-------------- next part --------------
A non-text attachment was scrubbed...
Name: formula.pdf
Type: application/pdf
Size: 33969 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20090228/82248d12/attachment-0002.pdf>
More information about the R-help
mailing list