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.
|
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 |
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 |
maxit |
The maximum number of iterations. Default is |
reltol |
Relative convergence tolerance. The algorithm stops if it is
unable to reduce the value by a factor of |
steptol |
A positive scalar providing the minimum allowable relative step length.
Default is |
temp |
Temperature controlling the |
repN |
Reports the parameter and objective function values on the R-console
every |
... |
Further arguments to be passed to the optimizing function chosen:
|
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 |
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.
Author(s)
Jon T. Schnute, Pacific Biological Station, Fisheries and Oceans Canada, Nanaimo BC
See Also
scalePar
, restorePar
, calcMin
, GT0
In the stats
package: nlm
, nlminb
, and optim
.
Examples
local(envir=.PBSmodEnv,expr={
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)); };
oldpar = par(no.readonly = TRUE)
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);
par(oldpar)
})