Skip to contents

Check order, degrees of freedom (df) and iknots

Usage

iknots_or_df(x, iknots, df, order)

Arguments

x

the support - a numeric vector

iknots

internal knots - a numeric vector

df

degrees of freedom - a numeric value of length 1

order

polynomial order

Value

a numeric vector to use as the internal knots defining a B-spline.

Details

This is an internal function, not to be exported, and used in the calls for bsplines and bsplineD.

Use iknots preferentially. If iknots are not provided then return the trimmed_quantile for the appropriate df and order

Examples


xvec <- runif(600, min = 0, max = 3)

# return the iknots
cpr:::iknots_or_df(x = xvec, iknots = 1:2, df = NULL, order = NULL)
#> [1] 1 2

# return the iknots even when the df and order are provided
cpr:::iknots_or_df(x = xvec, iknots = 1:2, df = 56, order = 12)
#> Warning: Both iknots and df defined, using iknots
#> [1] 1 2

# return numeric(0) when df <= order (df < order will also give a warning)
cpr:::iknots_or_df(x = xvec, iknots = NULL, df = 6, order = 6)
#> numeric(0)

# return trimmed_quantile when df > order
# probs = (df - order) / (df - order + 1)
cpr:::iknots_or_df(x = xvec, iknots = NULL, df = 10, order = 4)
#> 14.28571% 28.57143% 42.85714% 57.14286% 71.42857% 85.71429% 
#> 0.4576623 0.9097725 1.3163082 1.7251498 2.1546635 2.5640816 
cpr::trimmed_quantile(xvec, probs = 1:6 / 7)
#> 14.28571% 28.57143% 42.85714% 57.14286% 71.42857% 85.71429% 
#> 0.4576623 0.9097725 1.3163082 1.7251498 2.1546635 2.5640816