Interpolates values at intermediate points.
Options
CURVE = string token |
Type of curve to be fitted to calculate the interpolated value (linear, cubic ); default line |
---|---|
METHOD = string token |
Type of interpolation required (interval, value, missing ): for METHOD=valu , values are interpolated for each point in the NEWINTERVAL variate and stored in the NEWVALUE variate; for METHOD=inte , points are estimated in the NEWINTERVAL variate for the observations in the NEWVALUE variate; while for METHOD=miss , the NEWVALUE and NEWINTERVAL lists are irrelevant, INTERPOLATE now interpolates for missing values in the OLDVALUE and OLDINTERVAL variates (except those missing in both variates); default inte |
Parameters
OLDVALUES = variates |
Observations from which interpolation is to be done |
---|---|
NEWVALUES = variates |
Results of each interpolation |
OLDINTERVALS = variates |
Points at which each set of OLDVALUES was observed |
NEWINTERVALS = variates |
Points for each set of NEWVALUES |
Description
If you have a set of pairs of observations (x, y), you can use interpolation to estimate either a value y for a value x that need not be in the set, or a value x for a value y that likewise need not be in the set. The simplest way to interpolate is by joining successive pairs of observations by straight lines and reading off the appropriate values in between: then the two cases are called linear interpolation (obtaining y from x) and inverse linear interpolation (obtaining x from y). Genstat can alternatively join the points by cubic functions instead of straight lines. Genstat uses the term values to describe the set of y-values and intervals for the set of x-values, no matter whether you are doing direct or inverse interpolation.
Genstat does the interpolation for each parallel set of variates in the parameter lists. Each variate in the OLDINTERVALS
list specifies the x-values of a set of observed points; the corresponding variate in the OLDVALUES
list specifies the corresponding y-values. The variates in the NEWINTERVALS
and NEWVALUES
lists are for the x-values and y-values of the interpolated points.
If you set METHOD=value
, Genstat does ordinary interpolation, and you use the NEWINTERVALS
variate to specify the x-values for which you require interpolated y-values. Genstat calculates the y-values and stores them in the corresponding NEWVALUES
variate; this variate will be declared implicitly if you have not declared it already.
For the interpolation to take place, the x-values must be in either monotonically increasing or decreasing order; thus, if necessary, Genstat takes a copy of the x-values and y-values and sorts these (in parallel) to put the x-values into ascending order.
Assume that wheat plants have been sampled on five occasions and their growth stage (Zadoks) assessed. INTERPOLATE
interpolates values, which it stores in variate Nzad
, to estimate the growth stage that the plant has reached after 50, 100 and 150 days.
VARIATE [NVALUES=6] Zadoks,Days;\
VALUES=!(0,15,23,35,65,95),!(0,50,84,119,147,182)
& [NVALUES=3] Nzadoks,Ndays; VALUES=!(25,50,75),!(50,100,150)
INTERPOLATE [METHOD=value] Zadoks; NEWVALUES=Nzad;\
OLDINTERVALS=Days; NEWINTERVALS=Ndays
Similarly, if you set METHOD=interval
, Genstat does inverse interpolation. You must then specify the y-values in the NEWVALUES
variate. Genstat calculates the x-values and stores them in the corresponding NEWINTERVALS
variate, which will be declared implicitly if necessary. Again the x-values must be in monotonically increasing or decreasing order, and Genstat will produce a sorted copy if necessary. Inverse interpolation is the default.
This statement would use inverse linear interpolation to estimate how long after planting we have to wait for the plant to reach growth stages 25, 50 and 75 Zadoks.
INTERPOLATE [METHOD=interval] Zadoks; NEWVALUES=Nzadoks;\
OLDINTERVALS=Days; NEWINTERVALS=Nd
If you set METHOD=missing
, Genstat ignores the NEWVALUES
and NEWINTERVALS
parameters; it estimates values for x or y when the other is missing, placing the results in the previously missing position of the OLDVALUES
or the OLDINTERVALS
variates. Ordinary interpolation is used when the missing value is in y, and inverse interpolation when it is in x. If both the x-value and the y-value are missing for a particular unit, no values can be interpolated for it, and it remains missing. To do linear interpolation requires that both the x-value and the y-value should be non-missing for the point on each side of the unit with the missing value. For cubic interpolation, there must be two non-missing points on each side of the unit.
The CURVE
option has two settings, linear
and cubic
. By default, CURVE=linear
, and successive pairs of observations are connected by straight-line segments for linear, or inverse-linear, interpolation. For cubic interpolation you set CURVE=cubic
; there must then be at least four values in each of the OLDVALUES
and OLDINTERVALS
variates.
For linear & inverse linear interpolation between variates you can use the VINTERPOLATE
procedure.
Options: CURVE
, METHOD
.
Parameters: OLDVALUES
, NEWVALUES
, OLDINTERVALS
, NEWINTERVALS
.
Action with RESTRICT
Either or both of the OLDVALUES
and OLDINTERVALS
variates can be restricted to arrange for only a subset of the observed points to be used. Similarly, either or both of the NEWVALUES
and NEWINTERVALS
variates can be restricted to arrange that values are calculated for only a subset of units of the new variates.
See also
Procedure: VINTERPOLATE
.
Commands for: Calculations and manipulation.
Example
CAPTION 'INTERPOLATE Example'; STYLE=meta DELETE [REDEFINE=yes] X,Y,iX,iY,pX,pY VARIATE [VALUES=0,1,2,4,7,9,11,12,13,16,18,20] X CALCULATE Y = (1 + SIN(ABS(X-10)/4))**2 - 1 + (X/4)**2 - (X/9)**3 CALCULATE iX = !(1...200)/10 "Interpolate Y values using cubic interpolation" INTERPOLATE [CURVE=cubic; METHOD=VALUE]\ OLDVALUE=Y; OLDINTERVAL=X;\ NEWVALUE=iY; NEWINTERVAL=iX "Graph Interpolated Function" PEN 1,2; METHOD=POINT,MONOTONIC; SYMBOL=2,0;\ COLOUR=2,4; CFILL=2,0; THICKNESS=1,3 XAXIS [RESET=yes] 1; TITLE='X' XAXIS [RESET=yes] 1; TITLE='Function' DGRAPH [TITLE='Cubic Interpolation'] X=X,iX; Y=Y,iY;\ DESCRIPTION='Function Points','Cubic Interpolation' "Interpolate X values for given Y values" VARIATE [VALUES=1...15] GivenY INTERPOLATE [CURVE=cubic;METHOD=INTERVAL]\ OLDVALUE=Y; OLDINTERVAL=X;\ NEWVALUE=GivenY; NEWINTERVAL=PredictedX PRINT GivenY,PredictedX; FIELD=8; DECIMALS=0,4