Re: [R] how to avoid NaN in optim()
You do not have to worry about re-defining your function to handle the constraints on parameters. You can let the optimizer worry about it. lik <- function(nO, nA, nB, nAB){ loglik <- function(par) { p=par[1] q=par[2] r <- 1 - p - q -(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))) } } library(BB) # constraints: x[1] > 0; x[2] > 0; x[1] + x[2] < 1 Amat <- matrix(c(1,0,0,1,-1,-1), 3, 2, byrow=TRUE) b <- c(0, 0, -1) c1 <- runif(1) p0 <- c(c1, max(0.01, 0.99-c1)) spg(p0, lik ( 176,182,60,17) , project="projectLinear", projectArgs=list(A=Amat, b=b, meq=0)) Hope this helps, Ravi. -Original Message- From: Ravi Varadhan [mailto:rvarad...@jhmi.edu] Sent: Thursday, September 30, 2010 3:09 PM To: Ravi Varadhan Cc: arindam fadikar; r-help@r-project.org Subject: Re: [R] how to avoid NaN in optim() Here is how you do it: library(BB) Amat <- matrix(c(1,0,0,1,-1,-1), 3, 2, byrow=TRUE) b <- c(0, 0, -1) p0 <- c(0.5, 0.4) spg(p0, lik ( 176,182 , 60 ,17) , project="projectLinear", projectArgs=list(A=Amat, b=b, meq=0)) Hope this helps, 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: Ravi Varadhan Date: Thursday, September 30, 2010 3:04 pm Subject: Re: [R] how to avoid NaN in optim() To: Ravi Varadhan Cc: arindam fadikar , r-help@r-project.org > You also need the constrain that par[1] + par[2] < 1 in order to avoid > NaNs. > > You can do this using the `projectLinear' argument in `spg'. > > library(BB) > ?spg > > > 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: Ravi Varadhan > Date: Thursday, September 30, 2010 2:54 pm > Subject: Re: [R] how to avoid NaN in optim() > To: arindam fadikar > Cc: r-help@r-project.org > > > > Change the `else NA' to `else Inf' in your loglik function and > then > > run the following: > > > > > > library(BB) > > > > p0 <- runif(2) > > > > spg(p0, lik (176,182 , 60 ,17) , lower=0, upper=1) > > > > > > This will give you correct results. > > > > 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 > > 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 >
Re: [R] how to avoid NaN in optim()
arindam fadikar wrote: > > > 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 > } > . > Extending the tests in the if in loglik to if (c(p,q,r) > rep(0,3) && c(p,q,r) < rep(1,3) && (p^2 + 2*p*r)>0 && (q^2 + 2*q*r)>0) would also help. /Berend -- View this message in context: http://r.789695.n4.nabble.com/how-to-avoid-NaN-in-optim-tp2738093p2746635.html Sent from the R help mailing list archive at Nabble.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.
Re: [R] how to avoid NaN in optim()
On Thu, Sep 30, 2010 at 12:04 PM, arindam fadikar 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 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 >> 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.
Re: [R] how to avoid NaN in optim()
Here is how you do it: library(BB) Amat <- matrix(c(1,0,0,1,-1,-1), 3, 2, byrow=TRUE) b <- c(0, 0, -1) p0 <- c(0.5, 0.4) spg(p0, lik ( 176,182 , 60 ,17) , project="projectLinear", projectArgs=list(A=Amat, b=b, meq=0)) Hope this helps, 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: Ravi Varadhan Date: Thursday, September 30, 2010 3:04 pm Subject: Re: [R] how to avoid NaN in optim() To: Ravi Varadhan Cc: arindam fadikar , r-help@r-project.org > You also need the constrain that par[1] + par[2] < 1 in order to avoid > NaNs. > > You can do this using the `projectLinear' argument in `spg'. > > library(BB) > ?spg > > > 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: Ravi Varadhan > Date: Thursday, September 30, 2010 2:54 pm > Subject: Re: [R] how to avoid NaN in optim() > To: arindam fadikar > Cc: r-help@r-project.org > > > > Change the `else NA' to `else Inf' in your loglik function and > then > > run the following: > > > > > > library(BB) > > > > p0 <- runif(2) > > > > spg(p0, lik (176,182 , 60 ,17) , lower=0, upper=1) > > > > > > This will give you correct results. > > > > 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 > > 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. > > > > __ > > R-help@r-project.org mailing list > > > > PLEASE do read the posting guide > > and provide commented, minimal, self-contained, reproducible code. > __ 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.
Re: [R] how to avoid NaN in optim()
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 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 > 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.
Re: [R] how to avoid NaN in optim()
You also need the constrain that par[1] + par[2] < 1 in order to avoid NaNs. You can do this using the `projectLinear' argument in `spg'. library(BB) ?spg 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: Ravi Varadhan Date: Thursday, September 30, 2010 2:54 pm Subject: Re: [R] how to avoid NaN in optim() To: arindam fadikar Cc: r-help@r-project.org > Change the `else NA' to `else Inf' in your loglik function and then > run the following: > > > library(BB) > > p0 <- runif(2) > > spg(p0, lik (176,182 , 60 ,17) , lower=0, upper=1) > > > This will give you correct results. > > 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 > 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. > > __ > R-help@r-project.org mailing list > > PLEASE do read the posting guide > and provide commented, minimal, self-contained, reproducible code. __ 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.
Re: [R] how to avoid NaN in optim()
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 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. __ 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.
Re: [R] how to avoid NaN in optim()
Change the `else NA' to `else Inf' in your loglik function and then run the following: library(BB) p0 <- runif(2) spg(p0, lik (176,182 , 60 ,17) , lower=0, upper=1) This will give you correct results. 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 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. __ 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.
[R] how to avoid NaN in optim()
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 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.