From: <dmurdoch_at_pair.com>

Date: Thu 15 Jul 2004 - 00:25:16 EST

R-devel@stat.math.ethz.ch mailing list

https://www.stat.math.ethz.ch/mailman/listinfo/r-devel Received on Thu Jul 15 00:33:09 2004

Date: Thu 15 Jul 2004 - 00:25:16 EST

On Wed, 14 Jul 2004 10:01:45 -0400, "Roger D. Peng" <rpeng@jhsph.edu> wrote :

*>Actually, I think this is a bug. Take a look at this part of constrOptim:
*

I don't know of other cases where we edit the "..." list before passing it onwards. Are there any?

*>
**> > constrOptim
**>function (theta, f, grad, ui, ci, mu = 1e-04, control = list(),
**> method = if (is.null(grad)) "Nelder-Mead" else "BFGS",
**>outer.iterations = 10
**>0,
**> outer.eps = 1e-05, ...)
**>{
**> if (!is.null(control$fnscale) && control$fnscale < 0)
**> mu <- -mu
**> [...]
**> obj <- f(theta)
**> ^^^^^^^^^^^^^^^
**> r <- R(theta, theta)
**> for (i in 1:outer.iterations) {
**> obj.old <- obj
**> r.old <- r
**> [...]
**>}
**>
**>So the object function `f' is called on the starting value `theta' but
**>the `...' is not passed through.
**>
**>-roger
**>
**>Duncan Murdoch wrote:
**>> On Wed, 14 Jul 2004 14:59:01 +0200 (MEST), "Marlene Mueller"
**>> <Marlene.Mueller@gmx.de> wrote :
**>>
**>>
**>>>How can I use a function with some additional input parameters
**>>>in constrOptim? For example, something like
**>>>
**>>>fr <- function(x,a) { ## Rosenbrock Banana function
**>>> x1 <- x[1]
**>>> x2 <- x[2]
**>>> a * (x2 - x1 * x1)^2 + (1 - x1)^2
**>>>}
**>>>
**>>>where the optimum is to be found w.r.t. x. Calling
**>>>optim(c(-1.2,1), fr, NULL, a=100) works as expected, but I fail
**>>>to provide the a=100 in the constrained case:
**>>>
**>>>
**>>>> constrOptim(c(-1.2,0.9), fr, NULL, ui=rbind(c(-1,0),c(0,-1)),
**>>>
**>>>ci=c(-1,-1),a=100)
**>>>Error in f(theta) : Argument "a" is missing, with no default
**>>>
**>>>Is this a bug or is there a different solution that I miss here?
**>>
**>>
**>> I can't spot why your use of constrOptim isn't working, but you should
**>> be able to workaround it by doing something like this:
**>>
**>> applyDefaults <- function(fn, ...) {
**>> function(x) fn(x, ...)
**>> }
**>>
**>> constrOptim(c(-1.2,0.9), applyDefaults(fr, a=100), NULL,
**>> ui=rbind(c(-1,0),c(0,-1)),ci=c(-1,-1))
**>>
**>> The applyDefaults function creates a new function which evaluates the
**>> old one with some of the parameters set to fixed values.
**>>
*

>> Duncan Murdoch

*>>
**>> ______________________________________________
**>> R-help@stat.math.ethz.ch mailing list
**>> **https://www.stat.math.ethz.ch/mailman/listinfo/r-help
**>> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
**>>
*

R-devel@stat.math.ethz.ch mailing list

https://www.stat.math.ethz.ch/mailman/listinfo/r-devel Received on Thu Jul 15 00:33:09 2004

*
This archive was generated by hypermail 2.1.8
: Fri 18 Mar 2005 - 08:59:10 EST
*