On 30.11.2012 23:55, Mac Gaulin wrote:
Hello,

I am trying to understand a small quirk I came across in R. The
following code results in an error:

k <- c(2, 1, 1, 5, 5)
f <- c(1, 1, 1, 3, 2)
loglikelihood <- function(theta,k,f){
     if( theta<1 && theta>0 )
         return(-1*sum(log(choose(k,f))+f*log(theta)+(k-f)*log(1-theta)))
     return(NA)
}
nlm(loglikelihood ,0.5, k, f )

Running this code results in:
Error in nlm(logliklihood, 0.5, k, f) :
   invalid function value in 'nlm' optimizer

However if the line return(NA) is changed to return(-NA) or even
return(1*NA) or return(1/0), the code works. Is this expected
behavior? The nlm help file says not NA or not NaN are acceptable
values but I don't understand what that means.

Your function must return finite numbers, that means infinite numbers, NA nor NaN are not allowed and you experienced what happens if you do that.

Please see ?constrOptim or other appropriate functions for constrained optimization problems.

Uwe Ligges


Thank you for your time,
Mac Gaulin

______________________________________________
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-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.

Reply via email to