XLISP-STAT allows the construction of nonlinear, normal regression
models. The present implementation is experimental. The definitions
needed for nonlinear regression are in the
file ` nonlin.lsp` on the distribution disk. This file is not
loaded automatically at start up; you should load it now, using the
** Load** item on the
** File** menu or the ` load` command, to carry out the
calculations in this section.

As an example, Bates and Watts [1, A1.3,] describe an
experiment on the relation between the velocity of an enzymatic
reaction, **y**, and the substrate concentration, **x**. The data for an
experiment in which the enzyme was treated with Puromycin are given by

(def x1 (list 0.02 0.02 0.06 0.06 .11 .11 .22 .22 .56 .56 1.1 1.1)) (def y1 (list 76 47 97 107 123 139 159 152 191 201 207 200))The Michaelis-Menten function

often provides a good model for the dependence of velocity on
substrate concentration. Assuming the Michaelis-Menten function as the
mean velocity at a given concentration level the function ` f1`
defined by

(defun f1 (b) (/ (* (select b 0) x1) (+ (select b 1) x1)))computes the list of mean response values at the points in

First we need initial estimates for the two model parameters.
Examining the expression for the Michaelis-Menten model shows that as
**x** increases the function approaches an asymptote, . The
second parameter, , can be interpreted as the value of **x**
at which the function has reached half its asymptotic value. Using
these interpretations for the parameters and a plot constructed by the
expression

(plot-points x1 y1)shown in Figure 19 we can read off reasonable initial estimates of 200 for and 0.1 for . The

**Figure 19:** Plot of reaction velocity against substrate concentration for
Puromycin experiment.

> (def puromycin (nreg-model #'f1 y1 (list 200 .1))) Residual sum of squares: 7964.19 Residual sum of squares: 1593.16 Residual sum of squares: 1201.03 Residual sum of squares: 1195.51 Residual sum of squares: 1195.45 Residual sum of squares: 1195.45 Residual sum of squares: 1195.45 Residual sum of squares: 1195.45 Least Squares Estimates: Parameter 0 212.684 (6.94715) Parameter 1 0.0641213 (0.00828094) R Squared: 0.961261 Sigma hat: 10.9337 Number of cases: 12 Degrees of freedom: 10 PUROMYCIN >

The function ` nreg-model` also takes several keyword arguments,
including ` :epsilon` to specify a convergence criterion and
` :count-limit`, a limit on the number of iterations. By default these
values are .0001 and 20, respectively. The algorithm for fitting the
model is a simple Gauss-Newton algorithm
with backtracking; derivatives are computed numerically.

To see how you can analyze the model further you can send
` puromycin` the ` :help` message. The result is very
similar to the help information for a linear regression model. The
reason is simple: nonlinear regression models have been implemented as
objects, with the nonlinear regression model prototype
` nreg-model-proto` inheriting from the linear regression model
prototype. The internal data, the method for computing estimates, and
the method of computing fitted values have been modified for nonlinear
models, but the other methods remain unchanged. Once the model has
been fit the Jacobian of the mean function at the estimated parameter
values is used as the **X** matrix. In terms of this definition most of
the methods for linear regression, such as the methods
` :coef-standard-errors` and ` :leverages`, still make
sense, at least as first order asymptotic approximations.

In addition to the messages for linear regression models a nonlinear regression model can respond to the messages

:COUNT-LIMIT :EPSILON :MEAN-FUNCTION :NEW-INITIAL-GUESS :PARAMETER-NAMES :THETA-HAT :VERBOSE

Tue Jan 21 15:04:48 CST 1997