比较样条和多项式
compare splines and polynomials
我正在尝试编写一个函数来比较样条和多项式回归之间的基本模型。
但是当我使用我模型中的 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)
将我之前的评论移动到答案中:
无论如何,在模型公式中使用$
应该禁止;改为使用模型拟合函数的 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))
我正在尝试编写一个函数来比较样条和多项式回归之间的基本模型。
但是当我使用我模型中的 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)
将我之前的评论移动到答案中:
无论如何,在模型公式中使用
$
应该禁止;改为使用模型拟合函数的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))