rbpspline: Fits a penalized spline with radial basis functions to data

Description Usage Arguments Details Value Author(s) References See Also Examples

View source: R/psplines.R

Description

Fits a penalized spline with radial basis functions to data.

Usage

1
rbpspline(y, x, knots, degree, penalty = "gcv", ...)

Arguments

y

The response vector.

x

A vector/matrix giving the values of the predictor variable(s). If x is a matrix, each row corresponds to one observation.

knots

A vector givint the coordinates of the knots.

degree

The degree of the penalized smoothing spline.

penalty

A numeric giving the penalty coefficient for the penalization term. Alternatively, it could be either 'cv' or 'gcv' to choose the penalty using the (generalized) cross-validation criterion.

...

Additional options to be passed to the cv or gcv function.

Details

The penalized spline with radial basis is defined by:

f(x) = β_0 + β_1 x + … + β_{m-1} x^{m-1} + ∑_{k=0}^{K-1} β_{m+k} || x - κ_k ||^{2m - 1}

where β_i are the coefficients to be estimated, κ_i are the coordinates of the i-th knot and m = (d+1)/2 where d corresponds to the degree of the spline.

The fitting criterion is to minimize

||y - X β||^2 + λ^{2m-1} β^T K β

where λ is the penalty coefficient and K the penalty matrix.

Value

An object of class pspline.

Author(s)

Mathieu Ribatet

References

Ruppert, D. Wand, M.P. and Carrol, R.J. (2003) Semiparametric Regression Cambridge Series in Statistical and Probabilistic Mathematics.

See Also

cv, gcv

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
n <- 200
x <- runif(n)
fun <- function(x) sin(3 * pi * x)
y <- fun(x) + rnorm(n, 0, sqrt(0.4))
knots <- quantile(x, prob = 1:(n/4) / (n/4 + 1))
fitted <- rbpspline(y, x, knots = knots, degree = 3)
fitted

plot(x, y)
lines(fitted, col = 2)

Example output

Call:
rbpspline(y = y, x = x, knots = knots, degree = 3)

  Rank: 200 	(G)CV Score: 82.39 
Degree: 3 	 Penalty:  0.234 

     Degree of freedom: 9.549 
Res. Degree of freedom: 187.913 

SpatialExtremes documentation built on Sept. 1, 2020, 3:01 a.m.