如何用独立数据预测平滑项和基本函数的GAM?
How to predict GAM with smooth terms and basic functions with independent data?
我尝试使用 k 基函数拟合天数(tt 变量)和滞后预测变量(k=2)之间相互作用的 GAM 模型。
library(mgcv)
# Example data
data=data.frame(
tt=1:107, # days
pol=(sample.int(101,size=107,replace=TRUE)-1)/100,
at_rec=sample.int(101,size=107,replace=TRUE),
w_cas=sample.int(2000,size=107,replace=TRUE)
)
# model
gam1<-gam(pol ~ s(tt, k = 10) +
s(tt, by = Lag(at_rec, k = 2), k = 10)+
s(tt, by = Lag(w_cas, k = 2), k = 10),
data=data,method="GACV.Cp")
summary(gam1)
# while making newdata
> newdata=data.frame(tt=c(12,22),at_rec=c(44,34), w_cas=c(2011,2455))
# and prediction
> predict(gam1,newdata=newdata,se.fit=TRUE)
我遇到了这个错误
“PredictMat(object$smooth[[k]], data) 错误:无法通过变量找到”
如何用新数据预测这样的模型?
我 99.9% 确定 predict
方法找不到 by
项,因为它们是变量的函数,它正在寻找与您提供的名称完全相同的变量:“滞后(at_rec, k = 2)".
尝试将这些滞后变量作为显式变量添加到您的数据框中并重新拟合模型,它应该可以工作:
data <- transform(data,
lag_at_rec = Lag(at_rec, k=2),
lag_w_cas = Lag(w_cas, k=2))
gam1 <- gam(pol ~ s(tt, k = 10) +
s(tt, by = lag_at_rec, k = 10)+
s(tt, by = lag_w_cas, k = 10),
data = data, method = "GACV.Cp")
我尝试使用 k 基函数拟合天数(tt 变量)和滞后预测变量(k=2)之间相互作用的 GAM 模型。
library(mgcv)
# Example data
data=data.frame(
tt=1:107, # days
pol=(sample.int(101,size=107,replace=TRUE)-1)/100,
at_rec=sample.int(101,size=107,replace=TRUE),
w_cas=sample.int(2000,size=107,replace=TRUE)
)
# model
gam1<-gam(pol ~ s(tt, k = 10) +
s(tt, by = Lag(at_rec, k = 2), k = 10)+
s(tt, by = Lag(w_cas, k = 2), k = 10),
data=data,method="GACV.Cp")
summary(gam1)
# while making newdata
> newdata=data.frame(tt=c(12,22),at_rec=c(44,34), w_cas=c(2011,2455))
# and prediction
> predict(gam1,newdata=newdata,se.fit=TRUE)
我遇到了这个错误 “PredictMat(object$smooth[[k]], data) 错误:无法通过变量找到”
如何用新数据预测这样的模型?
我 99.9% 确定 predict
方法找不到 by
项,因为它们是变量的函数,它正在寻找与您提供的名称完全相同的变量:“滞后(at_rec, k = 2)".
尝试将这些滞后变量作为显式变量添加到您的数据框中并重新拟合模型,它应该可以工作:
data <- transform(data,
lag_at_rec = Lag(at_rec, k=2),
lag_w_cas = Lag(w_cas, k=2))
gam1 <- gam(pol ~ s(tt, k = 10) +
s(tt, by = lag_at_rec, k = 10)+
s(tt, by = lag_w_cas, k = 10),
data = data, method = "GACV.Cp")