基于在单独数据帧上进行的 GAME 预测值

Predicting values based on a GAM conducted on a seperate dataframe

我有 2 个高度相关的变量(虽然不是完全线性的,因此是广义相加模型),它们是在一个时间段内测量的。我可以用大量的偏差解释和良好的验证图在它们之间构建一个可靠的 GAM。因此,例如,对于一些假设数据(忽略本例中解释的验证图和偏差),

date <- as.data.frame(seq(from = as.POSIXct("2007/9/01"), 
                      to = as.POSIXct("2008/3/01"), by = "day"))
a1 <- as.data.frame(matrix(sample(0:1000, 18.3*10, replace=TRUE), ncol=1))
b1 <- as.data.frame(matrix(sample(0:1000, 18.3*10, replace=TRUE), ncol=1))
df1 <- cbind(date,a1,b1)
colnames(df1) <- c("date","a1","b1")
library(mgcv)
gam <- gam(a1 ~ s(b1), data = df1)

现在在一个单独的数据框上,我在更长的时间段内测量了其中一个变量。有没有办法预测这段时间内的第二个响应变量?例如...

date2 <- as.data.frame(seq(from = as.POSIXct("2006/1/01"), 
                       to = as.POSIXct("2008/12/31"), by = "day"))
a2 <- as.data.frame(matrix(sample(0:1000, 109.6*10, replace=TRUE), ncol=1))
df2 <- cbind(date2,a2)
colnames(df2) <- c("date","a2")

这个我试过了,好像不行。

    b2_predict <- predict.gam(gam,df2$a2)

我收到此错误消息

b2_predict <- predict.gam(gam,df2$a2)
Error in model.frame.default(ff, data = newdata, na.action = na.act) :
invalid type (list) for variable 'b1'

知道如何解决吗?

也许这会有所帮助:

b2_predict <- predict.gam(gam,data.frame(b1=df2$a2))