我正在尝试编写一个函数来比较样条曲线和多项式回归之间的基本模型。
但是当我使用model$formula
选项,我在模型中使用它,并将其用于带有下一个变量的gam
函数时,我收到一个错误:
Error in mod$formula + df_work_final$Apps :
non-numeric argument to binary operator
如何将我的模型公式用于函数?
谢谢
完整示例:
library(gam)
library(ISLR)
data(College)
mod = gam(College$Grad.Rate~College$Private)
# This, I want to use into a function
Poly = function(valores){
poly.1= gam(mod$formula + valores,data=College)
poly.2= gam(mod$formula + poly(valores,2) ,data=College)
poly.3= gam(mod$formula + poly(valores,3) ,data=College)
poly.4= gam(mod$formula + poly(valores,4) ,data=College)
poly.5= gam(mod$formula + poly(valores,5) ,data=College)
}
Poly(df_work_final$Apps)
答案 0 :(得分:1)
将我以前的评论移到答案中:
无论如何,在模型公式中使用$
应禁止;改为使用模型拟合函数的data
参数;
我在初始gam
中看不到任何平滑功能,例如lo
或s
。你真的只是拟合线性模型Grad.Rate ~ Private
。那么,为什么不使用
mod <- lm(Grad.Rate ~ Private, data = College)
+
对于公式的连接无效。您想使用update.formula
(请阅读?update.formula
了解更多信息),例如,
update.formula(formula(mod), . ~ . + poly(Apps, 2))