Description Usage Arguments Details Value Author(s) References See Also Examples

For a nonlinear model originally expressed as an expression of the form
`lhs ~ formula_for_rhs`

assume we have a `resfn`

and `jacfn`

that compute the residuals and the
Jacobian at a set of parameters. This routine computes the sum of squares of
the residuals.

1 |

`prm` |
A parameter vector. For our example, we could use start=c(b1=1, b2=2.345, b3=0.123) However, the names are NOT used, only positions in the vector. |

`resfn` |
A function to compute the residuals of our model at a parameter vector. |

`...` |
Any data needed for computation of the residual vector from the expression rhsexpression - lhsvar. Note that this is the negative of the usual residual, but the sum of squares is the same. |

`resss`

calls `resfn`

to compute residuals and then uses `crossprod`

to compute the sum of squares.

At 2012-4-26 there is no checking for errors. The evaluations of residuals and
the cross product could be wrapped in `try()`

if the evaluation could be
inadmissible.

The scalar numeric value of the sum of squares at the paramters.

John C Nash <nashjc@uottawa.ca>

Nash, J. C. (1979, 1990) _Compact Numerical Methods for Computers. Linear Algebra and Function Minimisation._ Adam Hilger./Institute of Physics Publications

others!!

Function `nls()`

, packages `optim`

and `optimx`

.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | ```
shobbs.res <- function(x){ # scaled Hobbs weeds problem -- residual
# This variant uses looping
if(length(x) != 3) stop("hobbs.res -- parameter vector n!=3")
y <- c(5.308, 7.24, 9.638, 12.866, 17.069, 23.192, 31.443,
38.558, 50.156, 62.948, 75.995, 91.972)
tt <- 1:12
res <- 100.0*x[1]/(1+x[2]*10.*exp(-0.1*x[3]*tt)) - y
}
st <- c(b1=1, b2=1, b3=1)
firstss<-resss(st, shobbs.res)
# The sum of squares of the scaled Hobbs function at parameters
st
firstss
# now illustrate how to get solution via optimization
tf <- function(prm){
val <- resss(prm, shobbs.res)
}
testop <- optim(st, tf, control=list(trace=1))
testop
``` |

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.