使用广义加法模型预测的常规是什么,包括与R库gam的交互?

library("gam")
x <- data.frame(a=runif(100,1,10), b=runif(100,1,10))
x$y <- x$a*x$b

res <- gam(as.formula("y ~ s(a) + s(b)"), data=x[1:90,])
pred <- predict(res, x[91:100,], type="response")

res <- gam(as.formula("y ~ s(a) + s(b) + s(a,b,df=2)"), data=x[1:90,])
pred <- predict(res, x[91:100,], type="response")

适用于没有交互的初始模型 . 包含交互的后一种模型是以有意义的方式学习的,但是试图预测错误中的结果:

Error in gam.s(data[["s(a, b, df = 2)"]], z, w, spar = b, df = 2, xeval = smooth.frame[["s(a, b, df = 2)"]]) : object 'b' not found