calcMin {PBSmodelling}R Documentation

Calculate the Minimum of a User-Defined Function

Description

Minimization based on the R-stat functions nlm, nlminb, and optim. Model parameters are scaled and can be active or not in the minimization.

Usage

calcMin(pvec, func, method="nlm", trace=0, maxit=1000, reltol=1e-8,
        steptol=1e-6, temp=10, repN=0, ...)

Arguments

pvec Initial values of the model parameters to be optimized. pvec is a data frame comprising four columns ( "val","min","max","active") and as many rows as there are model parameters. The "active" field (logical) determines whether the parameters are estimated (T) or remain fixed (F).
func The user-defined function to be minimized (or maximized). The function should return a scalar result.
method The minimization method to use: one of nlm, nlminb, Nelder-Mead, BFGS, CG, L-BFGS-B, or SANN. Default is nlm.
trace Non-negative integer. If positive, tracing information on the progress of the minimization is produced. Higher values may produce more tracing information: for method "L-BFGS-B" there are six levels of tracing. Default is 0.
maxit The maximum number of iterations. Default is 1000.
reltol Relative convergence tolerance. The algorithm stops if it is unable to reduce the value by a factor of reltol*(abs(val)+reltol) at a step. Default is 1e-8.
steptol A positive scalar providing the minimum allowable relative step length. Default is 1e-6.
temp Temperature controlling the "SANN" method. It is the starting temperature for the cooling schedule. Default is 10.
repN Reports the parameter and objective function values on the R-console every repN evaluations. Default is 0 for no reporting.
... Further arguments to be passed to the optimizing function chosen: nlm, nlminb, or optim. Beware of partial matching to earlier arguments.

Details

See optim for details on the following methods: Nelder-Mead, BFGS, CG, L-BFGS-B, and SANN.

Value

A list with components:

Fout The output list from the optimizer function chosen through method.
iters Number of iterations.
evals Number of evaluations.
cpuTime The user CPU time to execute the minimization.
elapTime The total elapsed time to execute the minimization.
fminS The objective function value calculated at the start of the minimization.
fminE The objective function value calculated at the end of the minimization.
Pstart Starting values for the model parameters.
Pend Final values estimated for the model parameters from the minimization.
AIC Akaike's Information Criterion
message Convergence message from the minimization routine.

Note

Some arguments to calcMin have no effect depending on the method chosen.

See Also

scalePar, restorePar, calcMin, GT0
In the stats package: nlm, nlminb, and optim.

Examples

Ufun <- function(P) {
        Linf <- P[1]; K <- P[2]; t0 <- P[3]; obs <- afile$len;
        pred <- Linf * (1 - exp(-K*(afile$age-t0)));
        n <- length(obs); ssq <- sum((obs-pred)^2 );
        return(n*log(ssq)); };
afile <- data.frame(age=1:16,len=c(7.36,14.3,21.8,27.6,31.5,35.3,39,
        41.1,43.8,45.1,47.4,48.9,50.1,51.7,51.7,54.1));
pvec <- data.frame(val=c(70,0.5,0),min=c(40,0.01,-2),max=c(100,2,2),
        active=c(TRUE,TRUE,TRUE),row.names=c("Linf","K","t0"),
        stringsAsFactors=FALSE);
alist <- calcMin(pvec=pvec,func=Ufun,method="nlm",steptol=1e-4,repN=10);
print(alist[-1]); P <- alist$Pend;
resetGraph(); expandGraph();
xnew <- seq(afile$age[1],afile$age[nrow(afile)],len=100);
ynew <- P[1] * (1 - exp(-P[2]*(xnew-P[3])) );
plot(afile); lines(xnew,ynew,col="red",lwd=2); 
addLabel(.05,.88,paste(paste(c("Linf","K","t0"),round(P,c(2,4,4)),
        sep=" = "),collapse="\n"),adj=0,cex=0.9);

[Package PBSmodelling version 2.06 Index]