當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R tensor.prod.model.matrix 行克羅內克積/張量積平滑構造


R語言 tensor.prod.model.matrix 位於 mgcv 包(package)。

說明

從模型矩陣或平滑邊基的懲罰矩陣生成平滑張量積的模型矩陣或懲罰矩陣(邊和結果可以是稀疏的)。模型矩陣構造使用行克羅內克積。

用法

tensor.prod.model.matrix(X)
tensor.prod.penalties(S)
a%.%b

參數

X

平滑邊基的模型矩陣列表。項目可以是 "matrix""dgCMatrix" 類,但不能是兩者的混合。

S

邊基礎的懲罰列表是平滑的。

a

行數與 A 相同的矩陣。

b

行數與 B 相同的矩陣。

細節

如果 X[[1]]X[[2]] ... X[[m]] 是張量積平滑的邊基的模型矩陣,則整個張量積平滑的模型矩陣的第 i 行由 X[[1]][i,]%x%X[[2]][i,]%x% ... X[[m]][i,] 給出,其中 %x% 是克羅內克乘積。當然,例程按列運行,而不是按行運行!

A%.%B 是這個“行克羅內克積”的運算符形式。

如果 S[[1]]S[[2]] ... S[[m]] 是邊基數的懲罰矩陣,而 I[[1]]I[[2]] ... I[[m]] 是對應的單位矩陣,每個矩陣與其對應的維度相同懲罰,則張量積 smooth 有 m 個關聯懲罰,其形式為:

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

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

...

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

當然,在構造張量積平滑時,模型矩陣和懲罰矩陣以相同的順序呈現很重要。

或者是張量積平滑的單個模型矩陣(與邊際屬於同一類),或者是張量積平滑的懲罰項列表。

例子

require(mgcv)
## Dense row Kronecker product example...
X <- list(matrix(0:3,2,2),matrix(c(5:8,0,0),2,3))
tensor.prod.model.matrix(X)
X[[1]]%.%X[[2]]

## sparse equivalent...
Xs <- lapply(X,as,"dgCMatrix")
tensor.prod.model.matrix(Xs)
Xs[[1]]%.%Xs[[2]]

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)
## Sparse equivalent...
Ss <- lapply(S,as,"dgCMatrix")
tensor.prod.penalties(Ss)

作者

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

參考

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

也可以看看

te , smooth.construct.tensor.smooth.spec

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Row Kronecker product/ tensor product smooth construction。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。