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)