Build a standardised P-Spline design matrix and the associated P-Spline penalty matrix
make_matrices_dens.Rd
This function builds the B-spline design matrix for a given data vector. Importantly, the B-spline basis functions are normalised such that the integral of each basis function is 1, hence this basis can be used for spline-based density estimation, when the basis functions are weighted by non-negative weights summing to one.
Usage
make_matrices_dens(
x,
k,
type = "real",
degree = 3,
npoints = 10000,
diff_order = 2,
pow = 0.5
)
Arguments
- x
data vector
- k
number of basis functions
- type
type of the data, either
"real"
for data on the reals,"positive"
for data on the positive reals or"circular"
for circular data like angles.- degree
degree of the B-spline basis functions, defaults to cubic B-splines
- npoints
number of points used in the numerical integration for normalizing the B-spline basis functions
- diff_order
order of differencing used for the P-Spline penalty matrix for each data stream. Defaults to second-order differences.
- pow
power for polynomial knot spacing
Such non-equidistant knot spacing is only used for
type = "positive"
.
Value
list containing the design matrix Z
, the penalty matrix S
, the prediction design matrix Z_predict
, the prediction grid xseq
, and details for the basis expansion.
Examples
modmat = make_matrices_dens(x = (-50):50, k = 20)
#> Leaving out last column of the penalty matrix, fix the last spline coefficient at zero for identifiability!
modmat = make_matrices_dens(x = 1:100, k = 20, type = "positive")
#> Leaving out last column of the penalty matrix, fix the last spline coefficient at zero for identifiability!
modmat = make_matrices_dens(x = seq(-pi,pi), k = 20, type = "circular")
#> Leaving out last column of the penalty matrix, fix the last spline coefficient at zero for identifiability!