# Fitting The Integral Of A Function

In some nonlinear regression applications, it may be necessary to fit data
to the integral of a function rather than to the function itself. For
example, the dependent variable might correspond to the area under a
Gaussian distribution between lower and upper X values, so the function
being fitted is the integral of the Gaussian distribution rather than the
Gaussian distribution itself.

To handle these situations, NLREG provides an "**Integral**" built-in, library
function that computes the numerical integral of a function or expression
using Romberg's method. Parameters whose values are being computed by NLREG
may be used in expressions for the lower and upper limits of the integration
interval, and they may be used in the expression that is being integrated.

The form of the **Integral** function is:
Integral(*variable*, *LowLimit*, *HighLimit*, *expression*[,
*tolerance*])

*Variable* is the name of a work variable that has been declared earlier
in the program using a DOUBLE statement. The expression is integrated over
this variable. *Variable* must consist only of a single variable name -- not
an expression or constant -- and the variable must be a work variable, not a
parameter or the dependent or independent variable.

*LowLimit* is the lower limit of the integration range, and
*HighLimit* is the upper limit of the integration range. Full
expressions may be used to specify the low and high limits. These
expressions may include operators, functions, parameters whose values are
being calculated and dependent variables.

*Expression* is the expression or function whose integral is to be
computed. It may contain parameters and dependent variables. Usually it
will contain the variable declared by the first argument (*variable*).

*Tolerance* is an optional argument that may be omitted; it specifies
the accuracy to which the integral will be computed. If you omit the
tolerance parameter, a default value of 1E-8 is used. If you specify the
tolerance parameter, its value must be in the range 1E-3 to 1E-14. As you
decrease the tolerance value (i.e., approach 1E-14), the accuracy of the
integral increases, and the computation time also increases -- sometimes
dramatically.

Here is an example NLREG program that fits the area under a Gaussian (normal
distribution) curve to a set of data values. The independent variable,
*x*, is the upper range of the region whose area corresponds to the
value of the dependent variable, *y*. That is, the value of *y*
corresponds to the area under the Gaussian from 0 up to *x*. Two
parameters are calculated: *mean* -- the mean value of the Gaussian
distribution, and *StdDev* -- the standard deviation of the
distribution. The **npd** built-in, library function
is used to compute the value of the Gaussian with a specified
mean and standard deviation at a specified x value. The three parameters
for **npd** are the x coordinate along the curve, the mean of the curve (i.e.,
center point of the distribution) and the standard deviation.

Variables x, y;
Parameters Mean, StdDev;
Double t;
Function y = Integral(t, 0, x, npd(t,Mean,StdDev));
Data;

In this example, the *t* work variable ranges from 0 to *x* as the
integral is computed; so the value of npd(t,Mean,StdDev) is the height of
the Gaussian for each value of *t* as *t* is swept across the
interval (0,*x*); the **Integral** function computes the area under the
curve across that interval.
NLREG home page