R 用样条和滞后预测从GAM模型中提取预测

R 用样条和滞后预测从GAM模型中提取预测,r,R,我有一些数据,正在努力自学如何在回归模型中利用滞后预测因子。我目前正在尝试从一个广义的加法模型生成预测,该模型使用样条曲线平滑数据,并包含滞后 假设我有以下数据,并已将数据拆分为训练样本和测试样本 head(mtcars) Train <- sample(1:nrow(mtcars), ceiling(nrow(mtcars)*3/4), replace=FALSE) 车头(mtcars) 训练我假设您正在使用mgcv库中的gam()。似乎gam()不喜欢s()术语中未在“base”中定

我有一些数据,正在努力自学如何在回归模型中利用滞后预测因子。我目前正在尝试从一个广义的加法模型生成预测,该模型使用样条曲线平滑数据,并包含滞后

假设我有以下数据,并已将数据拆分为训练样本和测试样本

head(mtcars)
Train <- sample(1:nrow(mtcars), ceiling(nrow(mtcars)*3/4), replace=FALSE)
车头(mtcars)

训练我假设您正在使用
mgcv
库中的
gam()
。似乎
gam()
不喜欢
s()
术语中未在“base”中定义的函数。您可以通过添加包含转换变量的列,然后使用该变量进行建模来解决这个问题。比如说

tmtcars <- transform(mtcars, ldisp=lag(disp,1))
Train <- sample(1:nrow(mtcars), ceiling(nrow(mtcars)*3/4), replace=FALSE)
f_gam <- gam(hp ~ s(qsec, bs="cr") + s(ldisp, bs="cr"), data= tmtcars[Train,])
summary(f_gam)
predict(f_gam, tmtcars[-Train,])
而且,因为它们显式地将存储模块设置为NULL,所以无法解析base之外的变量和函数名。因此,因为
mean()
base
包中,所以这是可行的

eval(parse(text="mean(x)"), data.frame(x=1:4), enclos=NULL)
# [1] 2.5
但是因为
var()
是在
stats
中定义的,所以这不是

eval(parse(text="var(x)"), data.frame(x=1:4), enclos=NULL)
# Error in eval(expr, envir, enclos) : could not find function "var"

lag()
,比如
var()
是在
stats
包中定义的。

这是一个很好的解释,解释了为什么有些东西不起作用或抛出错误。这有助于我们,联合国发起的。谢谢@MrFlick!
eval(parse(text = txt), data, enclos = NULL)
eval(parse(text="mean(x)"), data.frame(x=1:4), enclos=NULL)
# [1] 2.5
eval(parse(text="var(x)"), data.frame(x=1:4), enclos=NULL)
# Error in eval(expr, envir, enclos) : could not find function "var"