Calculates the basis functions for thin-plate splines (S.J. Welham & D.B. Baird).
No options
Parameters
Y = variates or factors |
Y-coordinates of the data points |
---|---|
X = variates or factors |
X-coordinates of the data points |
YKNOTS = variates or factors |
Y-coordinates of the knots |
XKNOTS = variates or factors |
X-coordinates of the knots |
TPSPLINE = variates or matrices |
Thin-plate spline basis, as either a pointer of variates (default if not already declared) or a matrix |
Description
THINPLATE
calculates the basis functions for thin-plate splines. The X
and Y
parameters each specify a variate or a factor with the x- and y-coordinates of the data points, and the XKNOTS
and YKNOTS
parameters similarly specify the positions of the knots. The basis functions are saved by the TPSPLINE
parameter. By default these are stored in a pointer of variates, but you can save a matrix instead by declaring TPSPLINE
in advance to be a matrix.
Options: none.
Parameters: Y
, X
, YKNOTS
, XKNOTS
, TPSPLINE
.
See also
Directive: VCOMPONENTS
.
Procedures: SPLINE
, LSPLINE
, NCSPLINE
, PENSPLINE
, PSPLINE
, RADIALSPLINE
, TENSORSPLINE
.
Function: SSPLINE
.
Commands for: Calculations and manipulation, Regression analysis, REML analysis of linear mixed models.
Example
CAPTION 'THINPLATE example'; STYLE=meta SCALAR n; VALUE=50 "no. grid points for data in each direction" & np; VALUE=7 "no. basis points for thin plate in each direction" "Create data on a regular n x n grid" VARIATE [VALUES=1...n] x,y & [VALUES=#n(#x)] xe & [VALUES=(#y)#n] ye CALCULATE [SEED=211869] ve = GRNORMAL(n*n; 0; 0.5) MATRIX [ROWS=x; COLUMNS=y] e; VALUES=ve & [ROWS=x; COLUMNS=1] xm; VALUES=x & [ROWS=1; COLUMNS=y] ym; VALUES=y CALCULATE z = 2 * SIN(SQRT(((xm - (n + 1) / 2) *+ ROW1(n) /6)**2\ + (COL1(n) *+ (ym - (n + 1) / 2) / 10)**2))\ + COS(SQRT( ( (xm - (n + 1) / 3) *+ ROW1(n) / 10)**2\ + (COL1(n) *+ (ym - (n + 1) / 3) / 5)**2)) & zp = z + e VARIATE [NVALUES=n*n] ze EQUATE OLDSTRUCTURE=zp; NEWSTRUCTURE=ze "Create spline basis knot points in 2 dimensions" CALCULATE p = !(1...np) / (np + 1) & pf = 0.5 / n & pl = 1 - 0.5 / n & pe = 100 * !(pf,#p,pl) & xp,yp = PERCENTILES(x,y; pe) & nx,ny = NVALUES(xp,yp) VARIATE [VALUES=#ny(#xp)] xk & [VALUES=(#yp)#nx] yk "Calculate spline basis functions" POINTER tp THINPLATE Y=ye; X=xe; YKNOTS=yk; XKNOTS=xk; TPSPLINE=tp "Fit thin-plate model using restricted maximum likelihood" VCOMPONENTS [FIXED=xe+ye] RANDOM=tp REML [PRINT=#,effects] ze "Calculate fitted surface values" VKEEP [FITTED=xfit] TERMS='Constant',xe,ye,tp;\ EFFECTS=intercept,xslope,yslope,coeff CALCULATE tp[] = #coeff*tp[] & zf = #intercept + #xslope*(xe - MEAN(xe)) +\ #yslope*(ye - MEAN(ye)) + VSUM(tp) "Plot fitted surface" MATRIX [ROWS=x; COLUMNS=y] zfm; VALUES=zf DSURFACE [TITLE='Fitted Thin Plate Surface'; WINDOW=3; KEY=0] zfm