The phrase:

f <- 1000000000*(((((Wt-Wtmod)^2)/Wt) + (((Hgt-Hgtmod)^2)/Hgt))2) ; f

is an immediate computation, not a function. If you want a function, try something like the following:

   f <- function(x){
          Wt <- x[1]
          Wtmod <- x[2]
          Hgt <- x[3]
          Hgtmod <- x[4]
     1000000000*(((((Wt-Wtmod)^2)/Wt) + (((Hgt-Hgtmod)^2)/Hgt))2)
   }

OR

   f <- function(x, X){
          Wt <- X[,1]
          Hgt <- X[,2]
          Wtmod <- x[1]
          Hgtmod <- x[2]
        1000000000*(((((Wt-Wtmod)^2)/Wt) + (((Hgt-Hgtmod)^2)/Hgt))2)
   }

"par" in "optim" is the starting values for "x". Pass "X" to "f" via "..." in the call to "optim".

If you can't make this work, please submit a toy example with the code and error messages. Please limit your example to 3 observations, preferably whole numbers so someone else can read your question in seconds. If it is any longer than that, it should be ignored.

hope this helps.
Spencer Graves

M.Kondrin wrote:
>?optim

optim(par, fn, gr = NULL,
           method = c("Nelder-Mead", "BFGS", "CG", "L-BFGS-B", "SANN"),
           lower = -Inf, upper = Inf,
           control = list(), hessian = FALSE, ...)

.....
      fn: A function to be minimized (or maximized), with first
          argument the vector of parameters over which minimization is
          to take place. It should return a scalar result.

Your fn defined as:
f <- 1000000000*(((((Wt-Wtmod)^2)/Wt) + (((Hgt-Hgtmod)^2)/Hgt))2) ; f
What is its first argument I wonder?
I think you have just an ill-defined R function (although for Excel it may be OK - do not know) and optim just chokes on it.


______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help

______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help

Reply via email to