PPolyRep {GeDS} | R Documentation |
Piecewise Polynomial Spline Representation
Description
The function converts a GeDS fit which has a B-spline representation to a piecewise polynomial form.
Usage
PPolyRep(object, n = 3)
Arguments
object |
the |
n |
integer value (2, 3 or 4) specifying the order ( |
Details
This function converts a selected GeDS fit from a GeDS-class
object represented in terms of B-splines into an object where the fit is
represented in terms of piecewise polynomials.
The function wraps polySpline
in order to let it
accept GeDS-class
objects as input. Hence the function provides
a useful link between the package GeDS and the package splines,
allowing the user to take advantage of the functions provided in the
splines package.
Value
An object that inherits from classes "spline"
and
"polySpline"
. It is a list whose arguments are:
knots |
a vector of size |
coefficients |
a |
Note
Let us note that the first k+1
rows of the matrix contain the
n
coefficients of the k+1
consecutive pieces of the piecewise
polynomial representation. The last (k+2)
-th row is extraneous and it
appears as a result of the use of the function
polySpline
.
Examples
# Generate a data sample for the response variable
# Y and the single covariate X
set.seed(123)
N <- 500
f_1 <- function(x) (10*x/(1+100*x^2))*4+4
X <- sort(runif(N, min = -2, max = 2))
# Specify a model for the mean of Y to include only
# a component non-linear in X, defined by the function f_1
means <- f_1(X)
# Add (Normal) noise to the mean of Y
Y <- rnorm(N, means, sd = 0.1)
# Fit a Normal GeDS regression using NGeDS
Gmod <- NGeDS(Y ~ f(X), beta = 0.6, phi = 0.995, Xextr = c(-2,2))
# construct the PP representation of the cubic GeDS fit
# and apply some functions of the package splines
Polymod <- PPolyRep(Gmod, 4)
require(splines)
class(Polymod)
splineKnots(Polymod)
knots(Gmod, n = 4)
plot(Polymod)
# Generate a plot showing the PP representation
# based on the same example
knt <- splineKnots(Polymod)
coeffs <- coef(Polymod)
plot(Gmod, n = 4, legend = FALSE, main = "Cubic Curves")
cols <- sample(heat.colors(length(knt)), length(knt))
for(i in 1:(length(knt))){
curve(coeffs[i,1] + coeffs[i,2]*(x - knt[i])+
coeffs[i,3]*(x - knt[i])^2+
coeffs[i,4]*(x - knt[i])^3,
add = TRUE, col = cols[i])
abline(v = knt[i])
}