home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Education
/
collectionofeducationcarat1997.iso
/
SCIENCE
/
NONLIN25.ZIP
/
NONLIN.DOC
< prev
next >
Wrap
Text File
|
1993-08-02
|
127KB
|
2,591 lines
N O N L I N
Nonlinear Regression Analysis Program
Phillip H. Sherrod
Member, Association of Shareware Professionals (ASP)
Nonlin allows you to perform statistical regression
analyses to estimate the values of parameters for linear,
multivariate, polynomial, logistic, exponential, and
general nonlinear functions. The regression analysis
determines the values of the parameters which cause the
function to best fit the observed data that you provide.
Nonlin allows you to specify the function whose parameters
are being estimated using ordinary algebraic notation. In
addition to determining the parameter estimates, Nonlin
can be directed to generate an output file with predicted
values and residuals. It can also plot the data
observations and the computed function. Although designed
for regression analysis, Nonlin can also be used to find
the root (zero point) or minimum absolute value of a
nonlinear expression. Nonlin is in use at many
engineering and research centers around the world.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 Introduction to Regression Analysis . . . . . . . . . . . . 1
1.2 Introduction to Nonlin . . . . . . . . . . . . . . . . . . 2
1.3 Installing Nonlin . . . . . . . . . . . . . . . . . . . . . 3
2. Using Nonlin . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1 Function Specification . . . . . . . . . . . . . . . . . . 6
2.1.1 Arithmetic Operators . . . . . . . . . . . . . . . . . 6
2.1.2 Numeric Constants . . . . . . . . . . . . . . . . . . . 6
2.1.3 Symbolic Constants . . . . . . . . . . . . . . . . . . 6
2.1.4 Built-in Constants . . . . . . . . . . . . . . . . . . 6
2.1.5 Built-in Functions . . . . . . . . . . . . . . . . . . 7
2.2 Nonlin Command Files . . . . . . . . . . . . . . . . . . 10
3. Nonlin Commands . . . . . . . . . . . . . . . . . . . . . . 12
3.1 TITLE . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2 VARIABLES . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3 PARAMETERS . . . . . . . . . . . . . . . . . . . . . . . 12
3.4 CONFIDENCE . . . . . . . . . . . . . . . . . . . . . . . 13
3.5 CONSTANT . . . . . . . . . . . . . . . . . . . . . . . . 13
3.6 CONSTRAIN . . . . . . . . . . . . . . . . . . . . . . . . 14
3.7 COVARIANCE . . . . . . . . . . . . . . . . . . . . . . . 14
3.8 SWEEP . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.9 FUNCTION . . . . . . . . . . . . . . . . . . . . . . . . 15
3.10 TOLERANCE . . . . . . . . . . . . . . . . . . . . . . . 15
3.11 ITERATIONS . . . . . . . . . . . . . . . . . . . . . . . 15
3.12 REGISTER . . . . . . . . . . . . . . . . . . . . . . . . 16
3.13 OUTPUT . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.14 POUTPUT . . . . . . . . . . . . . . . . . . . . . . . . 17
3.15 PLOT . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.16 RPLOT . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.17 NPLOT . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.18 PRESOLUTION . . . . . . . . . . . . . . . . . . . . . . 20
3.19 WIDTH . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.20 NOECHO . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.21 DATA . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4. Understanding The Results . . . . . . . . . . . . . . . . . 22
4.1 Descriptive Statistics for Variables . . . . . . . . . . 22
4.2 Parameter Estimates . . . . . . . . . . . . . . . . . . . 22
4.3 t Statistic . . . . . . . . . . . . . . . . . . . . . . . 22
4.4 Prob(t) . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.5 Final Sum of Squared Deviations . . . . . . . . . . . . . 23
4.6 Average and Maximum Deviation . . . . . . . . . . . . . . 23
4.7 Proportion of Variance Explained . . . . . . . . . . . . 24
4.8 Adjusted Coefficient of Multiple Determination . . . . . 24
4.9 Durbin-Watson Statistic . . . . . . . . . . . . . . . . . 24
i
Contents ii
4.10 Analysis of Variance Table . . . . . . . . . . . . . . . 26
5. Theory of Operation . . . . . . . . . . . . . . . . . . . . 27
5.1 Minimization Algorithm . . . . . . . . . . . . . . . . . 27
5.2 Convergence Criterion . . . . . . . . . . . . . . . . . . 27
6. Hints for Nonlin Use . . . . . . . . . . . . . . . . . . . . 29
6.1 Convergence Failures . . . . . . . . . . . . . . . . . . 29
6.2 Singular Matrix Problems . . . . . . . . . . . . . . . . 30
6.3 Performance Issues . . . . . . . . . . . . . . . . . . . 30
6.4 Program Limits . . . . . . . . . . . . . . . . . . . . . 31
7. Example Analyses . . . . . . . . . . . . . . . . . . . . . . 32
8. Special Applications . . . . . . . . . . . . . . . . . . . . 36
8.1 Omitted Dependent Variable . . . . . . . . . . . . . . . 36
8.2 Root Finding and Expression Minimization . . . . . . . . 37
8.2.1 Function Minimization Examples . . . . . . . . . . . 39
9. Acknowledgement and Use of Nonlin . . . . . . . . . . . . . 40
9.1 Acknowledgement . . . . . . . . . . . . . . . . . . . . . 40
9.2 Use and Distribution of Nonlin . . . . . . . . . . . . . 40
9.3 Association of Shareware Professionals . . . . . . . . . 41
9.4 Copyright Notice . . . . . . . . . . . . . . . . . . . . 41
9.5 Disclaimer . . . . . . . . . . . . . . . . . . . . . . . 41
10. Other Software . . . . . . . . . . . . . . . . . . . . . . 42
10.1 Mathplot -- Mathematical Function Plotting Program . . . 42
10.2 TSX-32 -- Multi-User Operating System . . . . . . . . . 42
10.3 SIMSTAT -- Interactive Statistics Program . . . . . . . 43
11. Software Order Form . . . . . . . . . . . . . . . . . . . . 44
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Chapter 1
Introduction
1.1 Introduction to Regression Analysis
The goal of regression analysis is to determine the values of
parameters for a function that cause the function to best fit a
set of data observations that you provide. In linear regression,
the function is a linear (straight line) equation. For example,
if we assume the value of an automobile decreases by a constant
amount each year after its purchase, and for each mile driven, the
following linear function would predict its value (the dependent
variable) as a function of the two independent variables which are
age and miles:
value = price + depage*age + depmiles*miles
where 'value', the dependent variable, is the value of the car,
'age' is the age of the car, and 'miles' is the number of miles
that the car has been driven.
The regression analysis performed by Nonlin will determine the
best values of the three parameters, 'price', the estimated value
when age is 0 (i.e., when the car was new), 'depage', the
depreciation that takes place each year, and 'depmiles', the
depreciation for each mile driven. The values of 'depage' and
'depmiles' will be negative because the car loses value as age and
miles increase.
In a problem such as this car depreciation example, you must
provide a data file containing the values of the dependent and
independent variables for a set of observations. In this example
each observation record would contain three numbers: value, age,
and miles, collected from used car ads for the same model car.
The more observations you provide, the more accurate will be the
estimate of the parameters. The Nonlin commands to perform this
regression are shown below:
VARIABLES VALUE,AGE,MILES
PARAMETERS PRICE,DEPAGE,DEPMILES
FUNCTION VALUE = PRICE + DEPAGE*AGE + DEPMILES*MILES
DATA
(data values go here)
Once the values of the parameters are determined by Nonlin, you
can use the formula to predict the value of a car based on its age
1
Chapter 1. Introduction 2
and miles driven. For example, if Nonlin computed a value of
16000 for price, -1000 for depage, and -0.15 for depmiles, then
the function
value = 16000 - 1000*age - 0.15*miles
could be used to estimate the value of a car with a known age and
number of miles.
If a perfect fit existed between the function and the actual data,
the actual value of each car in your data file would exactly equal
the predicted value. Typically, however, this is not the case,
and the difference between the actual value of the dependent
variable and its predicted value for a particular observation is
the error of the estimate which is known as the "deviation" or
"residual". The goal of regression analysis is to determine the
values of the parameters which minimize the sum of the squared
residual values for the set of observations. This is known as a
"least squares" regression fit.
1.2 Introduction to Nonlin
Nonlin is a very powerful regression analysis program. Using it
you can perform multivariate, linear, polynomial, exponential,
logistic, and general nonlinear regression. What this means is
that you specify the form of the function to be fitted to the
data, and the function may include nonlinear terms such as
variables raised to powers and library functions such as log,
exponential, sine, etc. Nonlin uses a state-of-the-art regression
algorithm that works as well, or better, than any you are likely
to find in commercial statistical packages.
As an example of nonlinear regression, consider another
depreciation problem. The value of a used airplane decreases for
each year of its age. Assuming the value of a plane falls by the
same amount each year, a linear function relating value to age is:
Value = p0 + p1*Age
Where 'p0' and 'p1' are the parameters whose values are to be
determined. However, it is a well known fact that planes (and
automobiles) lose more value the first year than the second, and
more the second than the third, etc. This means that a linear
(straight line) function cannot accurately model this situation.
A better, nonlinear, function is:
Value = p0 + p1*exp(-p2*Age)
Where the 'exp' function is the value of e (2.7182818...) raised
to a power. This type of function is known as "negative
exponential" and is appropriate for modeling a value whose rate of
decrease is proportional to the difference between the value and
some base value. The F33YEAR.NLR example command file fits a
linear function to the value of used airplanes. The F33EXP.NLR
example fits a negative exponential function to the same data.
Chapter 1. Introduction 3
Run both examples and compare the fitted functions. See F33.NLR
for an example of a multiple regression using three independent
variables.
Much of the convenience of Nonlin comes from the fact that you can
enter complicated functions using ordinary algebraic notation.
Examples of functions that can be handled with Nonlin include:
Linear: Y = p0 + p1*X
Quadratic: Y = p0 + p1*X + p2*X^2
Multivariate: Y = p0 + p1*X + p2*Z + p3*X*Z
Exponential: Y = p0 + p1*exp(X)
Periodic: Y = p0 + p1*sin(p2*X)
Misc: Y = p0 + p1*Y + p2*exp(Y) + p3*sin(Z)
In other words, the function is a general expression involving one
dependent variable (on the left of the equal sign), one or more
independent variables, and one or more parameters whose values are
to be estimated.
Because of its generality, Nonlin can perform all of the
regressions handled by ordinary linear or multivariate regression
programs as well as nonlinear regression. However, in order to
handle nonlinear functions, Nonlin uses an iterative function
optimization algorithm which is slower than the simple linear
regression algorithm and has the potential for not converging to a
solution.
1.3 Installing Nonlin
The Nonlin system consists of the following files:
NONLIN.EXE -- The executable program.
NONLIN.DOC -- Documentation file.
NONLIN.FON -- Font file used if you request a plot.
NONLIN.LJF -- LaserJet font file (registered version only).
*.NLR -- Example command files.
REGISTER.DOC -- Form used to register your use of Nonlin.
To install Nonlin, copy the files into the directory of your
choice. The registered version of Nonlin includes a file named
NONLIN.LJF with the fonts needed for printing plots on HP LaserJet
printers. If you do not plan to generated hard copy output for a
LaserJet printer, you may delete the NONLIN.LJF file. If the
NONLIN.FON and NONLIN.LJF files are not in your current directory,
you must place a command of the following form in your
AUTOEXEC.BAT file to tell Nonlin where to look for its font files:
SET NONLIN=directory
Chapter 1. Introduction 4
Where "directory" is the name of the device and directory where
the files are located. For example, if the files are located in a
directory named NONLIN on the C disk, the following command could
be used:
SET NONLIN=C:\NONLIN
Chapter 2
Using Nonlin
Once Nonlin has been installed, it can be started using a DOS
command of the form:
NONLIN command_file [listing_file]
where "command_file" is the name of a file containing Nonlin
commands that control the analysis. The sections that follow
describe these commands. If you specify a command file name
without an extension, ".NLR" is used as the default extension. If
you omit the command file name, Nonlin prints a list of its
commands.
A "listing_file" parameter may be specified on the command line.
If you specify a file name, the output (results) of the regression
analysis are written to this file. If no file name is specified,
the output is written to a file with the same name as the
command_file but with the extension ".LST". If you specify a
listing file name without an extension, ".LST" is provided as the
default extension. Specify NUL for the listing_file if you do not
want to generate an output file.
For example, to process a command file named LINEAR.NLR, directing
output to a file named LINEAR.LST, use the following command:
NONLIN LINEAR
To do the same analysis, directing the output to a file named
MODEL1.LST, use the following command:
NONLIN LINEAR MODEL1
Normally Nonlin commands and computed results are displayed on the
screen and written to the listing file; however, if you place a
NOECHO command in your command file the screen display is
suppressed but the output is still written to the listing file.
At this point, I suggest you pause in your reading and try running
a Nonlin example to get a feel for how it works. Several example
files with the extension ".NLR" are provided with the
distribution. LINEAR.NLR is a good one to start with followed by
AIDS.NLR. If you do not have a graphics monitor, edit the
LINEAR.NLR command file (and other example files) and remove the
PLOT command.
5
Chapter 2. Using Nonlin 6
2.1 Function Specification
Much of the power of Nonlin comes from its ability to estimate the
value of parameters that are part of complicated functions that
you enter in ordinary algebraic form. This section explains the
arithmetic operators and built-in functions that are used to
specify a function.
2.1.1 Arithmetic Operators
The following arithmetic operators may be used in expressions:
+ addition
- subtraction or unary minus
* multiplication
/ division
** or ^ exponentiation
Exponentiation has the highest precedence, followed by
multiplication and division, and then addition and subtraction.
Parentheses may be used to group terms.
2.1.2 Numeric Constants
Numeric constants may be written in their natural form (1, 0, 1.5,
.0003, etc.) or in exponential form, n.nnnEppp, where n.nnn is the
base value and ppp is the power of ten by which the base is
multiplied. For example, the number 1.5E4 is equivalent to 15000.
All numbers are treated as "floating point" values, regardless of
whether a decimal point is specified or not. As a convenience for
entering time values, if a value contains one or more colons, the
portion to the left of the colon is multiplied by 60. For
example, 1:00 is equivalent to 60; 1:00:00 is equivalent to 3600.
2.1.3 Symbolic Constants
You can use the CONSTANT command to associate symbolic names with
constant numeric values. When you use the symbolic name in the
function the numeric value is substituted for the symbolic name.
2.1.4 Built-in Constants
There are two built-in numeric constants that may be specified
using symbolic names. The symbolic name "PI" is equivalent to the
value of pi, 3.14159... Similarly, the symbolic constant "E" is
equivalent to the base of natural logarithms, e, 2.7182818... You
may write PI and E using either upper or lower case.
Chapter 2. Using Nonlin 7
2.1.5 Built-in Functions
The following functions are built into Nonlin and may be used in
expressions:
ABS(x) -- Absolute value of x.
ACOS(x) -- Arc cosine of x. Angles are measured in radians.
ASIN(x) -- Arc sine of x. Angles are measured in radians.
ATAN(x) -- Arc tangent of x. Angles are measured in radians.
BETAI(x,a,b) -- Incomplete beta function: Ix(a,b). The incomplete
beta function can be used to compute a variety of statistical
functions. For example, the probability of Student's t with
'df' degrees of freedom can be computed with
BETAI(df/(df+t^2),.5*df,.5). The probability of the F
statistic with df1 and df2 degrees of freedom can be computed
with 2*BETAI(df2/(df2+df1*f),.5*df2,.5*df1).
COS(x) -- Cosine of x. Angles are measured in radians.
COSH(x) -- Hyperbolic cosine of x.
COT(x) -- Cotangent of x. (COT(x) = 1/TAN(x)). Angle in radians.
CSC(X) -- Cosecant of x. (CSC(x) = 1/SIN(x)). Angle in radians.
CTOP(angle) -- Convert an angle in the compass coordinate system
to a polar coordinate angle. The polar coordinate system has
the origin of an angle along the positive X axis and the angle
increases in a counter-clockwise direction. The compass
coordinate system has the positive Y axis as the origin (i.e.,
north) and the angle increases in a clockwise direction. The
angle must be specified in radians. The returned value is in
the range 0 to 2*pi. The PTOC function performs the reverse
transformation.
DEG(x) -- Converts an angle, x, measured in radians to the
equivalent number of degrees.
EI1(alpha,phi) -- Elliptic integral of the first kind. Computes
the integral from 0 to phi radians of the function
d.phi/sqrt(1-k**2*sin(phi)**2), where k = sin(alpha). alpha
and phi must be in the range 0 to pi/2.
EI2(alpha,phi) -- Elliptic integral of the second kind. Computes
the integral from 0 to phi radians of the function
sqrt(1-k**2*sin(phi)**2)*d.phi, where k = sin(alpha). alpha
and phi must be in the range 0 to pi/2.
EIC1(alpha) -- Complete elliptic integral of the first kind.
Computes the integral from 0 to pi/2 radians of the function
Chapter 2. Using Nonlin 8
d.phi/sqrt(1-k**2*sin(phi)**2), where k = sin(alpha). alpha
must be in the range 0 to (less than) pi/2.
EIC2(alpha) -- Complete elliptic integral of the second kind.
Computes the integral from 0 to pi/2 radians of the function
sqrt(1-k**2*sin(phi)**2)*d.phi, where k = sin(alpha). alpha
must be in the range 0 to pi/2.
ERF(x) -- Standard error function of x.
EXP(x) -- e (base of natural logarithms) raised to the x power.
FAC(x) -- x factorial (x!). Note, the FAC function is computed
using the GAMMA function (FAC(x)=GAMMA(x+1)) so non-integer
argument values may be computed.
GAMMA(x) -- Gamma function. Note, GAMMA(x+1) = x! (x factorial).
GAMMAI(x) -- Reciprocal of GAMMA function (GAMMAI(x) =
1/GAMMA(x)).
GAMMALN(x) -- Log (base e) of the GAMMA function.
HAV(x) -- Haversine of x. (HAV(x) = (1-COS(x))/2). Angle in
radians.
J0(x) -- Bessel function of the first kind, order zero.
J1(x) -- Bessel function of the first kind, order one.
JN(n,x) -- Bessel function of the first kind, order n.
LOG(x) -- Natural logarithm of x.
LOG10(x) -- Base 10 logarithm of x.
LOG2(x) -- Base 2 logarithm of x.
MAX(x1,x2) -- Maximum value of x1 or x2.
MIN(x1,x2) -- Minimum value of x1 or x2.
NORMAL(x) -- Normal probability distribution of x. X is in units
of standard deviations from the mean. See also the NPD
function. NORMAL(x) = NPD(x,0,1);
NPD(x,mean,std) -- Normal probability distribution of x with
specified mean and standard deviation. X is in units of
standard deviations from the mean.
PAREA(x) -- Area under the normal probability distribution curve
from -infinity to x. (i.e., integral from -infinity to x of
NORMAL(x)).
Chapter 2. Using Nonlin 9
PTOC(angle) -- Convert an angle in the polar coordinate system to
a compass coordinate angle. The polar coordinate system has
the origin of an angle along the positive X axis and the angle
increases in a counter-clockwise direction. The compass
coordinate system has the positive Y axis as the origin (i.e.,
north) and the angle increases in a clockwise direction. The
angle must be specified in radians. The returned value is in
the range 0 to 2*pi. The CTOP function performs the reverse
transformation.
PTORX(angle,distance) -- Convert a position in polar coordinates
to the corresponding rectangular coordinate. This function
returns the X coordinate of the position; use PTORY to obtain
the Y coordinate. Note: polar coordinates are specified in
radians with the positive X axis being the origin for the
angle and with the angle increasing in the counter-clockwise
direction.
PTORY(angle,distance) -- Convert a position in polar coordinates
to the corresponding rectangular coordinate. This function
returns the Y coordinate of the position; use PTORX to obtain
the X coordinate. Note: polar coordinates are specified in
radians with the positive X axis being the origin for the
angle and with the angle increasing in the counter-clockwise
direction.
PULSE(a,x,b) -- Pulse function. If the value of x is less than a
or greater than b, the value of the function is 0. If x is
greater than or equal to a and less than or equal to b, the
value of the function is 1. In other words, it is 1 for the
domain (a,b) and zero elsewhere. If you need a function that
is zero in the domain (a,b) and 1 elsewhere, use the
expression (1-PULSE(a,x,b)).
RAD(x) -- Converts an angle measured in degrees to the equivalent
number of radians.
RTOPA(x,y) -- Convert a rectangular coordinate (x,y) to the
corresponding polar coordinate (angle,distance). This
function returns the angle, use RTOPD to get the distance
coordinate. The returned value of the function is in units of
radians and is in the range 0 to 2*pi. Note: polar
coordinates are specified in radians with the positive X axis
being the origin for the angle and with the angle increasing
in the counter-clockwise direction.
RTOPD(x,y) -- Convert a rectangular coordinate to the
corresponding polar coordinate. This function returns the
distance from the origin, use RTOPA to get the angle. Note:
polar coordinates are specified in radians with the positive X
axis being the origin for the angle and with the angle
increasing in the counter-clockwise direction.
SEC(x) -- Secant of x. (SEC(x) = 1/COS(x)). Angle in radians.
Chapter 2. Using Nonlin 10
SEL(a1,a2,v1,v2) -- If a1 is less than a2 then the value of the
function is v1. If a1 is greater than or equal to a2, then
the value of the function is v2.
SIN(x) -- Sine of x. Angles are measured in radians. See
TREND.NLR for an example of a function with a sin term. See
also Section 4.9 for additional information about using sin
terms in functions.
SINH(x) -- Hyperbolic sine of x.
SQRT(x) -- Square root of x.
STEP(a,x) -- Step function. If x is less than a, the value of the
function is 0. If x is greater than or equal to a, the value
of the function is 1. If you need a function which is 1 up to
a certain value and then 0 beyond that value, use the
expression STEP(x,a). See PIECE.NLR for an example of this
function.
T(n,x) -- Chebyshev polynomial of order n.
TAN(x) -- Tangent of x. Angles are measured in radians.
TANH(x) -- Hyperbolic tangent of x.
Y0(x) -- Bessel function of the second kind, order zero.
Y1(x) -- Bessel function of the second kind, order one.
YN(n,x) -- Bessel function of the second kind, order n.
2.2 Nonlin Command Files
The commands described in this section are placed in a command
file. When you start Nonlin, you specify the name of the command
file as a parameter on the command line. For example, if the
command file name is CAR.NLR, the following command would cause
Nonlin to execute the commands in the command file:
NONLIN CAR.NLR
If you do not specify a file name extension for the command file,
".NLR" is used by default. The output of the regression for this
example would be written to a file named CAR.LST. Command files
can be created using a text editor such as EDIT-32, EDLIN, the DOS
EDIT program, or any other editor or word processor that is
capable of creating an ascii text file without formatting codes.
Comments may be placed in command files by preceding the comment
with an exclamation point. Entire lines may be used for comments
and comments can be placed at the end of commands.
Command lines can be continued by placing a semicolon character as
the last non-blank character on the line (a comment may follow the
Chapter 2. Using Nonlin 11
semicolon) and then continuing the command on the following
line(s).
Every command file must contain the following commands: VARIABLES,
PARAMETERS, FUNCTION, and DATA. The DATA statement introduces the
data for the analysis and must be the last command in the file
(data records may follow it). Other, optional, commands may be
interspersed in the command file. The following is an example of
a complete command file:
VARIABLES VALUE,AGE,MILES
PARAMETERS BASE,DEPAGE,DEPMILES
FUNCTION VALUE = BASE + DEPAGE*AGE + DEPMILES*MILES
DATA
(data records follow)
Chapter 3
Nonlin Commands
The following is a list of the valid Nonlin commands that can be
placed in a Nonlin command file. Command keywords may be
abbreviated to the first three letters except for CONSTANT,
CONSTRAIN, and CONFIDENCE which require six letters. Nonlin
commands are not case sensitive.
3.1 TITLE
TITLE string (optional) -- Specifies a title line that is printed
with the results of the analysis.
3.2 VARIABLES
VARIABLES var1,var2,... (required) -- Specifies the names of the
variables that will be used in the function. The dependent
variable and the independent variables must be specified. The
order of the variable names must match the order of the data
values on each observation record (the dependent variable may come
before or after the independent variables). You may define more
variables than you actually use in the function specification. A
maximum of 20 variables may be specified. The length of a
variable name is limited to 10 characters. Capitalize the
variable names as you want them displayed in the results.
You may specify all of the variables on a single command line
(which may be continued), or you may use multiple VARIABLES
commands. If you use multiple commands, the order in which they
appear in the command file must match the order of the variable
values on each observation record. The VARIABLES command must
precede the FUNCTION command. See F33.NLR for an example of a
multiple regression using three independent variables.
3.3 PARAMETERS
PARAMETERS param1[=initial1],param2[=initial2],... (required) --
Specifies the names of the parameters whose values are to be
determined by Nonlin. Nonlin is capable of handling up to 25
parameters. The parameter names may not exceed 10 characters in
length. Do not specify any parameters that are not used in the
function. The PARAMETERS command must precede the FUNCTION
command.
12
Chapter 3. Nonlin Commands 13
Optionally, an initial estimate of the parameter value may be
specified by following the parameter name with an equal sign and
the value. If no value is specified, 1 is used by default.
Specifying an initial value that is near the actual value usually
speeds up the operation of Nonlin and may enable it to
successfully converge to a solution. If Nonlin is unable to
converge to a solution, try specifying different starting values
for the parameters. Try to specify a value that at least has the
correct sign as the expected final value.
The CONSTRAIN command (see page 14) can be used to limit the range
of values for parameters. The SWEEP command (see page 14) can be
used to perform the regression analysis with a range of parameter
initial values. The CONSTANT command can be used to define a
parameter with a fixed value.
3.4 CONFIDENCE
CONFIDENCE [percent] (optional) -- Specifies that a confidence
interval is to be printed for each estimated parameter. The
purpose of regression analysis is to determine the best estimate
of parameter values. However, as with most statistical
calculations, the values determined are estimates of the true
values. The CONFIDENCE command causes Nonlin to print a table
showing the range of possible values for each parameter given a
specified confidence value. The "percent" parameter specifies the
probability that that the actual value of the parameter is within
the confidence interval to be computed. For example, the command
CONFIDENCE 95
specifies that the confidence interval(s) are to be computed such
that there is a 95 percent probability that the actual values of
the parameters are within the intervals (or that there is a 5
percent chance that the parameters are outside the intervals).
The "percent" parameter may range from 50 to 99.999. If the
CONFIDENCE command is used without specifying a percent value, 90
is used by default.
3.5 CONSTANT
CONSTANT parameter=value (optional) -- Specifies the name of a
symbolic constant and associates a numeric value. You may then
use the symbolic name in the function and the corresponding
constant numeric value will be substituted. This is useful when
you are trying out different models and want to easily be able to
change a constant value for each run. The CONSTANT commands must
precede the FUNCTION command. The following is an example of a
symbolic constant named "Roomtemp" that causes the value 73 to be
substituted in the function:
Chapter 3. Nonlin Commands 14
Variable Time ! Cooling time in seconds
Variable Temp ! Temperature of object
Constant Roomtemp = 73 ! Ambient temperature
Parameter InitTemp ! Initial temperature
Parameter Coolrate ! Cooling rate factor
Function Temp = Roomtemp + InitTemp * exp(-Coolrate * Time)
3.6 CONSTRAIN
CONSTRAIN parameter=lowvalue,highvalue (optional) -- Specifies a
lower and upper limit on the range of a parameter value. During
the solution process, Nonlin may allow a parameter's value to
temporarily move in a direction away from its final value. With
some functions it may be necessary to constrain the parameter's
value so that it does not go negative (e.g., if the function takes
the square root of the parameter), or zero (if the parameter is in
a denominator). If a parameter is tightly constrained, Nonlin may
report "singular convergence" because it is unable to converge to
an optimum value of the parameter; however, the estimated values
of other parameters may be useful.
Only a single parameter and its associated limits may be specified
on each CONSTRAIN command, but you may use multiple CONSTRAIN
commands. The PARAMETERS command must precede the CONSTRAIN
command. Use the CONSTANT command if you wish to define a
parameter with a fixed value.
The parameter value is allowed to range from 'lowvalue' to
'highvalue'. If you want to prevent a parameter value from going
to zero, you must specify a value greater than zero for the low
value (specifying zero would allow it to reach, but not go below,
zero). For example, the following command constrains the value of
'age' to be greater than zero and less than or equal to 100:
CONSTRAIN AGE = .0001,100
See the COOLING.NLR, F33EXP.NLR, and POWER.NLR files for examples
of the CONSTRAIN command.
3.7 COVARIANCE
COVARIANCE (optional) -- Causes the variance-covariance matrix for
the parameters to be printed.
3.8 SWEEP
SWEEP parameter=lowvalue,highvalue,stepsize (optional) --
Specifies that the regression analysis is to be performed
repeatedly with a set of starting values for the parameter. The
first analysis is performed with the parameter having the
'lowvalue'; the value of 'stepsize' is then added to the
parameter's initial value and the analysis is performed again.
The process is repeated until the value of the parameter reaches
'highvalue'.
Chapter 3. Nonlin Commands 15
Each time the analysis is performed the value of the residual sum
of squares is compared with the best previous result. The
estimated values of the parameters for the best starting value are
saved and used for the final analysis and report.
Only one parameter may be specified on each SWEEP command, but you
may have as many SWEEP commands as there are parameters. The
number of regression analyses performed will be equal to the
product of the number of parameter values for each SWEEP command.
The SWEEP command is useful when you are trying to fit a
complicated function that may have "local minimum" values other
than the "global minimum". Periodic functions (sin, cos, etc.)
are especially troublesome.
See the SINE.NLR command file for an example of the SWEEP command.
3.9 FUNCTION
FUNCTION depvar = function (required) -- Specifies the form of the
function whose parameters are to be determined. The dependent
variable must be the only thing to the left of the equal sign.
The expression to the right of the equal sign may contain
variables, parameters, constants, operators, and library functions
such as sqrt, sin, exp, etc. The VARIABLES and PARAMETERS
commands must have appeared in the command file before the
FUNCTION command, and all variables and parameters used in the
function must have been specified on those commands. Some example
FUNCTION commands are show below:
FUNCTION Y = P0 + P1*X
FUNCTION DISTANCE = .5 * ACCEL * TIME^2
FUNCTION VALUE = PRICE + YRDEP*AGE + MILEDEP*MILES
FUNCTION POPULATN = BASE * GROWRATE * EXP(TIME)
3.10 TOLERANCE
TOLERANCE value (optional, default=1E-10) -- Specifies the
tolerance factor that is used to determine when the algorithm has
converged to a solution. Reducing the tolerance value may produce
a slightly more accurate result but will increase the number of
iterations and the running time. The tolerance value must be in
the range 1E-15 to 1E-1.
3.11 ITERATIONS
ITERATIONS value (optional, default=50) -- Specifies the maximum
number of iterations that should be attempted by the algorithm.
If the solution does not converge to the limit specified by the
TOLERANCE command (or to the default tolerance) before the maximum
number of iterations is reached, the process is stopped and the
Chapter 3. Nonlin Commands 16
results are printed. Failure to converge before the specified
number of iterations could be caused by one of three things:
1. The maximum allowed number of iterations may be too small.
Try using an ITERATIONS command with a larger value.
2. The tolerance factor may be too small. Even a properly
converging solution will eventually "level off" or oscillate
around a good, but non-zero, sum of squares value. Try using
the TOLERANCE command to increase the tolerance value.
3. The function may not be converging. Try specifying better (or
at least different) starting values for the parameters on the
PARAMETERS command. Consider using the SWEEP command to
specify a range of parameter starting values.
3.12 REGISTER
REGISTER (optional) -- The REGISTER command suppresses the
copyright and registration message that is otherwise written to
the listing file generated by the shareware version of Nonlin.
The REGISTER command performs no function for the registered
version of Nonlin. The use of this command is a reminder that you
should register your use of Nonlin. Note, if you find Nonlin to
be useful, educational, or entertaining you are expected to
register your use so that the author can be justly compensated and
that development of the program can continue. Use the form in
REGISTER.DOC (or on page 44) to register your use.
3.13 OUTPUT
OUTPUT [TO file] var1,var2,... (optional) -- Specifies that after
the analysis is completed, data values are to be printed or
written to a file. If the "TO file" portion of the command is
specified, the output is written to the specified file. If this
portion of the command is omitted, the output values are printed
along with the results. If a file name is specified without an
extension, ".OUT" is used by default.
The list of variable names determines which variables are written
to the file and the order in which the values appear in each
output record. Any variable previously declared on a VARIABLES
command may be specified. In addition, the following special
variable names may appear in the output list:
$OBS -- The observation record number, starting at 1 and
increasing by 1.
$PREDICTED -- The predicted value for the dependent variable for
the observation, given the independent variable values and the
parameters as calculated by the analysis.
$RESIDUAL -- The difference between the actual value of the
dependent variable and its predicted value.
Chapter 3. Nonlin Commands 17
Examples of OUTPUT commands are shown below:
OUTPUT AGE,MILES,VALUE,$PREDICTED,$RESIDUAL
OUTPUT TO GROWTH.DAT $OBS,TIME,POPULATN,$PREDICTED
3.14 POUTPUT
POUTPUT file (optional) -- The POUTPUT command specifies that
Nonlin is to write the final estimated values of the parameters to
a file. Each parameter value is written to a separate line of the
file. This command is useful to create a file of estimated
parameter values to be fed into another analysis program. This
command can also be used to determine the parameter estimates to
more significant digits than displayed in the printed listing
because the format used by the POUTPUT command writes the values
with 18 significant digits.
3.15 PLOT
PLOT [options] (optional) -- Display a plot of the calculated
function and the data observations. The PLOT command can only
handle a single independent variable (multiple independent
variables would require an n-dimensional surface plot); however,
there is no restriction on the number of parameters being
estimated. If your function has more than one independent
variable you can use the RPLOT command (see Section 3.16).
You must have a CGA, EGA, or VGA monitor to use the PLOT command,
and the NONLIN.FON font file must be in the current directory or
in a directory specified by the NONLIN environment variable. In
the plot, the data values you provided are shown as blue X's and
the function fitted to the data by Nonlin is shown as a solid
green line. Press Return to proceed with the analysis after you
have finished looking at the plot.
The following options may be specified on the PLOT command:
GRID -- display grid lines to make it easier to estimate values.
RESIDUAL -- draw vertical lines from each observed data point to
the corresponding point on the calculated function line.
These lines represent the "residual" value that Nonlin is
attempting to minimize. See also the descriptions of the
RPLOT and NPLOT commands on pages 18 and 19.
ITERATION -- draw a plot for each iteration of the regression
analysis. Normally, the plot is drawn after the analysis has
converged to a solution; you may use the ITERATION option to
observe the function during each iteration of the analysis as
it converges to fit the data.
VALUES -- use in conjunction with the ITERATION option to cause
the current parameter values to be displayed before the plot
for the current iteration.
Chapter 3. Nonlin Commands 18
PRINT -- print a copy of the plot on an HP LaserJet printer. This
option is only available in the registered version of Nonlin.
Nonlin writes the plot to the PRN device which much be
attached to an HP Series II or Series III printer. The
NONLIN.LJF font file must be in the current directory or in a
directory specified by the NONLIN environment variable.
NOPAUSE -- do not pause after the plot is displayed. Normally,
Nonlin pauses after displaying a plot to allow you time to
examine it; you press Enter to continue execution once you
have finished looking at the plot. The NOPAUSE option causes
Nonlin to continue with execution without pausing after the
plot is displayed. This is useful in conjunction with the
PRINT option when Nonlin is run in a batch file and you want
to generate a hardcopy plot but not pause after the screen
display.
The option keywords may be abbrievated to their first letter. If
more than one option is specified, separate them with commas. For
example, to produce a plot with both grid lines and residual
lines, use the following command:
PLOT GRID,RESIDUAL
3.16 RPLOT
RPLOT [options] (optional) -- Display a plot of the residual
values. A "residual" value (or error deviation) is the difference
between an actual value of the dependent variable for an
observation and the predicted value based on the function fitted
by the regression analysis. If the calculated function exactly
predicted the actual observation values, all of the residual
values would be zero. However, this is usually not the case and
the residual values show where, and by how much, the fitted
function fails to predict the actual observations.
The RPLOT command causes Nonlin to display a plot showing the
residual values on the vertical (Y) axis. If there is only a
single independent variable it is used for the horizontal (X)
axis. However, if there is more than one independent variable,
you can use the "V=variable" option to specify which variable to
use on the X axis. If there is more than one independent variable
and you do not use the "V" option, Nonlin displays the residual
values on the vertical (Y) axis and the dependent variable values
on the horizontal (X) axis. The plot title indicates which
variable was used for the X axis.
A residual plot is very useful for determining if the form of the
function being fitted is appropriate for the data values. If the
residual values are randomly distributed in positive and negative
directions then the form (shape) of the fitted function is
probably appropriate for the data and the deviations are due to
random measurement errors. If, however, the residuals show a
systematic pattern such as a periodic cycle, then the function may
not be appropriate for the data values. See the discussion of the
Chapter 3. Nonlin Commands 19
Durbin-Watson statistic in Section 4.9, page 24, for additional
information about autocorrelated residual values. The PLOT,
RPLOT, and NPLOT commands may be used in the same command file.
Press Return to proceed with the analysis after you have finished
looking at the plot.
The following options may be specified on the RPLOT command:
PRINT -- print a copy of the plot on an HP LaserJet printer. This
option is only available in the registered version of Nonlin.
Nonlin writes the plot to the PRN device which much be
attached to an HP Series II or Series III printer.
NOPAUSE -- do not pause after the plot is displayed. Normally,
Nonlin pauses after displaying a plot to allow you time to
examine it; you press Enter to continue execution once you
have finished looking at the plot. The NOPAUSE option causes
Nonlin to continue with execution without pausing after the
plot is displayed.
GRID -- Display grid lines on the plot.
V=variable -- specify which variable is to be used for the
horizontal (X) axis. For example, V=YEAR would cause the
"YEAR" variable to be used for the X axis.
The option keywords may be abbrievated to their first letter. If
more than one option is specified, separate them with commas.
3.17 NPLOT
NPLOT [options] (optional) -- Display a normal probability plot of
the residual values. In this plot, the actual value of each
residual is plotted on the vertical (Y) axis and the expected
value of the residual, assuming the residuals are normally
distributed, is plotted on the horizontal (X) axis. If the
residuals are normally distributed, the resulting plot will be a
straight line passing through the origin with a slope of 1 (i.e.,
the actual value of each residual should equal the expected value
from the normal distribution). If the residuals are not normally
distributed, the plot will deviate from a straight line.
This plot also computes the correlation between the actual
residual values and their expected values and displays the
correlation coefficient in the title line "(r=n.nn)". If the
residual values are normally distributed, the correlation should
be close to 1.00. A correlation value less than 0.94 suggests
that the residuals are not normally distributed.
The NPLOT command may be used even if there is more than one
independent variable. The PLOT, RPLOT, and NPLOT commands may be
used in the same command file. Press Return to proceed with the
analysis after you have finished looking at the plot.
Chapter 3. Nonlin Commands 20
The following options may be specified on the NPLOT command:
GRID -- display grid lines to make it easier to estimate values.
PRINT -- print a copy of the plot on an HP LaserJet printer. This
option is only available in the registered version of Nonlin.
Nonlin writes the plot to the PRN device which much be
attached to an HP Series II or Series III printer.
NOPAUSE -- do not pause after the plot is displayed.
The option keywords may be abbrievated to their first letter. If
more than one option is specified, separate them with commas.
DOMAIN lowvalue,highvalue (optional) -- Specifies the domain over
which the plot is to be generated. If the DOMAIN statement is
omitted, the domain of the independent variable is used for the
plot. The DOMAIN statement can be used to generate a plot of the
fitted function extrapolated over the specified domain. You can
also use the DOMAIN command to restrict the domain and "zero in"
on a particular range of the function. The DOMAIN command only
affects the PLOT command; it does not affect the regression
calculation or the RPLOT or NPLOT commands.
3.18 PRESOLUTION
PRESOLUTION value (optional) -- Specifies whether plots sent to HP
LaserJet printers should use 150 or 300 dot-per-inch resolution.
This option is only available in the registered version of Nonlin.
The value parameter must be 150 or 300. The default value is 150
causes the plots to use most of the horizontal width of an 8.5x11
inch page. These plots are suitable for direct transfer to
overhead transparencies. Specifying 300 for the resolution
produces smaller plots that are suitable for inclusion in printed
documents.
3.19 WIDTH
WIDTH value (optional) -- Specify the width, in inches, of printed
plots. This option is only available in the registered version of
Nonlin. Due to memory space considerations, the maximum width is
limited to about 7.9 inches for 150 DPI resolution and 4.5 inches
for 300 DPI resolution. If you have limited memory space, you may
have to reduce the width to be able to produce printed plots.
This statement is ignored unless you request that a plot be
printed.
3.20 NOECHO
NOECHO (optional) -- Specifies that the commands and computed
results are not to be listed on the screen. The output is still
written to the listing file and any requested plots are displayed
on the screen.
Chapter 3. Nonlin Commands 21
3.21 DATA
DATA [file] (required) -- Specifies the name of the file
containing the data records, or introduces the data records which
follow the command. If a file name is specified on the DATA
command, the file is opened, its data records are read, and the
regression analysis is performed. If a file name is specified
without an extension, ".DAT" is used by default.
If no file name is specified on the DATA command, the data records
must immediately follow the DATA command in the command file.
Each data record must contain at least as many data values as the
number of variables specified on the VARIABLES command(s). The
order of the variables as specified on the VARIABLES command must
match the order of the values in each observation. Any data
values beyond those required for the specified variables are
ignored. Each observation must begin on a new line.
The data values must be separated by one or more spaces and/or a
comma. Data values may contain decimal points and may be
expressed in exponential notation (i.e., n.nnnnEppp). As a
convenience for entering time values, if a value contains one or
more colons, the portion to the left of the colon is multiplied by
60. For example, 1:00 is equivalent to 60; 1:00:00 is equivalent
to 3600.
You may continue data lines by specifying a semicolon as the last
non-blank character on a record and then placing the continuation
value on the following line(s).
The DATA command must be the last command in the command file. If
no file name is specified on the DATA command, the data records
must immediately follow the DATA command in the command file. The
following is an example of a complete command file including data
records:
VARIABLES AGE,MILES,VALUE
PARAMETERS BASE,DEPAGE,DEPMILES
FUNCTION VALUE = BASE + DEPAGE*AGE + DEPMILES*MILES
DATA
2 10000 13000
4 42000 9000
1 7000 17000
6 52000 6000
5 48000 8000
If the data records had been placed in a separate file named
CAR.DAT, the DATA statement would be changed to "DATA CAR.DAT".
Chapter 4
Understanding The Results
4.1 Descriptive Statistics for Variables
Nonlin prints a variety of statistics at the end of each analysis.
For each variable, Nonlin lists the minimum value, the maximum
value, the mean value, and the standard deviation. You should
confirm that these values are within the ranges you expect.
4.2 Parameter Estimates
For each parameter, Nonlin displays the initial parameter estimate
(which you specified on the PARAMETER command, or 1 by default),
the final (maximum likelihood) estimate, the standard error of the
estimated parameter value, the "t" statistic comparing the
estimated parameter value with zero, and the significance of the t
statistic. Nine significant digits are displayed for the
parameter estimates. If you need to determine the parameters to
greater precision, use the POUTPUT command.
The final estimate parameter values are the results of the
analysis. By substituting these values in the equation you
specified to be fitted to the data, you will have a function that
can be used to predict the value of the dependent variable based
on a set of values for the independent variables. For example, if
the equation being fitted is
y = p0 + p1*x
and the final estimates are 1.5 for p0 and 3 for p1, then the
equation
y = 1.5 + 3*x
is the best equation of this form that will predict the value of y
based on the value of x.
4.3 t Statistic
The "t" statistic is computed by dividing the estimated value of
the parameter by its standard error. This statistic is a measure
of the likelihood that the actual value of the parameter is not
zero. The larger the absolute value of t, the less likely that
the actual value of the parameter could be zero.
22
Chapter 4. Understanding The Results 23
4.4 Prob(t)
The "Prob(t)" value is the probability of obtaining the estimated
value of the parameter if the actual parameter value is zero. The
smaller the value of Prob(t), the more significant the parameter
and the less likely that the actual parameter value is zero. For
example, assume the estimated value of a parameter is 1.0 and its
standard error is 0.7. Then the t value would be 1.43 (1.0/0.7).
If the computed Prob(t) value was 0.05 then this indicates that
there is only a 0.05 (5%) chance that the actual value of the
parameter could be zero. If Prob(t) was 0.001 this indicates
there is only 1 chance in 1000 that the parameter could be zero.
If Prob(t) was 0.92 this indicates that there is a 92% probability
that the actual value of the parameter could be zero; this implies
that the term of the regression equation containing the parameter
can be eliminated without significantly affecting the accuracy of
the regression.
One thing that can cause Prob(t) to be 1.00 (or near 1.00) is
having redundant parameters. If at the end of an analysis several
parameters have Prob(t) values of 1.00, check the function
carefully to see if one or more of the parameters can be removed.
Also try using a CONSTANT command to set one or more of the
parameters to a reasonable fixed value; if the other parameters
suddenly become significant (i.e., Prob(t) much less than 1.00)
then the parameters are mutually dependent and one or more should
be removed. See Section 6.2 for more information about mutually
dependent parameters.
The t statistic probability is computed using a two-sided test.
The CONFIDENCE command can be used to cause Nonlin to print
confidence intervals for parameter values. The SQUARE.NLR example
regression includes an extraneous parameter (p0) whose estimated
value is much smaller than its standard error; the Prob(t) value
is 0.99982 indicating that there is a high probability that the
value is zero.
4.5 Final Sum of Squared Deviations
In addition to the variable and parameter values, Nonlin displays
several statistics that indicate how well the equation fits the
data. The "Final sum of squared deviations" is the sum of the
squared differences between the actual value of the dependent
variable for each observation and the value predicted by the
function, using the final parameter estimates.
4.6 Average and Maximum Deviation
The "Average deviation" is the average over all observations of
the absolute value of the difference between the actual value of
the dependent variable and its predicted value.
The "Maximum deviation for any observation" is the maximum
difference (ignoring sign) between the actual and predicted value
of the dependent variable for any observation.
Chapter 4. Understanding The Results 24
4.7 Proportion of Variance Explained
The "Proportion of variance explained (R^2)" indicates how much
better the function predicts the dependent variable than just
using the mean value of the dependent variable. This is also
known as the "coefficient of multiple determination." It is
computed as follows: Suppose that we did not fit an equation to
the data and ignored all information about the independent
variables in each observation. Then, the best prediction for the
dependent variable value for any observation would be the mean
value of the dependent variable over all observations. The
"variance" is the sum of the squared differences between the mean
value and the value of the dependent variable for each
observation. Now, if we use our fitted function to predict the
value of the dependent variable, rather than using the mean value,
a second kind of variance can be computed by taking the sum of the
squared difference between the value of the dependent variable
predicted by the function and the actual value. Hopefully, the
variance computed by using the values predicted by the function is
better (i.e., a smaller value) than the variance computed using
the mean value. The "Proportion of variance explained" is
computed as 1 - (variance using predicted value / variance using
mean). If the function perfectly predicts the observed data, the
value of this statistic will be 1.00 (100%). If the function does
no better a job of predicting the dependent variable than using
the mean, the value will be 0.00.
4.8 Adjusted Coefficient of Multiple Determination
The "adjusted coefficient of multiple determination (Ra^2)" is an
R^2 statistic adjusted for the number of parameters in the
equation and the number of data observations. It is a more
conservative estimate of the percent of variance explained,
especially when the sample size is small compared to the number of
parameters. It is computed using the formula:
Ra^2 = 1 - (n-1)/(n-p) * (1-R^2)
where 'n' is the number of observations, 'p' is the number of
parameters, and 'R^2' is the unadjusted coefficient of multiple
determination.
4.9 Durbin-Watson Statistic
The "Durbin-Watson test for autocorrelation" is a statistic that
indicates the likelihood that the deviation (error) values for the
regression have a first-order autoregression component. The
regression models assume that the error deviations are
uncorrelated.
In business and economics, many regression applications involve
time series data. If a non-periodic function, such as a straight
line, is fitted to periodic data the deviations have a periodic
form and are positively correlated over time; these deviations are
said to be "autocorrelated" or "serially correlated."
Chapter 4. Understanding The Results 25
Autocorrelated deviations may also indicate that the form (shape)
of the function being fitted is inappropriate for the data values
(e.g., a linear equation fitted to quadratic data).
If the deviations are autocorrelated, there may be a number of
consequences for the computed results: 1) The estimated regression
coefficients no longer have the minimum variance property; 2) the
mean square error (MSE) may seriously underestimate the variance
of the error terms; 3) the computed standard error of the
estimated parameter values may underestimate the true standard
error, in which case the t values and confidence intervals may be
incorrect. Note that if an appropriate periodic function is
fitted to periodic data, the deviations from the regression will
be uncorrelated because the cycle of the data values is accounted
for by the fitted function.
Small values of the Durbin-Watson statistic indicate the presence
of autocorrelation. Consult significance tables in a good
statistics book for exact interpretations; however, a value less
than 0.80 usually indicates that autocorrelation is likely. If
the Durbin-Watson statistic indicates that the residual values are
autocorrelated, it is recommended that you use the RPLOT and/or
NPLOT commands to display a plot of the residual values.
If the data has a regular, periodic component you can try
including a sin term in your function. The TREND.NLR example fits
a function with a sin term to data that has a linear growth with a
superimposed sin component. With the sin term the function has a
residual value of 29.39 and a Durbin-Watson value of 2.001;
without the sin term (i.e., fitting only a linear function) the
residual value is 119.16 and the Durbin-Watson value is 0.624
indicating strong autocorrelation. The general form of a sin term
is
amplitude*sin(2*pi*(x-phase)/period)
where 'amplitude' is a parameter that determines the magnitude of
the sin component, 'period' determines the period of the
oscillation, and 'phase' determines the phase relative to the
starting value. If you know the period (e.g., 12 for monthly data
with an annual cycle) you should specify it rather than having
Nonlin attempt to determine it.
If an NPLOT command is used to produce a normal probability plot
of the residuals, the correlation between the residuals and their
expected values (assuming they are normally distributed) is
printed in the listing. If the residuals are normally
distributed, the correlation should be close to 1.00. A
correlation less than 0.94 suggests that the residuals are not
normally distributed.
Chapter 4. Understanding The Results 26
4.10 Analysis of Variance Table
An "Analysis of Variance" table provides statistics about the
overall significance of the model being fitted.
Chapter 5
Theory of Operation
5.1 Minimization Algorithm
Nonlin uses a model/trust-region technique along with an adaptive
choice of the model Hessian. The algorithm is essentially a
combination of Gauss-Newton and Levenberg-Marquardt methods;
however, the adaptive algorithm often works much better than
either of these methods alone.
The basis for the minimization technique used by Nonlin is to
compute the sum of the squared residuals for one set of parameter
values and then slightly alter each parameter value and recompute
the sum of squared residuals to see how the parameter value change
affects the sum of the squared residuals. By dividing the
difference between the original and new sum of squared residual
values by the amount the parameter was altered, Nonlin is able to
determine the approximate partial derivative with respect to the
parameter. This partial derivative is used by Nonlin to decide
how to alter the value of the parameter for the next iteration.
If the function being modeled is well behaved, and the starting
value for the parameter is not too far from the optimum value, the
procedure will eventually converge to the best estimate for the
parameter. This procedure is carried out simultaneously for all
parameters and is, in fact, a minimization problem in
n-dimensional space, where 'n' is the number of parameters.
For a much more detailed explanation of the regression algorithm
used by Nonlin see ACM Transactions on Mathematical Software 7,3
(Sept. 1981) "Dennis, J.E., Gay, D.M., and Welsch, R.E. -- An
adaptive nonlinear least-squares algorithm."
5.2 Convergence Criterion
Nonlin has several convergence criterion that stop the iterative
minimization procedure. The TOLERANCE command can be used to
alter the convergence tolerance value.
Two internal variables are used to determine when convergence has
occurred. RFCTOL has a default value of 1E-10 and can be altered
by use of the TOLERANCE command. AFCTOL has a default value of
1E-20 and is only altered by the TOLERANCE command if the value
specified is less than the default value. In the discussion which
27
Chapter 5. Theory of Operation 28
follows the "function value" is half the sum of the squared
residuals computed using the current parameter estimates.
"Relative function convergence" is reported if the predicted
maximum possible function reduction is at most RFCTOL*ABS(F0)
where F0 is the function value at the start of the current
iteration, and if the last step attempted achieved no more than
twice the predicted function decrease.
"Absolute function convergence" is reported if the function value
is less than AFCTOL.
Chapter 6
Hints for Nonlin Use
6.1 Convergence Failures
One of the potential problems that confronts any nonlinear
minimization procedure is non-convergence. Non-convergence is
usually not a problem for regressions using a linear model, but
becomes a more serious consideration when using complicated
nonlinear functions; increasing the number of parameters
aggravates the problem.
Non-convergence can occur in two ways: the solution may diverge or
it may converge to the wrong solution -- a local minimum rather
than the global minimum. Periodic functions, such as sin, and
cos, are particularly prone to convergence problems. For example,
consider a nonlinear regression performed with the function:
y = offset + amplitude * sin(frequency * x)
where x and y are variables, and offset, amplitude, and frequency
are the parameters whose values are to be determined. If the
starting value for frequency is not reasonably close to the
correct value, the solution may converge to a harmonic (multiple)
or subharmonic (fundamental) value of the frequency. A command
file named SINE.NLR is supplied with the commands and data to
perform this analysis.
The SWEEP command can be very useful in cases like the sine
example. In the SINE.NLR example analysis, the actual value of
the frequency is 3; the function converges to the correct solution
if the starting value is in the range 2.6 to 3.3. However, this
example is quite insensitive to the starting value of the
amplitude parameter. With an actual value of 2, the correct
solution is found with starting values from 1 through 10000.
Similarly, the offset parameter, which had an actual value of 10,
was successfully determined with starting values ranging from 1 to
over 50000.
Another example which is sensitive to a parameter starting value
is POWER.NLR which attempts to determine the values of the
parameters p0, p1, and p2 for the function
y = p0 + p1*x^p2
29
Chapter 6. Hints for Nonlin Use 30
(where "x^p2" means x raised to the p2 power). The actual value
of p2 in the example data is 2; the solution converges correctly
if the starting value of p2 is in the range 1.8 to 3.8. As with
the other example, the solution is relatively insensitive to the
starting values of p0 and p1.
6.2 Singular Matrix Problems
Another possible problem is that the analysis may stop with the
message "Singular convergence. Mutually dependent parameters?".
This is usually due to one of two things: (1) a redundant
parameter that is co-dependent with another parameter, or (2) a
situation where the value of one parameter "blocks" the effect of
other parameters. As an example of a redundant parameter,
consider the function
y = p0 + p1*p2*x
This is a simple linear equation except there are two parameters,
p1, and p2, which are both factors to the variable x. It should
be clear that there is no unique solution to this problem since
any value of p1 is possible if the right value of p2 is chosen.
Similarly, the function
y = p0 + p1 + p2*x
has no unique solution since either p0 or p1 is redundant.
Similarly, in the equation
y = p0 + p1*exp(x+p2)
either p1 or p2 is redundant.
The second type of singular matrix problem can be illustrated by
the function
y = p0 + p1*x^p2
If, during the solution process, p1 takes on the value 0, then
varying the value of p2 has no effect on the equation and Nonlin
cannot figure out which way to change the value of p2 to move
toward convergence. The solution to this problem is to assign a
starting value that is not zero to p1, and use the CONSTRAIN
command to force p1 to remain non-zero.
6.3 Performance Issues
Nonlin is carefully programmed and compiled with an optimizing
compiler for maximum performance. However, Nonlin is a real
"number cruncher," and the nonlinear regression algorithm is
mathematically very elaborate. During each iteration, Nonlin
computes gradients, Jacobians, Hessians, and eigenvalues, and
performs QR and Cholesky matrix decompositions. All calculations
are carried out using double precision (64 bit) floating point.
Chapter 6. Hints for Nonlin Use 31
Nonlin does not require an 80x87 numeric coprocessor, but its
performance is greatly enhanced if one is present. In fact, an
8088 CPU with an 8087 numeric coprocessor can perform regression
analyses faster than a 20 MHz 80386 that does not have a
coprocessor. If you have an 8088 without a coprocessor, be
patient -- Nonlin is probably giving it the workout of its life.
Very long running times can result if you use the SWEEP command
with many starting values. The problem is compounded if you have
multiple SWEEP commands. If you use the SWEEP command to try a
large number of starting parameter values, you can save time by
using the ITERATIONS command to specify a small number of
iterations (such as 5) during the initial attempt to find a
solution. Once a feasible set of starting parameter values has
been determined, remove the SWEEP command, specify the starting
values on the PARAMETERS command, increase the number of
iterations, and rerun the analysis to get the final result.
6.4 Program Limits
The following is a summary of the Nonlin program limitations:
Maximum number of variables = 20
Maximum number of parameters = 25
Maximum length of variable or parameter names = 10
The maximum number of data observations that Nonlin can handle
depends on the number of parameters as shown by the table that
follows:
# Parameters Max Observations
1 2019
2 1611
3 1339
4 1144
5 997
6 883
7 791
8 715
9 652
10 599
Chapter 7
Example Analyses
A number of example regression analysis files are provided with
your Nonlin distribution. All of the example command files have
the extension ".NLR". Some of the important ones are described
below, others contain comment lines that explain what they do.
LINEAR.NLR -- Simple linear regression with plotted function and
data.
QUAD.NLR -- Fit a quadratic equation. Plot the function and the
data.
ASYMPTOT.NLR -- Fit an asymptotic function Y = 12 - 10/X.
AIDS.NLR -- A logistic curve is a growth curve used to model
functions which increase gradually at first, more rapidly in
the middle growth period, and slowly at the end, leveling off
at a maximum value after some period of time. This type of
curve is frequently used to model biological growth patterns
where there is an initial exponential growth period followed
by a leveling off as more of the population is infected or as
the food supply or some other factor limits further growth.
The form of the symmetric logistic growth function is:
y = k / (1 + exp(a + b*x))
where 'k', 'a', and 'b' are parameters that shape and scale
the function. The value of 'b' is negative.
The AIDS.NLR example fits a logistic curve to the number of
new cases of AIDS reported in the United States during the
period 1981 through 1992. The computed function fits the data
remarkably well showing that the AIDS infection rate is
following a classic logistic curve and should level off at
about 47,500 new cases per year (in the United States). The
DOMAIN command is used to cause Nonlin to extrapolate the plot
of the function through 1995.
F33.NLR -- Multivariate linear regression (multiple regression).
Calculate the value of a used Beech F33 Bonanza airplane using
a linear model based on its age, the number of hours on its
airframe, and the number of hours on its engine. The t value
and Prob(t) indicate that the number of hours on the engine
('Engdep' parameter) is not significant to the regression
32
Chapter 7. Example Analyses 33
model; the other parameters are significant but airframe hours
is less significant than the base price and age of the plane.
F33YEAR.NLR -- Similar to F33.NLR except the price of the Bonanza
is calculated based on a linear function of only the age.
F33EXP.NLR -- Similar to F33YEAR.NLR except a negative exponential
function is used rather than a linear function. Compare the
fit of this model with that of the F33YEAR.NLR example.
SINE.NLR -- Fit an equation involving a sin function. The SWEEP
command is used to find a starting point that will converge.
TREND.NLR -- Fit a function that has a linear growth term and a
periodic component involving a sin term. See Section 4.9 for
additional information about this example.
SQUARE.NLR -- Fit a sine series to a square wave. Note in this
example that the 'p0' parameter, which represents the constant
term of the equation, has an estimated value of 9.22715E-006
(very nearly zero) and a standard error of 0.0398754. This
yields a t value of nearly zero and Prob(t) of 0.99982 which
means that there is a 99.982% chance that the actual value of
p0 may be zero (it is in fact zero). This illustrates how you
can use the t value and Prob(t) to identify extraneous
parameters.
COOLING.NLR -- Fit an equation involving an exponential function.
If a heated object is allowed to cool, the rate of cooling at
any instant is proportional to the difference between the
object's temperature and the ambient (room) temperature. In
other words, an object cools faster at first, while it is hot,
and the rate of cooling slows down as the temperature of the
object approaches the ambient temperature. The function that
relates the object's temperature to time is:
Temperature = Roomtemp+InitTemp*exp(-Coolrate*Time)
Where InitTemp is the number of degrees above room temperature
at time 0, and Coolrate is a factor that depends on the mass
of the object, how well it is insulated, etc. The exp
function is the value of e (2.7182818...) raised to a power.
The COOLING.NLR example determines the parameters InitTemp and
Coolrate to fit an equation of this form to some data the
author collected.
BOIL.NLR -- The boiling point of water decreases as the pressure
in the vessel containing the water decreases. "Clapeyron's
equation" shows that the boiling point is related to pressure
according to the following function:
Temperature = b / log(Pressure/a) - 459.7
Where 'Temperature' is in degrees Fahrenheit (the 459.7
constant converts degrees Fahrenheit to degrees Rankine --
Chapter 7. Example Analyses 34
relative to absolute zero), 'Pressure' is the pressure in the
vessel in pounds per square inch, and 'a' and 'b' are
parameters whose values are to be determined. The data for
this example was collected by the author's son for a science
project.
MAGNET.NLR -- Fit a function involving an arc tangent and a
variable to the third power. This is an interesting physics
problem. If a magnet is placed due east of a compass, the
deflection of the compass needle from north is equal to the
arc tangent of the ratio of the strength of the magnet's field
relative to the earth's magnetic field. The strength of the
magnet's field at the compass is inversely proportional to the
cube of the distance from the magnet to the compass. Thus,
the function relating these terms is
Deflection = deg(atan(Strength / Distance ^ 3))
The deg function converts an angle in radians to degrees. In
the example, Deflection and Distance are the variables, and
the value of the Strength parameter is determined.
DIODE.NLR -- The current through a diode increases sharply as the
voltage across the diode is increased. An equation that
approximates the current flow as a function of the voltage is:
I = exp(b*(V-c))
where 'I' is the current, 'V' is the voltage, and 'b', and 'c'
are parameters that are to be estimated by the nonlinear
regression.
AVLTIME.NLR -- An AVL tree is a balanced binary tree used to store
information in a computer's memory. Because the entries in an
AVL tree are kept in sorted order, and the tree is kept in a
balanced form, it is possible to rapidly find any entry in the
tree. The time required to create an AVL tree with N entries
is approximately equal to:
Time = a + b*N*log2(N)
where 'a' is a constant term equal to the overhead involved in
starting and completing a tree creation, and 'b' is a growth
coefficient that depends on the speed of the computer. The
log2(N) function is the log base 2 of N (the number of
entries). The AVLTIME.NLR example fits an equation to a data
set that relates the time in seconds required to create an AVL
tree with the number of entries in the tree.
PIECE.NLR -- Piecewise linear function. Fit a function consisting
of two linear pieces that bend at X=5. When X is less than 5,
the slope of the function is B1. When X is greater than or
equal to 5, the slope is B2. B0 is the Y value of the
function at X=5 (i.e., at the pivot point). The step(a,x)
Chapter 7. Example Analyses 35
function returns the value 0 when x is less than 'a'; it
returns 1 when x is greater than or equal to 'a'.
Chapter 8
Special Applications
8.1 Omitted Dependent Variable
There is a class of nonlinear regression problems that can be best
expressed by omitting the dependent variable (i.e., the variable
on the left of the equal sign). To understand what this means
first consider the normal regression case with a dependent
variable. For each observation the function is evaluated and the
computed value is subtracted from the corresponding value of the
dependent variable for that observation. This residual value is
then squared and added to the other squared residual values. The
goal is to minimize the total sum of squared residuals. In the
case where the dependent variable is omitted, the function is
computed for each observation and the value of the function is
squared (i.e., it is treated as the residual) and added to the
other squared values. The goal is to minimize the sum of the
squared values of the function. Thus, for a perfect fit the
computed value of the function for every observation would be
zero.
To perform this type of analysis omit the dependent variable and
equal sign from the left side of the function specification.
As an example of this type of analysis consider the problem of
fitting a circle to a set of points that form a roughly circular
pattern (i.e., a "circular regression"). Our goal is to determine
the center point of the circle (Xc,Yc) and the radius (R) which
will make the circle best fit the points so that the sum of the
squared distances between the points and the perimeter of the
circle is minimized (the points are as close to the perimeter of
the circle as possible).
For this problem we have three parameters whose values are to be
determined: Xc, Yc, and R. There will be one data observation for
each point to which the circle is being fitted. For each point
there are two variables, Xp and Yp, the X and Y coordinates of the
point's position.
Since our goal is to minimize the sum of the squared distances
from the points to the perimeter of the circle, we need a function
that will compute this distance for each point. If the center of
the circle is at (Xc,Yc) and the position of a point is (Xp,Yp)
then, from the theorem of Pythagoras, we know the distance from
the center to the point is
36
Chapter 8. Special Applications 37
SQRT((Xp-Xc)^2 + (Yp-Yc)^2)
But we are interested in the distance from the perimeter to the
point. Since the radius of the circle is R, the distance from the
perimeter to the point (along a straight line from the center to
the point) is
SQRT((Xp-Xc)^2 + (Yp-Yc)^2) - R
That is, the distance from the perimeter to the point is equal to
the distance from the center to the point less the distance from
the center to the perimeter (the radius). The distance will be
positive or negative depending on whether the point is outside or
inside the circle but this does not matter since the value is
squared as part of the minimization process.
The Nonlin statements for this analysis are as follows:
VARIABLES Xp,Yp
PARAMETERS Xc,Yc,R
FUNCTION SQRT((Xp-Xc)^2 + (Yp-Yc)^2) - R
Note that there is no dependent variable or equal sign to the left
of the function. Nonlin will determine the values of the
parameters Yp, Yc, and R such that the sum of the squared values
of the function (i.e., the sum of the squared distances) is
minimized. The CIRCLE.NLR file contains a full example of this
analysis.
As a second example similar to the first one, consider a town that
is trying to decide where to place a fire station. The location
should be central such that the sum of the squared distances from
the station to each house is minimized. Nonlin can be used to
determine the coordinates of the station (Xc,Yc) given a set of
coordinates for each house location (Xh,Yh) by using a slightly
simpler function than the first example:
FUNCTION SQRT((Xh-Xc)^2 + (Yh-Yc)^2)
8.2 Root Finding and Expression Minimization
Although it is designed for nonlinear regression analysis, Nonlin
can also be used to find the root (zero point) or minimum absolute
value of a nonlinear expression. To use Nonlin in this fashion
follow these steps:
. Do not use any VARIABLE statements.
. Use PARAMETER statements to specify the names and optional
starting values for the parameters whose values are to be
determined as the roots or minimum value of the expression.
. Use the FUNCTION statement to specify the expression whose
roots or minimum value is to be found; do NOT specify a
Chapter 8. Special Applications 38
dependent variable and equal sign -- specify only the
expression that is to be minimized.
. Do not include any data records after the DATA statement; it
simply signals the end of the command file and causes the
analysis to begin.
The following is an example command file to find the root of the
expression SIN(X)-LOG(X):
PARAMETER X
FUNCTION SIN(X) - LOG(X)
DATA
Notice that the "variable" in the expression, X, is not declared
to be a variable but rather a parameter. This example is included
in the file MINSL.NLR which you can run.
For this type of analysis, Nonlin determines the values of the
parameters that minimize the absolute value of the expression. If
the expression has a zero value (i.e., a root), that value is
found since that is the smallest possible absolute value. If the
expression does not have a zero point, Nonlin determines the
values of the parameters that produce the smallest absolute value
of the expression. For example, the expression 2*x^2-3*x+10 does
not have a root but reaches a minimum value of 8.875 when x is
0.75. The MINPAROB.NLR command file contains this example.
There are a number of cautions that you should keep in mind when
using Nonlin to find roots or minimum values:
. Nonlin will find only one root or minimum value per analysis.
For example, the expression 9-x^2 has two roots: -3 and +3.
Nonlin will find one of the roots; which one it finds depends
on the starting value specified for X.
. Nonlin will find only real roots, not complex.
. If the expression contains a local minimum, Nonlin may find it
rather than the global minimum or root. Of course, if you are
looking for a local minimum in a certain region this could be
considered a feature. For example, the expression
0.5*x^3+5*(x-2)^2+15 has a local minimum at x=1.61 and a root
at x=-13.38. If the starting value of x is less than -8.3 the
root is found; if the starting value is greater than -8.3, the
local minimum is found. If the expression contains only a
single variable, use the Mathplot program to graphically
display the expression and determine a good starting value for
the variable (see page 42 for additional information about
Mathplot). The SWEEP command can also be used to try multiple
starting values when searching for a global minimum.
Chapter 8. Special Applications 39
8.2.1 Function Minimization Examples
MINFALL.NLR -- The time taken for an object to slide down a
frictionless guide from position (0,h) to another position
(d,0) (i.e., falling through a distance 'h' while moving
horizontally a distance 'd') depends on the path that the
object takes as it follows the guide. It turns out that the
path that minimizes the descent time is not a straight line
from (0,h) to (d,0) but rather a curve called a
brachistochrone with a steeper slope near the beginning, that
gives the object a chance to accelerate quickly, and then a
shallower slope further on.
Finding the shape of this curve is a classic problem in the
branch of mathematics called the Calculus of Variations. The
MINFALL example solves a simpler case of this problem: the
object slides along a straight guide from (0,1000) to an
intermediate position (px,py), and then along another straight
guide from (px,py) to (1000,0). What point, (px,py),
minimizes the descent time?
Note concerning the answer: The fall time for the object if it
follows a straight guide from (0,1000) to (1000,0) is 2.0203
seconds; the fall time if it follows the two straight segments
found by MINFALL is 1.8748; the fall time if it follows the
ideal curved brachistochrone is 1.8590. The speed of the
object at the end of the fall is the same regardless of the
path taken (conservation of energy).
MINFUEL.NLR -- A lunar lander is hovering above the surface of the
moon looking for a suitable landing site. Available fuel is
critical and the desired site is 200 meters away. How long
should the horizontal thruster be fired to start and stop the
motion over the ground? The vertical thruster must be used
continuously to keep the lander from being pulled to the
surface. If too little horizontal thrust is used the
spacecraft will move slowly and much fuel will be consumed by
the vertical thruster counterbalancing the downward
gravitational pull while hovering over the surface. On the
other hand, if the horizontal thruster is fired for a long
time, the spacecraft will move quickly (minimizing the
hovering time) but excessive fuel will be used during the
horizontal acceleration and deceleration. MINFUEL.NLR
determines how long the thruster should be fired during the
start and stop accelerations such that the total fuel
consumption (start thrust + stop thrust + hover) is minimized.
Chapter 9
Acknowledgement and Use of Nonlin
9.1 Acknowledgement
The nonlinear regression algorithm used by Nonlin was published in
ACM Transactions on Mathematical Software 7,3 (Sept. 1981)
"Dennis, J.E., Gay, D.M., and Welsch, R.E. -- An adaptive
nonlinear least-squares algorithm."
9.2 Use and Distribution of Nonlin
There are two versions of the Nonlin program: shareware and
registered. You are welcome to make copies of the shareware
version of Nonlin and pass them on to friends or post this program
on bulletin boards or distribute it via disk catalog services
provided the entire Nonlin distribution is included in its
original, unmodified form. A distribution fee may be charged for
the cost of the diskette, shipping and handling. However, Nonlin
may not be sold, or incorporated in another product that is sold,
without the permission of Phillip H. Sherrod. Vendors are
encouraged to contact the author to get the most recent version of
Nonlin.
As a shareware product, you are granted a no-cost, trial period of
30 days during which you may evaluate Nonlin. If you find Nonlin
to be useful, educational, and/or entertaining, and continue to
use it beyond the 30 day trial period, you are required to
compensate the author by sending the registration form printed at
the end of this document (and in REGISTER.DOC) with the
appropriate registration fee to help cover the development and
support of Nonlin.
In return for registering, you will be authorized to continue
using Nonlin beyond the trial period and you will receive a
registered version of the program, a laser-printed, bound manual,
and three months of support via telephone, mail, or CompuServe.
Your registration fee will be refunded if you encounter a serious
bug that cannot be corrected.
The registered version of Nonlin omits the shareware notification
screen at the start of the run and does not require you to press a
key to proceed with the analysis. The registered version also
includes the ability to print plots on HP LaserJet printers. The
registered version of Nonlin is NOT shareware and may not be
redistributed or used on more than one computer system.
40
Chapter 9. Acknowledgement and Use of Nonlin 41
The author frequently improves Nonlin and it is likely that the
version you have is not the most recent version. Note, the cost
of registering Nonlin is insignificant compared with what you
would have to pay to purchase a commercial statistical package
with an equivalent regression capability.
9.3 Association of Shareware Professionals
This program is produced by a member of the Association of
Shareware Professionals (ASP). ASP wants to make sure that the
shareware principle works for you. If you are unable to resolve a
shareware-related problem with an ASP member by contacting the
member directly, ASP may be able to help. The ASP Ombudsman can
help you resolve a dispute or problem with an ASP member, but does
not provide technical support for members' products. Please write
to the ASP Ombudsman at 545 Grover Road, Muskegon, MI 49442 or
send a CompuServe message via CompuServe Mail to ASP Ombudsman
7007,3536.
You are welcome to contact the author:
Phillip H. Sherrod
4410 Gerald Place
Nashville, TN 37205-3806 USA
615-292-2881 (evenings)
CompuServe: 76166,2640
Internet: 76166.2640@compuserve.com
9.4 Copyright Notice
Both the Nonlin program and documentation are copyright (c)
1992-1993 by Phillip H. Sherrod. You are not authorized to
modify the program. "Nonlin" is a trademark.
9.5 Disclaimer
Nonlin is provided "as is" without warranty of any kind, either
expressed or implied. This program may contain "bugs" and
inaccuracies, and its results should not be assumed to be correct
unless they are verified by independent means. The author assumes
no responsibility for the use of Nonlin and will not be
responsible for any damage resulting from its use.
Chapter 10
Other Software
10.1 Mathplot -- Mathematical Function Plotting Program
If you like Nonlin, you should check out the Mathplot program by
the same author.
Mathplot allows you to specify complicated mathematical functions
using ordinary algebraic expressions and immediately plot them.
Four types of functions may be specified: cartesian (Y=f(X));
parametric cartesian (Y=f(T) and X=f(T)); polar (Radius=f(Angle));
and parametric polar (Radius=f(T) and Angle=f(T)). Up to four
functions may be plotted simultaneously. Scaling is automatic.
Options are available to control axis display and labeling as well
as grid lines. Hard copy output may be generated as well as
screen display. Mathplot is an ideal tool for engineers,
scientists, math and science teachers, and anyone else who needs
to quickly visualize mathematical functions.
If you register Nonlin and order Mathplot at the same time, you
can get both for $40.
10.2 TSX-32 -- Multi-User Operating System
If you have a need for a multi-user, multi-tasking operating
system, you should look into TSX-32. TSX-32 is a full-featured,
high performance, multi-user operating system for the 386 and 486
that provides both 32-bit and 16-bit program support. With
facilities such as multitasking and multisessions, networking,
virtual memory, X-Windows, background batch queues, data caching,
file access control, real-time, and dial-in support, TSX-32
provides a solid environment for a wide range of applications.
A two user, shareware version of TSX-32 called TSX-Lite is also
available.
TSX-32 is not a limited, 16-bit, multi-DOS add-on. Rather, it is
a complete 32-bit operating system which makes full use of the
hardware's potential, including protected mode execution, virtual
memory, and demand paging. TSX-32 sites range from small systems
with 2-3 terminals to large installations with more than 64
terminals on a single 386.
42
Chapter 10. Other Software 43
In addition to supporting most popular 16-bit DOS programs, TSX-32
also provides a 32-bit "flat" address space with both Phar Lap and
DPMI compatible modes of execution.
Since the DOS file structure is standard for TSX-32, you can
directly read and write DOS disks. And, you can run DOS part of
the time and TSX-32 the rest of the time on the same computer.
TSX-32 allows each user to control up to 10 sessions. Programs
can also "fork" subtasks for multi-threaded applications. The
patented Adaptive Scheduling Algorithm provides consistently good
response time under varying conditions.
The TSX-32 network option provides industry standard TCP/IP
networking through Ethernet and serial lines. Programs can access
files on remote machines as easily as on their own machine. The
SET HOST command allows a user on one machine to log onto another
computer in the network. FTP, Telnet, and NFS are available for
interoperability with other systems.
TSX-32 is, quite simply, the best and most powerful operating
system available for the 386 and 486. For additional information
contact:
S&H Computer Systems, Inc.
1027 17th Avenue South
Nashville, TN 37212 USA
615-327-3670 (voice)
615-321-5929 (fax)
CompuServe: 71333,27
Internet: 71333.27@compuserve.com
10.3 SIMSTAT -- Interactive Statistics Program
If you need a general-purpose statistical package, or would like a
menu-oriented, mouse-aware interface to Nonlin, I suggest you try
the SIMSTAT program written by Normand Peladeau.
SIMSTAT is a menu driven statistical program that provides many
basic descriptive and comparative statistics and includes a
"bridge" module to allow it to function as a "front end" and data
editor for Nonlin.
The shareware version of SIMSTAT is available from the IBMAPP
forum of CompuServe and from many BBS, or you can contact the
author at the address below. SIMSTAT version 2.1 or later is
required for use with Nonlin. You must also have the "bridge"
module called SIM2NL. SIM2NL.ZIP is included on the distribution
disk with the registered version of Nonlin.
For information about SIMSTAT, contact: Normand Peladeau, Provalis
Research, 5000 Adam Street, Montreal, QC H1V 1W5, Canada,
Compuserve: [71760,2103], Internet: 71760.2103@compuserve.com.
===============================================================
Software Order Form
===============================================================
Name ______________________________________________________
Address ___________________________________________________
City _______________________ State _______ Zip ___________
Country ____________________ Telephone ___________________
CompuServe account (optional) _____________________________
Nonlin version ____________________________________________
Bulletin board where you found Nonlin _____________________
Comments __________________________________________________
Check the box below which indicates your order type:
___ I wish to register Nonlin ($25).
___ I wish to order Mathplot ($20).
___ I wish to register Nonlin and order Mathplot ($40).
Add $5 to any amount shown above if the software is being shipped
out of the United States. I cannot accept checks from non-US
banks. Visa, MasterCard and American Express credit card charges
are accepted but a check, money order, or cash is preferred. If
you wish to use a credit card specify the billing name, address,
card number, and expiration date.
In return for registering, you will receive the registered version
of the program, a laser-printed, bound copy of the manual, and
three months of telephone or CompuServe support. Your
registration fee will be refunded if you find a serious bug that
cannot be corrected.
Distribution disk choice (check one):
3.50" HD (1.4 MB) ______
5.25" HD (1.2 MB) ______
5.25" DD (360 KB) ______
Send this form with the amount indicated to the author:
Phillip H. Sherrod
4410 Gerald Place
Nashville, TN 37205-3806 USA
615-292-2881 (evenings)
CompuServe: 76166,2640
Internet: 76166.2640@compuserve.com
Index 45
80x87 coprocessor, 31 DATA command, 21
ABS function, 7 DEG function, 7
Absolute converge, 28 Degrees to radians, 9
Acknowledgement, 40 Deviation
ACOS function, 7 average, 23
Adaptive algorithm, 27 definition, 2
AFCTOL value, 27 maximum, 23
AIDS growth curve, 32 Diode current example, 34
Arc cosine function, 7 Disclaimer, 41
Arc sine function, 7 DPMI support, 42
Arc tangent function, 7 Durbin-Watson statistic, 24
Arighmetic operators, 6 E constant, 6
ASIN function, 7 EI2 function, 7
ASP, 41 EIC1 function, 7
Assn. of Shareware Prof., 41 EIC2 function, 8
Asymptotic function example, EL1 function, 7
32 Elliptic integral function, 7,
ATAN function, 7 8
Author address, 41 ERF function, 8
Autoregression test, 19, 24 Examples, 32
Average deviation, 23 AIDS growth curve, 32
AVL tree example, 34 asymptotic function, 32
Bessel function, 8, 10 AVL tree, 34
Beta function, 7 boiling water, 33
BETAI function, 7 cooling, 33
Brachistochrone, 39 diode current, 34
Build-in functions, 7 function minimization, 39
Built-in constants, 6 linear regression, 32
Calculus of variations, 39 lunar lander, 39
Chebyshev function, 10 magnet force, 34
Circular regression, 36 minimum time path, 39
Clapeyron's equation, 33 multivariate, 32
Command files, 10 negative exponential, 33
Commands, 12 piecewise function, 34
Comments in command files, 10 quadratic equation, 32
Compass to polar, 7 square wave, 33
CompuServe, 41, 43 SWEEP command, 33
CONFIDENCE command, 13, 23 EXP function, 8
Confidence intervals, 13 Exponentation operator, 6
CONSTANT command, 6, 13 Expression minimization, 37
CONSTRAIN command, 14, 30 FAC function, 8
Continuation of lines, 10 Factorial function, 8
Convergence criterion, 27 Fire station example, 37
absolute, 28 FUNCTION command, 15
relative, 28 Function minimization, 37
Convergence failures, 29 Functions, 7
Cooling example, 33 GAMMA function, 8
Copyright notice, 41 GAMMAI function, 8
COS function, 7 GAMMALN function, 8
Cosecant function, 7 Gauss-Newton algorithm, 27
COSH function, 7 Growth curve, 32
COT function, 7 HAV function, 8
COVARIANCE command, 14 Hessian, 27
CSC function, 7 Hyperbolic cosine function, 7
CTOP function, 7 Hyperbolic sine function, 10
Index 46
Hyperbolic tangent function, Numeric constants, 6
10 Numeric coprocessor, 31
Incomplete beta function, 7 $OBS variable, 16
Installing Nonlin, 3 Order form, 44
Internet, 41, 43 OUTPUT command, 16
Inverse gamma function, 8 PARAMETER command
ITERATIONS command, 15 function minimization, 37
J0 function, 8 PARAMETERS command, 12
J1 function, 8 PAREA function, 8
JN function, 8 Performance issues, 30
LaserJet Periodic data, 25
LaserJet printer, 3, 40 PI constant, 6
resolution, 20 Piecewise function example,
Least squares regression, 2 34
Levenberg-Marquardt, 27 PLOT command, 17
Limits, 31 options, 17
Linear regression, 1 Plots
example, 32 data and function, 17
Listing file, 5 normal probability, 19
LOG function, 8 residual values, 18
Log gamma function, 8 resolution, 20
LOG10 function, 8 width of, 20
LOG2 function, 8 Polar to compass, 9
Logistic curve, 32 Polar to rectangular, 9
Lunar lander example, 39 Polynomial equation example,
Magnet example, 34 32
Marquardt algorithm, 27 POUTPUT command, 17
Mathplot, 42 extra precision output, 22
MAX function, 8 $PREDICTED variable, 16
Maximum values, 22 PRESOLUTION command, 20
MIN function, 8 Prob(t) value, 23
Minimiation algorithm, 27 Program limits, 31
Minimization problem, 37 PTOC function, 9
Model/trust region, 27 PTORX function, 9
Multi-user operating system, PTORY function, 9
42 PULSE function, 9
Multiple determination, 24 Quadratic equation example,
Multivariate regression, 32 32
Mutually dependent, 30 RAD function, 9
Natural log function, 8 Radian to degree conversion,
Negative exponential, 2, 33 7
Networking, 43 Ra^2 statistic, 24
NOECHO command, 20 Real-time, 42
NONLIN environment variable, Rectangular to polar, 9
3 REGISTER command, 16
NONLIN.DOC file, 3 REGISTER.DOC file, 3
NONLIN.EXE file, 3 Registering Nonlin, 40
NONLIN.FON file, 3, 17 Registration form, 44
NONLIN.LJF file, 3 Relative convergence, 28
NORMAL function, 8 Residual
Normal probablity plot, 19 Residual values
NPD function, 8 plotting, 18
NPLOT command, 19 $RESIDUAL variable, 16
autocorrelation test, 25 average, 23
options, 20 definition, 2
Index 47
maximum, 23 Y1 function, 10
RFCTOL value, 27 YN function, 10
Root finding, 37
RPLOT command, 18
autocorrelation test, 25
options, 19
RTOPA function, 9
RTOPD function, 9
R^2 statistic, 24
S&H Computer Systems, Inc.,
43
SEC function, 9
Secant function, 9
SEL function, 10
SET command, 3
Sherrod, Phillip H., 41
SIM2NL, 43
SIMSTAT, 43
SIN function, 10, 25
Singular matrix problems, 30
SINH function, 10
SQRT function, 10
Square wave example, 33
Standard deviation, 22
Standard error function, 8
STEP function, 10
Support of Nonlin, 40
SWEEP command, 14
convergence failure, 29
example, 33
function minimization, 38
performance issues, 31
Symbolic constants, 6
T function, 10
t statistic, 22, 23
TAN function, 10
TANH function, 10
TCP/IP, 43
Theory of operation, 27
Time series data, 24
TITLE command, 12
TOLERANCE command, 15, 16
converge criterion, 27
TREND example, 25
TREND.NLR, 33
TSX-32, 42
TSX-Lite, 42
Use and distribution, 40
VARIABLES command, 12
Variance-covariance matrix,
14
Warranty, 41
WIDTH command, 20
X windows, 42
Y0 function, 10