While having breakfast (after an early morn swim at the vintage La Butte aux Cailles pool, which let me in free!), I noticed a letter to the Editor in the Annals of Applied Statistics, which I was unaware existed. (The concept, not this specific letter!) The point of the letter was to indicate that finding the MLE for the mean and variance of a folded normal distribution was feasible without resorting to the EM algorithm. Since the folded normal distribution is a special case of mixture (with fixed weights), using EM is indeed quite natural, but the author, Iain MacDonald, remarked that an optimiser such as R nlm() could be called instead. The few lines of relevant R code were even included. While this is a correct if minor remark, I am a wee bit surprised at seeing it included in the journal, the more because the authors of the original paper using the EM approach were given the opportunity to respond, noticing EM is much faster than nlm in the cases they tested, and Iain MacDonald had a further rejoinder! The more because the Wikipedia page mentioned the use of optimisers much earlier (and pointed out at the R package Rfast as producing MLEs for the distribution).
Archive for nlm
folded Normals
Posted in Books, Kids, pictures, R, Running, Statistics with tags Annals of Applied Statistics, EM algorithm, folded normal, La Butte aux Cailles, letter to the editor, maximum likelihood estimation, nlm, outdoor swimming, Paris, R, Rfast, swimming pool, wikipedia on February 25, 2021 by xi'annlm [unused argument(s) (iter = 1)]
Posted in Books, R, Statistics with tags Introducing Monte Carlo Methods with R, mixtures, nlm, optimisation, R, typos on December 29, 2010 by xi'anAshley put the following comment on Chapter 5 of Introducing Monte Carlo Methods with R”:
I am reading chapter 5. I try to reproduced the result on page 128. The R codes don’t work on my laptop. When I try to run the following codes on page 128
> for (i in 1:(nlm(like,sta)$it)){ + mmu=rbind(mmu,nlm(like,sta,iter=i)$est)}I always get the error message
Error in f(x, …) : unused argument(s) (iter = 1)
It seems that the nlm function doesn’t accept the argument iter. I don’t know how to deal with it. I am in US. I guess the nlm version available to US R users is different from the version in EU. Please help.
And indeed with the most recent versions of R, like 2.12.1 on my own machine, calling nlm
> args(nlm) function (f, p, ..., hessian = FALSE, typsize = rep(1, length(p)), fscale = 1, print.level = 0, ndigit = 12, gradtol = 1e-06, stepmax = max(1000 * sqrt(sum((p/typsize)^2)), 1000), steptol = 1e-06, iterlim = 100, check.analyticals = TRUE)
with the abbreviated argument iter instead of iterlim produces the above error message. This means the full syntax iterlim=i should now be used. In addition, the function nlm produces the minimum of the first argument f and like should thus be defined as
> like=function(mu){ + -sum(log((.25*dnorm(da-mu[1])+.75*dnorm(da-mu[2]))))}
to end up with local maxima as on Figure 5.2. (Note: I do not think there are US versus EU versions of R…)
Ashley also pointed out another mistake on that page, namely that we used
> da=rbind(rnorm(10^2),2.5+rnorm(3*10^2))
instead of
> da=c(rnorm(10^2),2.5+rnorm(3*10^2))
to create a sample. Since the two normal samples have different sizes, rbind induces a duplication of the smaller sample, not what we intended!