R: Fitting Smoothing Spline ANOVA Models

ssanova0 {gss} | R Documentation

## Fitting Smoothing Spline ANOVA Models

### Description

Fit smoothing spline ANOVA models in Gaussian regression. The symbolic model specification via `formula` follows the same rules as in `lm`.

### Usage

    ssanova0(formula, type=NULL, data=list(), weights, subset,
             offset, na.action=na.omit, partial=NULL, method="v",
             varht=1, prec=1e-7, maxiter=30)

### Arguments

`formula` | Symbolic description of the model to be fit.
`type` | List specifying the type of spline for each variable. See `mkterm` for details.
`data` | Optional data frame containing the variables in the model.
`weights` | Optional vector of weights to be used in the fitting process.
`subset` | Optional vector specifying a subset of observations to be used in the fitting process.
`offset` | Optional offset term with known parameter 1.
`na.action` | Function which indicates what should happen when the data contain NAs.
`partial` | Optional symbolic description of parametric terms in partial spline models.
`method` | Method for smoothing parameter selection. Supported are `method="v"` for GCV, `method="m"` for GML (REML), and `method="u"` for Mallow's CL.
`varht` | External variance estimate needed for `method="u"`. Ignored when `method="v"` or `method="m"` are specified.
`prec` | Precision requirement in the iteration for multiple smoothing parameter selection. Ignored when only one smoothing parameter is involved.
`maxiter` | Maximum number of iterations allowed for multiple smoothing parameter selection. Ignored when only one smoothing parameter is involved.

### Details

The model specification via `formula` is intuitive. For example, `y~x1*x2` yields a model of the form

y = C + f_{1}(x1) + f_{2}(x2) + f_{12}(x1,x2) + e

with the terms denoted by `"1"`, `"x1"`, `"x2"`, and `"x1:x2"`.

The model terms are sums of unpenalized and penalized terms. Attached to every penalized term there is a smoothing parameter, and the model complexity is largely determined by the number of smoothing parameters.

`ssanova0` and the affiliated methods provide a front end to RKPACK, a collection of RATFOR routines for nonparametric regression via the penalized least squares. The algorithms implemented in RKPACK are of the order O(n^{3}).

### Value

`ssanova0` returns a list object of class `c("ssanova0","ssanova")`.

The method `summary.ssanova0` can be used to obtain summaries of the fits. The method `predict.ssanova0` can be used to evaluate the fits at arbitrary points along with standard errors. The methods `residuals.ssanova` and `fitted.ssanova` extract the respective traits from the fits.

### Note

For complex models and large sample sizes, the approximate solution of `ssanova` can be faster.

The method `project` is not implemented for `ssanova0`, nor is the mixed-effect model support through `mkran`.

In gss versions earlier than 1.0, `ssanova0` was under the name `ssanova`.

### Author(s)

Chong Gu, chong@stat.purdue.edu

### References

Wahba, G. (1990), Spline Models for Observational Data. Philadelphia: SIAM.

Gu, C. (2013), Smoothing Spline ANOVA Models (2nd Ed). New York: Springer-Verlag.

Gu, C. (2014), Smoothing Spline ANOVA Models: R Package gss. Journal of Statistical Software, 58(5), 1-25. URL http://www.jstatsoft.org/v58/i05/.

### Examples

    ## Fit a cubic spline
    x <- runif(100); y <- 5 + 3*sin(2*pi*x) + rnorm(x)
    cubic.fit <- ssanova0(y~x,method="m")
    ## Obtain estimates and standard errors on a grid
    new <- data.frame(x=seq(min(x),max(x),len=50))
    est <- predict(cubic.fit,new,se=TRUE)
    ## Plot the fit and the Bayesian confidence intervals
    plot(x,y,col=1); lines(new$x,est$fit,col=2)
    lines(new$x,est$fit+1.96*est$se,col=3)
    lines(new$x,est$fit-1.96*est$se,col=3)
    ## Clean up
    ## Not run: rm(x,y,cubic.fit,new,est)
    dev.off()
    ## End(Not run)

    ## Fit a tensor product cubic spline
    data(nox)
    nox.fit <- ssanova0(log10(nox)~comp*equi,data=nox)
    ## Fit a spline with cubic and nominal marginals
    nox$comp<-as.factor(nox$comp)
    nox.fit.n <- ssanova0(log10(nox)~comp*equi,data=nox)
    ## Fit a spline with cubic and ordinal marginals
    nox$comp<-as.ordered(nox$comp)
    nox.fit.o <- ssanova0(log10(nox)~comp*equi,data=nox)
    ## Clean up
    ## Not run: rm(nox,nox.fit,nox.fit.n,nox.fit.o)

[Package gss version 2.1-7 Index]