On Thu, Sep 30, 2010 at 12:04 PM, arindam fadikar <arindam.fadi...@gmail.com> wrote: > 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 ?
combine p, q, and r. Here imagine x = c(p, q, r) x <- c(.5, .5, .5) all(x > 0 & x < 1) x2 <- c(.5, .5, 1.01) all(x2 > 0 & x2 < 1) In this case you will not want to use && because x has more than one element. all() basically just checks that everything is TRUE. Josh > > 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-h...@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. > -- Joshua Wiley Ph.D. Student, Health Psychology University of California, Los Angeles http://www.joshuawiley.com/ ______________________________________________ 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.