# How to use mle2 function? Classic List Threaded 7 messages Open this post in threaded view
|

## How to use mle2 function?

 Hello, I would like to optimize the function: ``` holling = function(a, b, x) {   y = (a * x^2) / (b^2 + x^2)   return(y) } ``` I am trying to use the function mle2 from bbmle, but how do I need to feed the data? If I give `holling` as function to be optimized, passing the starting values for `a`, `b`, and `x`, I get: ``` X = 1:60 A = 3261 B = 10 O = mle2(minuslogl = holling, start = list(a = A, h = B, x = X)) > Error in mle2(minuslogl = holling, start = list(a = A, b = B, x = X)) :   some named arguments in 'start' are not arguments to the specified log-likelihood function ``` If I pass the negative log-function (assuming a binomial distribution of the data, which I am not sure about) ``` nll = function(p, n, k) {   # extract parms   a = p   h = p   # calculate probability of attack   pred = a/(1+a*h*n)   # calc NLL   -sum(dbinom(k, prob = pred, size = n, log = TRUE)) } ``` then I get the same error: ``` > O = mle2(minuslogl = nll, start = list(a = A, h = B), +          data = list(n = 57200000, k = A)) Error in mle2(minuslogl = nll, start = list(a = A, h = B), data = list(n = 57200000,  :   some named arguments in 'start' are not arguments to the specified log-likelihood function ``` but with the disadvantage of working on an assumed function (nll). How can I optimize the function `holling` properly? Thank you -- Best regards, Luigi ______________________________________________ [hidden email] mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: How to use mle2 function?

 Hi Luigi, I took a quick look. First error: You wrote O = mle2(minuslogl = holling, start = list(a = A, h = B, x = X)) it should be b=B  (h is not an argument of holling()) The error message gave very precise information! Second error: You wrote O = mle2(minuslogl = nll, start = list(a = A, h = B),   data = list(n = 57200000, k = A)) but the arguments to nll() are p,n,k. Setting start to values for a and h causes the function to complain. HTH, Eric On Tue, Jun 30, 2020 at 12:45 PM Luigi Marongiu <[hidden email]> wrote: > > Hello, > I would like to optimize the function: > ``` > holling = function(a, b, x) { >   y = (a * x^2) / (b^2 + x^2) >   return(y) > } > ``` > I am trying to use the function mle2 from bbmle, but how do I need to > feed the data? > If I give `holling` as function to be optimized, passing the starting > values for `a`, `b`, and `x`, I get: > ``` > X = 1:60 > A = 3261 > B = 10 > O = mle2(minuslogl = holling, start = list(a = A, h = B, x = X)) > > Error in mle2(minuslogl = holling, start = list(a = A, b = B, x = X)) : >   some named arguments in 'start' are not arguments to the specified > log-likelihood function > ``` > If I pass the negative log-function (assuming a binomial distribution > of the data, which I am not sure about) > ``` > nll = function(p, n, k) { >   # extract parms >   a = p >   h = p >   # calculate probability of attack >   pred = a/(1+a*h*n) >   # calc NLL >   -sum(dbinom(k, prob = pred, size = n, log = TRUE)) > } > ``` > then I get the same error: > ``` > > O = mle2(minuslogl = nll, start = list(a = A, h = B), > +          data = list(n = 57200000, k = A)) > Error in mle2(minuslogl = nll, start = list(a = A, h = B), data = > list(n = 57200000,  : >   some named arguments in 'start' are not arguments to the specified > log-likelihood function > ``` > but with the disadvantage of working on an assumed function (nll). > How can I optimize the function `holling` properly? > Thank you > > > > > -- > Best regards, > Luigi > > ______________________________________________ > [hidden email] mailing list -- To UNSUBSCRIBE and more, see > 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. ______________________________________________ [hidden email] mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: How to use mle2 function?

 Sorry for the typo, but I have the same error if using b instead of h: ``` > O = mle2(minuslogl = holling, start = list(a = A, b = B)) > Error in minuslogl(a = 3261, b = 10) :   argument "x" is missing, with no default # let's add x X = c(8,   24,   39,   63,   89,  115,  153,  196,  242,  287,  344,  408,  473,       546,  619,  705,  794,  891,  999, 1096, 1242, 1363, 1506, 1648, 1753,       1851, 1987, 2101, 2219, 2328, 2425, 2575, 2646, 2698, 2727, 2771, 2818,       2853, 2895, 2926, 2964, 2995, 3025, 3053, 3080, 3102, 3119, 3141, 3152,       3159, 3172, 3182, 3196, 3209, 3220, 3231, 3239, 3246, 3252, 3261) O = mle2(minuslogl = holling, start = list(a = A, b = B, x = X)) Error in mle2(minuslogl = holling, start = list(a = A, b = B, x = X)) :   some named arguments in 'start' are not arguments to the specified log-likelihood function ``` And even if I use the log-likelihood function: ``` O = mle2(minuslogl = nll, start = list(p = c(A, B), n = 57200000, x = X)) > Error in mle2(minuslogl = nll, start = list(p = c(A, B), n = 57200000,  :   some named arguments in 'start' are not arguments to the specified log-likelihood function ``` On Tue, Jun 30, 2020 at 12:03 PM Eric Berger <[hidden email]> wrote: > > Hi Luigi, > I took a quick look. > > First error: > You wrote > O = mle2(minuslogl = holling, start = list(a = A, h = B, x = X)) > > it should be b=B  (h is not an argument of holling()) > The error message gave very precise information! > > Second error: > You wrote > O = mle2(minuslogl = nll, start = list(a = A, h = B),   data = list(n > = 57200000, k = A)) > but the arguments to nll() are p,n,k. Setting start to values for a > and h causes the function to complain. > > HTH, > Eric > > On Tue, Jun 30, 2020 at 12:45 PM Luigi Marongiu > <[hidden email]> wrote: > > > > Hello, > > I would like to optimize the function: > > ``` > > holling = function(a, b, x) { > >   y = (a * x^2) / (b^2 + x^2) > >   return(y) > > } > > ``` > > I am trying to use the function mle2 from bbmle, but how do I need to > > feed the data? > > If I give `holling` as function to be optimized, passing the starting > > values for `a`, `b`, and `x`, I get: > > ``` > > X = 1:60 > > A = 3261 > > B = 10 > > O = mle2(minuslogl = holling, start = list(a = A, h = B, x = X)) > > > Error in mle2(minuslogl = holling, start = list(a = A, b = B, x = X)) : > >   some named arguments in 'start' are not arguments to the specified > > log-likelihood function > > ``` > > If I pass the negative log-function (assuming a binomial distribution > > of the data, which I am not sure about) > > ``` > > nll = function(p, n, k) { > >   # extract parms > >   a = p > >   h = p > >   # calculate probability of attack > >   pred = a/(1+a*h*n) > >   # calc NLL > >   -sum(dbinom(k, prob = pred, size = n, log = TRUE)) > > } > > ``` > > then I get the same error: > > ``` > > > O = mle2(minuslogl = nll, start = list(a = A, h = B), > > +          data = list(n = 57200000, k = A)) > > Error in mle2(minuslogl = nll, start = list(a = A, h = B), data = > > list(n = 57200000,  : > >   some named arguments in 'start' are not arguments to the specified > > log-likelihood function > > ``` > > but with the disadvantage of working on an assumed function (nll). > > How can I optimize the function `holling` properly? > > Thank you > > > > > > > > > > -- > > Best regards, > > Luigi > > > > ______________________________________________ > > [hidden email] mailing list -- To UNSUBSCRIBE and more, see > > 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. -- Best regards, Luigi ______________________________________________ [hidden email] mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: How to use mle2 function?

 I have no problem with the following code: library(bbmle) holling <- function( a, b, x ) { a*x^2 / (b^2 + x^2) } A=3261 B=10 X=30 foo <- mle2( minuslogl=holling, start=list(a=A,b=B,x=X) ) foo # Call: # mle2(minuslogl = holling, start = list(a = A, b = B, x = X)) # Coefficients: #            a             b             x # 3.260044e+03  7.315124e+01 -2.332448e-14 # Log-likelihood: 0 Does this code create a problem for you? On Tue, Jun 30, 2020 at 3:00 PM Luigi Marongiu <[hidden email]> wrote: > > Sorry for the typo, but I have the same error if using b instead of h: > ``` > > O = mle2(minuslogl = holling, start = list(a = A, b = B)) > > Error in minuslogl(a = 3261, b = 10) : >   argument "x" is missing, with no default > # let's add x > X = c(8,   24,   39,   63,   89,  115,  153,  196,  242,  287,  344,  408,  473, >       546,  619,  705,  794,  891,  999, 1096, 1242, 1363, 1506, 1648, 1753, >       1851, 1987, 2101, 2219, 2328, 2425, 2575, 2646, 2698, 2727, 2771, 2818, >       2853, 2895, 2926, 2964, 2995, 3025, 3053, 3080, 3102, 3119, 3141, 3152, >       3159, 3172, 3182, 3196, 3209, 3220, 3231, 3239, 3246, 3252, 3261) > O = mle2(minuslogl = holling, start = list(a = A, b = B, x = X)) > Error in mle2(minuslogl = holling, start = list(a = A, b = B, x = X)) : >   some named arguments in 'start' are not arguments to the specified > log-likelihood function > ``` > And even if I use the log-likelihood function: > ``` > O = mle2(minuslogl = nll, start = list(p = c(A, B), n = 57200000, x = X)) > > Error in mle2(minuslogl = nll, start = list(p = c(A, B), n = 57200000,  : >   some named arguments in 'start' are not arguments to the specified > log-likelihood function > ``` > > On Tue, Jun 30, 2020 at 12:03 PM Eric Berger <[hidden email]> wrote: > > > > Hi Luigi, > > I took a quick look. > > > > First error: > > You wrote > > O = mle2(minuslogl = holling, start = list(a = A, h = B, x = X)) > > > > it should be b=B  (h is not an argument of holling()) > > The error message gave very precise information! > > > > Second error: > > You wrote > > O = mle2(minuslogl = nll, start = list(a = A, h = B),   data = list(n > > = 57200000, k = A)) > > but the arguments to nll() are p,n,k. Setting start to values for a > > and h causes the function to complain. > > > > HTH, > > Eric > > > > On Tue, Jun 30, 2020 at 12:45 PM Luigi Marongiu > > <[hidden email]> wrote: > > > > > > Hello, > > > I would like to optimize the function: > > > ``` > > > holling = function(a, b, x) { > > >   y = (a * x^2) / (b^2 + x^2) > > >   return(y) > > > } > > > ``` > > > I am trying to use the function mle2 from bbmle, but how do I need to > > > feed the data? > > > If I give `holling` as function to be optimized, passing the starting > > > values for `a`, `b`, and `x`, I get: > > > ``` > > > X = 1:60 > > > A = 3261 > > > B = 10 > > > O = mle2(minuslogl = holling, start = list(a = A, h = B, x = X)) > > > > Error in mle2(minuslogl = holling, start = list(a = A, b = B, x = X)) : > > >   some named arguments in 'start' are not arguments to the specified > > > log-likelihood function > > > ``` > > > If I pass the negative log-function (assuming a binomial distribution > > > of the data, which I am not sure about) > > > ``` > > > nll = function(p, n, k) { > > >   # extract parms > > >   a = p > > >   h = p > > >   # calculate probability of attack > > >   pred = a/(1+a*h*n) > > >   # calc NLL > > >   -sum(dbinom(k, prob = pred, size = n, log = TRUE)) > > > } > > > ``` > > > then I get the same error: > > > ``` > > > > O = mle2(minuslogl = nll, start = list(a = A, h = B), > > > +          data = list(n = 57200000, k = A)) > > > Error in mle2(minuslogl = nll, start = list(a = A, h = B), data = > > > list(n = 57200000,  : > > >   some named arguments in 'start' are not arguments to the specified > > > log-likelihood function > > > ``` > > > but with the disadvantage of working on an assumed function (nll). > > > How can I optimize the function `holling` properly? > > > Thank you > > > > > > > > > > > > > > > -- > > > Best regards, > > > Luigi > > > > > > ______________________________________________ > > > [hidden email] mailing list -- To UNSUBSCRIBE and more, see > > > 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. > > > > -- > Best regards, > Luigi ______________________________________________ [hidden email] mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: How to use mle2 function?

 No, I got the same. I reckon the problem is with X: this was I scalar, I was providing a vector with the actual values. Ho can mle2 optimize without knowing what are the actual data? and what values should I give for X? Thank you On Tue, Jun 30, 2020 at 2:06 PM Eric Berger <[hidden email]> wrote: > > I have no problem with the following code: > > library(bbmle) > holling <- function( a, b, x ) { > a*x^2 / (b^2 + x^2) > } > A=3261 > B=10 > X=30 > foo <- mle2( minuslogl=holling, start=list(a=A,b=B,x=X) ) > > foo > > # Call: > # mle2(minuslogl = holling, start = list(a = A, b = B, x = X)) > > # Coefficients: > #            a             b             x > # 3.260044e+03  7.315124e+01 -2.332448e-14 > > # Log-likelihood: 0 > > > Does this code create a problem for you? > > On Tue, Jun 30, 2020 at 3:00 PM Luigi Marongiu <[hidden email]> wrote: > > > > Sorry for the typo, but I have the same error if using b instead of h: > > ``` > > > O = mle2(minuslogl = holling, start = list(a = A, b = B)) > > > Error in minuslogl(a = 3261, b = 10) : > >   argument "x" is missing, with no default > > # let's add x > > X = c(8,   24,   39,   63,   89,  115,  153,  196,  242,  287,  344,  408,  473, > >       546,  619,  705,  794,  891,  999, 1096, 1242, 1363, 1506, 1648, 1753, > >       1851, 1987, 2101, 2219, 2328, 2425, 2575, 2646, 2698, 2727, 2771, 2818, > >       2853, 2895, 2926, 2964, 2995, 3025, 3053, 3080, 3102, 3119, 3141, 3152, > >       3159, 3172, 3182, 3196, 3209, 3220, 3231, 3239, 3246, 3252, 3261) > > O = mle2(minuslogl = holling, start = list(a = A, b = B, x = X)) > > Error in mle2(minuslogl = holling, start = list(a = A, b = B, x = X)) : > >   some named arguments in 'start' are not arguments to the specified > > log-likelihood function > > ``` > > And even if I use the log-likelihood function: > > ``` > > O = mle2(minuslogl = nll, start = list(p = c(A, B), n = 57200000, x = X)) > > > Error in mle2(minuslogl = nll, start = list(p = c(A, B), n = 57200000,  : > >   some named arguments in 'start' are not arguments to the specified > > log-likelihood function > > ``` > > > > On Tue, Jun 30, 2020 at 12:03 PM Eric Berger <[hidden email]> wrote: > > > > > > Hi Luigi, > > > I took a quick look. > > > > > > First error: > > > You wrote > > > O = mle2(minuslogl = holling, start = list(a = A, h = B, x = X)) > > > > > > it should be b=B  (h is not an argument of holling()) > > > The error message gave very precise information! > > > > > > Second error: > > > You wrote > > > O = mle2(minuslogl = nll, start = list(a = A, h = B),   data = list(n > > > = 57200000, k = A)) > > > but the arguments to nll() are p,n,k. Setting start to values for a > > > and h causes the function to complain. > > > > > > HTH, > > > Eric > > > > > > On Tue, Jun 30, 2020 at 12:45 PM Luigi Marongiu > > > <[hidden email]> wrote: > > > > > > > > Hello, > > > > I would like to optimize the function: > > > > ``` > > > > holling = function(a, b, x) { > > > >   y = (a * x^2) / (b^2 + x^2) > > > >   return(y) > > > > } > > > > ``` > > > > I am trying to use the function mle2 from bbmle, but how do I need to > > > > feed the data? > > > > If I give `holling` as function to be optimized, passing the starting > > > > values for `a`, `b`, and `x`, I get: > > > > ``` > > > > X = 1:60 > > > > A = 3261 > > > > B = 10 > > > > O = mle2(minuslogl = holling, start = list(a = A, h = B, x = X)) > > > > > Error in mle2(minuslogl = holling, start = list(a = A, b = B, x = X)) : > > > >   some named arguments in 'start' are not arguments to the specified > > > > log-likelihood function > > > > ``` > > > > If I pass the negative log-function (assuming a binomial distribution > > > > of the data, which I am not sure about) > > > > ``` > > > > nll = function(p, n, k) { > > > >   # extract parms > > > >   a = p > > > >   h = p > > > >   # calculate probability of attack > > > >   pred = a/(1+a*h*n) > > > >   # calc NLL > > > >   -sum(dbinom(k, prob = pred, size = n, log = TRUE)) > > > > } > > > > ``` > > > > then I get the same error: > > > > ``` > > > > > O = mle2(minuslogl = nll, start = list(a = A, h = B), > > > > +          data = list(n = 57200000, k = A)) > > > > Error in mle2(minuslogl = nll, start = list(a = A, h = B), data = > > > > list(n = 57200000,  : > > > >   some named arguments in 'start' are not arguments to the specified > > > > log-likelihood function > > > > ``` > > > > but with the disadvantage of working on an assumed function (nll). > > > > How can I optimize the function `holling` properly? > > > > Thank you > > > > > > > > > > > > > > > > > > > > -- > > > > Best regards, > > > > Luigi > > > > > > > > ______________________________________________ > > > > [hidden email] mailing list -- To UNSUBSCRIBE and more, see > > > > 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. > > > > > > > > -- > > Best regards, > > Luigi -- Best regards, Luigi ______________________________________________ [hidden email] mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.