Note: this document is excerpted from a 1995 paper. Quite a lot has changed has changed in the CURVE lisp library since then, but a lot remains the same as well. An update seems more than due. |

The computer tools
described below are organized as a collection given the name of *Curve*,
which includes all those used for the time-series data analysis presented along
with some drawing and graphic utilities and templates. They were developed in
the AutoLISP[i]
programming language for use with AutoCAD[i]
running on DOS or Windows computers. AutoCAD is a general graphical database
product used extensively in architecture and engineering design, mapping and
control applications. The Curve analysis collection operates only in an
AutoCAD environment and is not directly transferable to other platforms. Any
graphing or database software with a reasonable customization capability could
be used to develop similar tools following the basic principles outlined here.

**Correspondence**: PF Henshaw id
at synapse9//com

**Queries**: Questions from researchers
and developers seeking help with programming and analysis problems are
welcome. Copies of the software are available for research use.

**Data**: Interesting data for
experimental analysis would be very welcome. Any well documented time series
suspected of having underlying structure would be of interest. Ideal data
sets would cover the entire history of some subject event from before its
beginning to after its end. Data in comma separated ASCII text field format
with title and comment heading lines, column headings and optional end field
notes for individual data points would be preferred.

**
1)
Command Operation**

· Once the functions are loaded, the basic user operation sequence is to enter an analytic function name, select data graphs on the screen to operate on and then choose from various options. The programs then inspect the data and the attached history of prior operations and then scan and interpret the point values. Finally, when the analysis is complete the results are plotted and the command name and options used are added to the operations history. Some functions scan forward only and others both forward and back, using 2, 3, 5 or more points in the analytical point bracket, and may perform single or multiple iterations.

**
2)
Presentation of Results**

**
·
**Every analytic function creates a new graph, as
every operation on a mathematical equation creates a new formula. When
several steps are taken to produce a desired result the intermediates are
typically hidden or discarded unless they present useful visual information.

· Because the scale of derivatives and integrals is often quite different from that of the original data, derivatives are sometimes automatically rescaled with a peak value of 4/5 of the peak value of the original and integrals at 5/4 of the original. When a comparison of different data sets or methods of analysis is desired, a fixed scaling factor is selected so that the results have matched presentation scales.

**
3)
Major Functions**

· Derivative Interpolation - DIN locates a new point in the middle of a four point bracket that makes the third derivatives on either side equal, using sub-function (F_3SYM). This creates a curve, including the original data points, which has greater continuity than the original and approximates a curve with the minimum scale and reversals of underlying acceleration necessary for a continuous path between the given points.

· Trend Line Bridging - TLIN- draws a graph between local inflection points as defined by reversals in the sign of the second derivative. This corresponds to the principle that fluctuations about a trend will cross the trend line with a maximum slope and have a slope equal to that of the trend when at a maximum distance from it. This is commonly the case for homeostatic processes. .

Options are provided to select every, alternating inflection points or to prompt inflection points for individual user selection, and to set a maximum length of fluctuation to recognize.

The best large scale trend results took several steps. First interpolation and derivative smoothing were done and then the short period fluctuations filtered out. After additional derivative smoothing the long period fluctuations could be identified and bridged.

If the last inflection point was close to the end of the data the end point was placed according to a weighted projection from the preceding trend third derivative using (FF_TENDS). This substantially reduced endpoint distortions.

Each line segment of a trend bridge graph has a separate point on the bridge line for each original data point during the period. When bridge lengths were large the number of points was reduced before derivative smoothing using (GPAR). This is required to maintain a regular frequency of points and then to eliminate long periods of false constant slope which derivative smoothing would only reinforce. (See Figure A1)

·
** Double Derivative Smoothing - **The
objective of derivative smoothing is to reduce the number and scale of
underlying derivatives while leaving the integral of the curve unchanged.

·
** Graphic Function Calculator -**The

**
4)
Subfunctions**

·
**3rd Derivative Smoothing (F_3SYM)** - adjusts
the scale of the midpoint of a five point sequence.. The calculation shown
here assumes equal time periods. In the program the result is then adjusted
for unequal periods. The equation yields the
Dy (**DYi**)
for the middle point that will make the 3rd derivative in the first three
periods equal to that in the last three periods :

A.1

Algorithm for 3rd Derivative Smoothing (refer to point and ratio naming convention in figure A3)

Point variables in the sequence are labeled from 0 to 4 and differences from 0 to 3. The routine also makes corrections at points where new second derivative reversals would be introduced and at the mid-points of double reversal periods which produce inconsistent sign and magnitude errors.

·
(**F_DOGRAF**) The Simpler graphing functions were
written to record results as each successive point is read and interpreted
according to a rule fed to this graph drawing sub-function.

·
(**F_DXYVAR**) and (**F_LISTVARS**) The more
complex functions maintain numbered variable names for each place in the bracket
being considered with data values successively moved from one place to the next
as the curve is scanned.

·
(**FF_TENDS**) Start and end points of a series are
sometimes retained unchanged from the original curve and sometimes projected
according to a damped first, second, or third derivative implied by preceding or
following points..

**
5)
Basic Operations**

·
**Importing Data Files - GRFIL** imports comma
separated two column text data along with title, headings, scaling factors and
notes.

·
**Derivative - DIF** plots the ratio of
Dy/Dt
with the starting point assigned a value equal to the average of the second and
third. The proportional difference, or growth rate, option provided is Dy/y.
The auto-scaling option sets the peak value of the derivative to 4/5 that of
source.

·
**Integral - INT** plots
SDy*Dt
the area under the curve of each period with the starting point set at a user
picked or entered value. The auto-scaling option sets the peak at 5/4 of that
of source.

·
**Graph Scaling - GSC** scales a graph, in
proportion to the ratio of one distance to another

·
**Increasing Point Frequency - GSEG** (linear
interpolation) inserts a variable number of points equally spaced on a straight
line between existing points. Used to increase the point density of a data
set..

·
**Reducing Point Frequency - GPAR** Creates a
subset partition of the data set by skipping points in a given range or
replacing a range of points with an average. Used to reduce the point density
of a data set. This was primarily applied to a TLIN curve to create an equally
spaced point set that could be effectively smoothed by DDSM.

·
**Average - ASM** averages a variable bracket of
points, with each point given equal weight or a weight in proportion to its
position in the point bracket.

·
**Symmetric Double Average - DASM** is the same as
**ASM,** but scans both forward and back and averages the results to reduce
directional bias.

·
**Derivative Smoothing - DSM** with 1st or 3rd
derivative symmetry with a variable number of iterations. Same as DDSM but
without combining simultaneous forward and backward scans.

**
6)
Other Functions**

·
**Trend Separation - TSEP** is a special
application tool that separates trend periods in a data sequence and inserts
constant periods at maxima, minima and axis crossing points. This is done
either by simply adding new points between the developmental trend periods
(increasing the range), or with linear compression of the trend period so the
range of the data is the same as the original.

·
**Step Curves - GSTEP** creates a step curve
passing through the points of any graph. It is primarily a graphic tool.

·
**Graph Recording - GREC** records the
accelerations of the screen pointer for one movement of the digitizer and scales
the point set to fit a pre-defined window.