thanks Ravi .... yes , we were getiing the correct results but we thought there should be a way to avoid those NaN values ... and now we are done the if condition was written wrongly there ... instead of that if we do
p > 0 && q > 0 && r > 0 && p < 1 && q < 1 && r < 1 its perfectly fine .. but is there a smart way to write this condition ? On Fri, Oct 1, 2010 at 12:30 AM, Ravi Varadhan <rvarad...@jhmi.edu> wrote: > I forgot to mention: > > You actually got correct results with using optim and `CG'. The warning > messages were just telling you that there were some log(negative number) > operations during the iterative process. > > Ravi. > > ____________________________________________________________________ > > Ravi Varadhan, Ph.D. > Assistant Professor, > Division of Geriatric Medicine and Gerontology > School of Medicine > Johns Hopkins University > > Ph. (410) 502-2619 > email: rvarad...@jhmi.edu > > > ----- Original Message ----- > From: arindam fadikar <arindam.fadi...@gmail.com> > Date: Thursday, September 30, 2010 2:17 pm > Subject: [R] how to avoid NaN in optim() > To: r-help@r-project.org > > > > hi , > > > > lik <- function(nO, nA, nB, nAB){ > > > > loglik <- function(par) > > { > > p=par[1] > > q=par[2] > > r <- 1 - p - q > > > > if (c(p,q,r) > rep(0,3) && c(p,q,r) < rep(1,3) ) > > > > { > > -(2 * nO * log (r) + nA * log (p^2 + 2 * p * r) > > + nB * log (q^2 + 2 * q * r) > > + nAB * (log(2) +log(p) +log(q))) > > } > > else > > NA > > } > > > > loglik > > > > } > > > > > > i want to maximize this likelihood function over the range (0,0,0) to > > (1,1,1). so i tried > > > > optim ( c(0.3,0.3), lik ( 176,182 , 60 ,17) , method = "CG") > > > > and obtained the following : > > > > > optim(c(0.3,0.3), fn, method="CG") > > $par > > [1] 0.26444187 0.09316946 > > > > $value > > [1] 492.5353 > > > > $counts > > function gradient > > 130 19 > > > > $convergence > > [1] 0 > > > > $message > > NULL > > > > Warning messages: > > 1: In log(q^2 + 2 * q * r) : NaNs produced > > 2: In log(q) : NaNs produced > > 3: In log(q^2 + 2 * q * r) : NaNs produced > > 4: In log(q) : NaNs produced > > > > > > please help ... > > > > > > -- > > Arindam Fadikar > > M.Stat > > Indian Statistical Institute. > > New Delhi, India > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help@r-project.org mailing list > > > > PLEASE do read the posting guide > > and provide commented, minimal, self-contained, reproducible code. > -- Arindam Fadikar M.Stat Indian Statistical Institute. New Delhi, India [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.