R
R/mgcv:為什麼 te() 和 ti() 張量積會產生不同的表面?
用於擬合張量積交互的
mgcv
包有兩個函數:和. 我了解兩者之間的基本分工(擬合非線性交互與將這種交互分解為主效應和交互)。我不明白的是為什麼並且可能會產生(略微)不同的結果。R``te()``ti()``te(x1, x2)``ti(x1) + ti(x2) + ti(x1, x2)
MWE(改編自
?ti
):require(mgcv) test1 <- function(x,z,sx=0.3,sz=0.4) { x <- x*20 (pi**sx*sz)*(1.2*exp(-(x-0.2)^2/sx^2-(z-0.3)^2/sz^2)+ 0.8*exp(-(x-0.7)^2/sx^2-(z-0.8)^2/sz^2)) } n <- 500 x <- runif(n)/20;z <- runif(n); xs <- seq(0,1,length=30)/20;zs <- seq(0,1,length=30) pr <- data.frame(x=rep(xs,30),z=rep(zs,rep(30,30))) truth <- matrix(test1(pr$x,pr$z),30,30) f <- test1(x,z) y <- f + rnorm(n)*0.2 par(mfrow = c(2,2)) # Model with te() b2 <- gam(y~te(x,z)) vis.gam(b2, plot.type = "contour", color = "terrain", main = "tensor product") # Model with ti(a) + ti(b) + ti(a,b) b3 <- gam(y~ ti(x) + ti(z) + ti(x,z)) vis.gam(b3, plot.type = "contour", color = "terrain", main = "tensor anova") # Scatterplot of prediction b2/b3 plot(predict(b2), predict(b3))
在這個例子中差異不是很大,但我只是想知道為什麼會有差異。
會話信息:
> devtools::session_info("mgcv") Session info ----------------------------------------------------------------------------------- setting value version R version 3.3.1 (2016-06-21) system x86_64, linux-gnu ui RStudio (0.99.491) language en_US collate en_US.UTF-8 tz <NA> date 2016-09-13 Packages --------------------------------------------------------------------------------------- package * version date source lattice 0.20-33 2015-07-14 CRAN (R 3.2.1) Matrix 1.2-6 2016-05-02 CRAN (R 3.3.0) mgcv * 1.8-12 2016-03-03 CRAN (R 3.2.3) nlme * 3.1-128 2016-05-10 CRAN (R 3.3.1)
這些表面上是相同的模型,但實際上在擬合時存在一些細微的差異。一個重要的區別是,與模型
ti()
相比,帶有項的模型估計了更多的平滑度參數te()
:> b2$sp te(x,z)1 te(x,z)2 3.479997 5.884272 > b3$sp ti(x) ti(z) ti(x,z)1 ti(x,z)2 8.168742 60.456559 2.370604 2.761823
這是因為有更多的懲罰矩陣與這兩個模型相關聯;在
ti()
模型中,我們每個“項”有一個,而te()
模型中只有兩個,每個邊緣平滑一個。我看到帶有
ti()
as 的模型用於決定我是否想要或者.te()
如果我使用術語,我無法比較這些模型,所以我使用ti()
. 一旦我確定我是否需要如果我需要,我可以重新調整模型,如果不需要,我可以為每個邊際效應te()
單獨調整s()
.
method = "ML"
請注意,您可以通過使用( 或進行擬合來使模型彼此更接近"REML"
,但除非所有術語都被完全懲罰,否則您不應該將“固定”效果與它們進行比較"REML"
,默認情況下它們不是,但會說與select = TRUE
)。