PPolyRep: Piecewise Polynomial Spline Representation

Description Usage Arguments Details Value Note Examples

View source: R/pprep.R

Description

The function converts a GeDS fit which has a B-spline representation to a piecewise polynomial form.

Usage

1
PPolyRep(object, n = 3)

Arguments

object

the GeDS-class where the GeDS fit to be converted is found.

n

integer value (2, 3 or 4) specifying the order (= degree + 1) of the GeDS fit which should be converted to a piecewise polynomial form. By default equal to 3L. Non-integer values will be passed to the function as.integer.

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 k + 2 containing the complete set of knots (internal knots plus the limits of the interval) of the GeDS fit.

coefficients

a (k + 2) \times n matrix containing the coefficients of the polynomials in the required piecewise polynomial representation.

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 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])
}

GeDS documentation built on May 2, 2019, 12:36 p.m.