[R] how to avoid NaN in optim()

Ravi Varadhan rvaradhan at jhmi.edu
Thu Sep 30 20:52:56 CEST 2010


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: rvaradhan at jhmi.edu


----- Original Message -----
From: arindam fadikar <arindam.fadikar at gmail.com>
Date: Thursday, September 30, 2010 2:17 pm
Subject: [R] how to avoid NaN in optim()
To: r-help at 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 at r-project.org mailing list
>  
>  PLEASE do read the posting guide 
>  and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list