smf | R Documentation |
Used inside a formula object to define a smooth, a tensor product smooth or a tensor product interaction.
Natural cubic regression splines (linear beyond the knots, equivalent to ns
from package splines
) are used as marginal bases. While tensor
builds a tensor product of marginal bases including
the intercepts, tint
applies a tensor product of the marginal bases without their intercepts.
Unlike tensor
, the marginal effects of the covariates should also be present in the formula when using tint
.
For a conceptual difference between tensor products and tensor product interactions see Section 5.6.3 from Wood (2017)
smf(..., knots = NULL, df = NULL, by = NULL, same.rho = FALSE)
tensor(..., knots = NULL, df = NULL, by = NULL, same.rho = FALSE)
tint(..., knots = NULL, df = NULL, by = NULL, same.rho = FALSE)
... |
Any number of covariates separated by "," |
knots |
numeric vector that specifies the knots of the splines (including boundaries); default is NULL, in which case the knots are spread through the covariate values using quantiles. Precisely, for the term "smf(x,df=df1)", the vector of knots will be: quantile(unique(x),seq(0,1,length=df1)) |
df |
numeric value that indicates the number of knots (or degrees of freedom) desired; default is NULL. If knots and df are NULL, df will be set to 10 |
by |
numeric or factor variable in order to define a varying coefficient smooth |
same.rho |
if the specified by variable is a factor, specifies whether the smoothing parameters should be the same for all levels; default is FALSE. |
object of class smf.smooth.spec
, tensor.smooth.spec
or tint.smooth.spec
(see smooth.spec
for details)
Wood, S. N. (2017), Generalized additive models: an introduction with R. Second Edition. London: Chapman & Hall/CRC.
# penalized cubic regression spline of time with 5 unspecified knots
formula.test <- ~smf(time,df=5)
# suppose that we want to fit a model from formula.test
library(survPen)
data(datCancer)
mod.test <- survPen(~smf(fu,df=5) ,data=datCancer,t1=fu,event=dead)
# then the knots can be retrieved like this:
mod.test$list.smf[[1]]$knots
# or calculated like this
quantile(unique(datCancer$fu),seq(0,1,length=5))
# penalized cubic regression splines of time and age with respectively 5 and 7 unspecified knots
formula.test2 <- ~smf(time,df=5)+smf(age,df=7)
# penalized cubic regression splines of time and age with respectively 3 and 4 specified knots
formula.test3 <- ~smf(time,knots=c(0,3,5))+smf(age,knots=c(30,50,70,90))
# penalized tensor product for time and age with respectively 5 and 4 unspecified knots leading
# to 5*4 = 20 regression parameters
formula.test <- ~tensor(time,age,df=c(5,4))
# penalized tensor product for time and age with respectively 3 and 4 specified knots
formula.test3 <- ~tensor(time,agec,knots=list(c(0,3,5),c(30,50,70,90)))
# penalized tensor product for time, age and year with respectively 6, 5 and 4 unspecified knots
formula.test <- ~tensor(time,age,year,df=c(6,5,4))
# penalized tensor product interaction for time and age with respectively 5 and 4 unspecified knots
# main effects are specified as penalized cubic regression splines
formula.test <- ~smf(time,df=5)+smf(age,df=4)+tint(time,age,df=c(5,4))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.