The routine may be called by the names g10acf or nagf_smooth_fit_spline_parest.
For a set of observations , for , the spline provides a flexible smooth function for situations in which a simple polynomial or nonlinear regression model is not suitable.
Cubic smoothing splines arise as the unique real-valued solution function , with absolutely continuous first derivative and squared-integrable second derivative, which minimizes
where is the (optional) weight for the th observation and is the smoothing parameter. This criterion consists of two parts: the first measures the fit of the curve and the second the smoothness of the curve. The value of the smoothing parameter weights these two aspects; larger values of give a smoother fitted curve but, in general, a poorer fit. For details of how the cubic spline can be fitted see Hutchinson and de Hoog (1985) and Reinsch (1967).
The fitted values, , and weighted residuals, , can be written as:
for a matrix . The residual degrees of freedom for the spline is and the diagonal elements of are the leverages.
The parameter can be estimated in a number of ways.
(i)The degrees of freedom for the spline can be specified, i.e., find such that for given .
(ii)Minimize the cross-validation (CV), i.e., find such that the CV is minimized, where
(iii)Minimize the generalized cross-validation (GCV), i.e., find such that the GCV is minimized, where
g10acf requires the to be strictly increasing. If two or more observations have the same value then they should be replaced by a single observation with equal to the (weighted) mean of the values and weight, , equal to the sum of the weights. This operation can be performed by g10zaf.
Hastie T J and Tibshirani R J (1990) Generalized Additive Models Chapman and Hall
Hutchinson M F (1986) Algorithm 642: A fast procedure for calculating minimum cross-validation cubic smoothing splines ACM Trans. Math. Software12 150–153
Hutchinson M F and de Hoog F R (1985) Smoothing noisy data with spline functions Numer. Math.47 99–106
Reinsch C H (1967) Smoothing by spline functions Numer. Math.10 177–183
1: – Character(1)Input
On entry: indicates whether the smoothing parameter is to be found by minimization of the CV or GCV functions, or by finding the smoothing parameter corresponding to a specified degrees of freedom value.
Cross-validation is used.
The degrees of freedom are specified.
Generalized cross-validation is used.
, or .
2: – Character(1)Input
On entry: indicates whether user-defined weights are to be used.
On exit: if , the value of the cross-validation, or if , the value of the generalized cross-validation function, evaluated at the value of returned in rho.
15: – Real (Kind=nag_wp)Output
On exit: the smoothing parameter, .
16: – Real (Kind=nag_wp)Input
On entry: the upper bound on the smoothing parameter. If , will be used instead. See Section 9 for details on how this argument is used.
17: – Real (Kind=nag_wp)Input
On entry: the accuracy to which the smoothing parameter rho is required. tol should preferably be not much less than , where is the machine precision. If , will be used instead.
18: – IntegerInput
On entry: the maximum number of spline evaluations to be used in finding the value of . If , will be used instead.
19: – Real (Kind=nag_wp) arrayWorkspace
20: – IntegerInput/Output
On entry: ifail must be set to , or to set behaviour on detection of an error; these values have no effect when no error is detected.
A value of causes the printing of an error message and program execution will be halted; otherwise program execution continues. A value of means that an error message is printed while a value of means that it is not.
If halting is not appropriate, the value or is recommended. If message printing is undesirable, then the value is recommended. Otherwise, the value is recommended. When the value or is used it is essential to test the value of ifail on exit.
On exit: unless the routine detects an error or a warning has been flagged (see Section 6).
6Error Indicators and Warnings
If on entry or , explanatory error messages are output on the current error message unit (as defined by x04aaf).
An unexpected error has been triggered by this routine. Please
See Section 7 in the Introduction to the NAG Library FL Interface for further information.
Your licence key may have expired or may not have been installed correctly.
See Section 8 in the Introduction to the NAG Library FL Interface for further information.
Dynamic memory allocation failed.
See Section 9 in the Introduction to the NAG Library FL Interface for further information.
When minimizing the cross-validation or generalized cross-validation, the error in the estimate of should be within . When finding for a fixed number of degrees of freedom the error in the estimate of should be within .
Given the value of , the accuracy of the fitted spline depends on the value of and the position of the values. The values of and are scaled and is transformed to avoid underflow and overflow problems.
8Parallelism and Performance
Background information to multithreading can be found in the Multithreading documentation.
g10acf is not threaded in any implementation.
The time to fit the spline for a given value of is of order .
When finding the value of that gives the required degrees of freedom, the algorithm examines the interval to u. For small degrees of freedom the value of can be large, as in the theoretical case of two degrees of freedom when the spline reduces to a straight line and is infinite. If the CV or GCV is to be minimized then the algorithm searches for the minimum value in the interval to u. If the function is decreasing in that range then the boundary value of u will be returned. In either case, the larger the value of u the more likely is the interval to contain the required solution, but the process will be less efficient.
In extreme cases, the conditioning of the sub-problems being solved can be adversely affected by small relative weights, small relative differences , or a combination of the two. The resultant low accuracy in the solutions to sub-problems can lead to spurious results and error exits. For example, for small degrees of freedom the correct value of can be extremely large, but an inaccurate smaller value may be returned for moderate values of u and an error return of for larger values of u. In such cases it is advised to try using e02bef for a fixed large smoothing value, or attempt to remove data with very small relative weights to improve the conditioning of the problem.
Regression splines with a small number of knots can be fitted by e02baf and e02bef.
This example uses the data given by Hastie and Tibshirani (1990), which consists of the age, , and C-peptide concentration (pmol/ml), , from a study of the factors affecting insulin-dependent diabetes mellitus in children. The data is input, reduced to a strictly ordered set by g10zaf and a spline with degrees of freedom is fitted by g10acf. The fitted values and residuals are printed.