[R] [dfoptim] 'Error in fn(ginv(par), ...) : object 'alpha' not found'

Simon Zehnder szehnder at uni-bonn.de
Tue Sep 3 22:59:19 CEST 2013


Hi Carlos,

your problem is a wrong definition of your Likelihood function. You call symbols in the code (alpha, beta) which have no value assigned to. When L the long calculation in the last lines is assigned to L alpha and beta do not exist. The code below corrects it. But you have a problem with a divergent integral when calling integrate. A problem you can surely fix <as you know what your function is doing.

Likelihood_cov <- function(params, x, tx, T, IS) {
 r <- params[1]
 alpha_zero <- params[2]
 s <- params[3]
 beta_zero <- params[4]
 gamma_1 <- params[5]
 gamma_2 <- params[6]
 data$alpha <- alpha_zero*exp(-gamma_1*IS)
 data$beta <- beta_zero*exp(-gamma_2*IS)
 f <- function(x, tx, T, alpha, beta)
 {
   g <- function(y)
     (y + alpha)^(-( r + x))*(y + beta)^(-(s + 1))
   integrate(g, tx, T)$value
 }
 integral <- mdply(data, f)
 L <-
exp(lgamma(r+x)-lgamma(r)+r*(log(alpha_zero)-log(alpha_zero+T))-x*log(alpha_zero+T)+s*(log(beta_zero)-log(beta_zero+T)))+exp(lgamma(r+x)-lgamma(r)+r*log(alpha_zero)+log(s)+s*log(beta_zero)+log(integral$V1))
 f <- -sum(log(L))
 return (f)
}


Best

Simon


On Sep 3, 2013, at 1:28 PM, Carlos Nasher <carlos.nasher at googlemail.com> wrote:

> Dear R helpers,
> 
> I have problems to properly define a Likelihood function. Thanks to your
> help my basic model is running quite well, but I have problems to get the
> enhanced version (now incorporating covariates) running.
> 
> Within my likelihood function I define a variable 'alpha'. When I want to
> optimize the function I get the error message:
> 
> 'Error in fn(ginv(par), ...) : object 'alpha' not found'
> 
> I think it's actually not a problem with the optimization function (nmkb),
> but with the Likelihood function itself. I do not understand why 'alpha' is
> a missing object. 'alpha' should be part of the dataframe 'data' (as 'beta'
> should be too), like 'x', 'tx', ''T. But it obviously isn't.
> 
> Here's a minimum example which reproduces my problem:
> 
> ##################################################################
> 
> library(plyr)
> library(dfoptim)
> 
> ### Sample data ###
> x <- c(3, 0, 2, 5, 1, 0, 0, 1, 0, 2)
> tx <- c(24.57, 0.00, 26.86, 34.57, 2.14, 0.00, 0.00, 8.57, 0.00, 14.29)
> T <- c(33.29, 30.71, 31.29, 34.57, 36.00, 35.43, 31.14, 33.86, 35.71, 35.86)
> IS <- c(54.97, 13.97, 122.33, 110.84, 30.72, 14.96, 30.72, 20.74, 29.16,
> 83.00)
> data <- data.frame(x=x, tx=tx, T=T)
> rm(x, tx, T)
> 
> ### Likelihood function ###
> Likelihood_cov <- function(params, x, tx, T, IS) {
>  r <- params[1]
>  alpha_zero <- params[2]
>  s <- params[3]
>  beta_zero <- params[4]
>  gamma_1 <- params[5]
>  gamma_2 <- params[6]
>  data$alpha <- alpha_zero*exp(-gamma_1*IS)
>  data$beta <- beta_zero*exp(-gamma_2*IS)
>  f <- function(x, tx, T, alpha, beta)
>  {
>    g <- function(y)
>      (y + alpha)^(-( r + x))*(y + beta)^(-(s + 1))
>    integrate(g, tx, T)$value
>  }
>  integral <- mdply(data, f)
>  L <-
> exp(lgamma(r+x)-lgamma(r)+r*(log(alpha)-log(alpha+T))-x*log(alpha+T)+s*(log(beta)-log(beta+T)))+exp(lgamma(r+x)-lgamma(r)+r*log(alpha)+log(s)+s*log(beta)+log(integral$V1))
>  f <- -sum(log(L))
>  return (f)
> }
> 
> ### ML optimization ###
> params <- c(0.2, 5, 0.2, 5, -0.02, -0.02)
> fit <- nmkb(par=params, fn=Likelihood_cov, lower=c(0.0001, 0.0001, 0.0001,
> 0.0001, -Inf, -Inf), upper=c(Inf, Inf, Inf, Inf, Inf, Inf), x=data$x,
> tx=data$tx, T=data$T, IS=IS)
> 
> ##################################################################
> 
> 
> Maybe you could give me a hint were the flaw in my code is. Many thanks in
> advance.
> Carlos
> 
> 
> -----------------------------------------------------------------
> Carlos Nasher
> Buchenstr. 12
> 22299 Hamburg
> 
> tel:            +49 (0)40 67952962
> mobil:        +49 (0)175 9386725
> mail:          carlos.nasher at gmail.com
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at 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.



More information about the R-help mailing list