如何使用两个不同的`by = var`变量来交互张量积?

时间:2013-04-19 00:12:04

标签: r statistics interaction gam mgcv

一个例子:

library(mgcv)
N=1000
x1 = seq(1:N)
x2 = log(x1)
x3 = sqrt(x1)
fac1 = ceiling(rnorm(N)*3)
fac2 = ceiling(runif(N)*3)
y = fac1*x2 + x1*x2 + x2 + x3*x2 + x2*(x1/x3)^(.8+fac2/10) + rnorm(N)*x2

mod = gam(y~
        s(as.factor(fac1),bs="re",by=x2) 
    +       s(x2)
    +   s(x1,by=x2)
    +   s(x3,by=x2)
    +   te(x1,x3,by=x2, by=as.factor(fac2))
    )   

最后的张量不想让我两次互动。第一个是连续变量,它将模型矩阵中的每个项相乘,第二个是一个因子 - 它为每个因子级别创建不同的表面。

编辑:最后一个术语相当于te(x1*x2,x1*x3,by=as.factor(fac2))。但如果我发明了一个新的变量x1x2 = x1*x2,我将无法调用predict.gam

我该如何编程呢?我是否需要诉诸SmoothCon或其他类似的内容?如果是这样,一个如何实施的例子将非常有用。

谢谢!

(PS:我知道模型的异方性。特征,而不是bug。)

0 个答案:

没有答案