There is a trade-off between generality and speed. Our goal is to develop software for general spline models. Thus all functions in ASSIST require at least flops. For some special spline models such as polynomial splines, software exist which only require flops. For example, the smooth.spline function in S should be used to fit simple cubic spline models.
Fitting complicated smoothing spline models such as SS ANOVA models with multiple smoothing parameters and SNMMs are computationally intensive. For large data sets, it may take hours and/or exhaust memory. Certain tricks in S are helpful. For example, for kernels not available in our library, it is more efficient to write functions in lower languages such as C or Fortran and then load them into S. Vectorization is also important. For large data sets, one may re-set memory and object.size arguments in the S function options() to increase memory and object size. Control parameters such as the number of iterations and convergence criteria can be reset to save time.
Functions using iterative procedures such as nnr, snr and snm may fail to converge within the prespecified number of iterations. In these cases convergence may be achieved with modifications of some of the following arguments: initial values, convergence criteria, method for estimating smoothing parameters and number of iterations.
Some reproducing kernels in ASSIST library have restricted domains (see Section 2). Thus it is important to check whether the domain of a rk function coincides with the range of a covariate. Otherwise, transformations should be made or the scale=T should be used. We recommend the first option.
The nlme library (version 3.0 or later) is required for the ssr and nnr functions when a unknown variance-covariance structure is involved, and for the slm, snr and snm functions. The nlme library in the standard libraries, if available, may be loaded using
library(NLME,first=T)The nlme library in a directory, say /home/nlme, may be loaded using
dyn.load("/home/nlme/NLME_l.o")We have used the same methods and notations as in nlme to model correlation, heteroscedasticity and random effects. Therefore users need to learn this part in nlme (Pinheiro and Bates, 2000) when specifying the correlation, weights and random options.