6

例:

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))
    )   

最後のテンソルは、それを 2 回操作させたくありません。1 つ目は、モデル マトリックスのすべての項を乗算する連続変数で、2 つ目は因子です。因子レベルごとに異なる曲面を作成します。

編集: 最後の用語は と同等te(x1*x2,x1*x3,by=as.factor(fac2))です。しかし、新しい変数を発明すると、x1x2 = x1*x2呼び出すことができなくなりますpredict.gam

これをどのようにプログラムしますか?アピールする必要がありSmoothConますか?もしそうなら、実装方法の例は本当に役に立ちます。

ありがとう!

(PS: モデルの不均一分散の性質を認識しています。バグではなく、機能です。)

4

0 に答える 0