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