tensor.prod.model.matrix        package:mgcv        R Documentation

Utility functions for constructing tensor product smooths

Description:

     Produce model matrices or penalty matrices for a tensor product
     smooth from the model matrices or penalty matrices for the
     marginal bases of the smooth.

Usage:

     tensor.prod.model.matrix(X)
     tensor.prod.penalties(S)

Arguments:

       X: a list of model matrices for the marginal bases of a smooth

       S: a list of penalties for the marginal bases of a smooth.

Details:

     If 'X[[1]]', 'X[[2]]' ... 'X[[m]]' are the model matrices of the
     marginal bases of  a tensor product smooth then the ith row of the
     model matrix for the whole tensor product smooth is given by
     'X[[1]][i,]%x%X[[2]][i,]%x% ... X[[m]][i,]', where '%x%' is the
     Kronecker product. Of course  the routine operates column-wise,
     not row-wise!

     If 'S[[1]]', 'S[[2]]' ... 'S[[m]]' are  the penalty matrices for
     the marginal bases, and  'I[[1]]', 'I[[2]]' ... 'I[[m]]' are
     corresponding identity matrices, each of the same  dimension as
     its corresponding penalty, then the tensor product smooth has m
     associate penalties of the form:

     'S[[1]]%x%I[[2]]%x% ... I[[m]]', 

     'I[[1]]%x%S[[2]]%x% ... I[[m]]' 

     ... 

     'I[[1]]%x%I[[2]]%x% ... S[[m]]'. 

     Of course it's important that the model matrices and penalty
     matrices are presented in the same order when  constructing tensor
     product smooths.

Value:

     Either a single model matrix for a tensor product smooth, or a
     list of penalty terms for a tensor product smooth.

Author(s):

     Simon N. Wood simon.wood@r-project.org

References:

     Wood, S.N. (2006) Low rank scale invariant tensor product smooths
     for Generalized Additive Mixed Models. Biometrics 62(4):1025-1036

See Also:

     'te', 'smooth.construct.tensor.smooth.spec'

Examples:

     X <- list(matrix(1:4,2,2),matrix(5:10,2,3))
     tensor.prod.model.matrix(X)

     S<-list(matrix(c(2,1,1,2),2,2),matrix(c(2,1,0,1,2,1,0,1,2),3,3))
     tensor.prod.penalties(S)

