拟合步骤函数

时间:2017-09-25 18:59:21

标签: r

AIM:此处的目的是使用步骤函数找到合适的拟合,该函数使用age来描述wage数据集中的Wage图书馆ISLR

计划:

为了找到合适的合身,我会尝试多次合身,这将有不同的切割点。我将glm()函数(boot库)用于拟合目的。为了检查最合适的匹配,我将使用cv.glm()函数对拟合模型进行交叉验证。

问题:

为了做到这一点,我做了以下事情:

all.cvs = rep(NA, 10)
for (i in 2:10) {
  lm.fit = glm(wage~cut(Wage$age,i), data=Wage)
  all.cvs[i] = cv.glm(Wage, lm.fit, K=10)$delta[2]
}

但这会产生错误:

Error in model.frame.default(formula = wage ~ cut(Wage$age, i), data =
list( :    variable lengths differ (found for 'cut(Wage$age, i)')

然而,当我运行下面给出的代码时,它会运行。(可以找到here

all.cvs = rep(NA, 10)

for (i in 2:10) {
  Wage$age.cut = cut(Wage$age, i)
  lm.fit = glm(wage~age.cut, data=Wage)
  all.cvs[i] = cv.glm(Wage, lm.fit, K=10)$delta[2]
}

假设和结果:

  1. 嗯,cut()glm()可能无法合作。但这有效:

    glm(wage~cut(age,4),data=Wage)
    
  2. 问题: 所以,基本上我们使用cut()函数,将结果保存在变量中,然后在glm()函数中使用该变量。但是我们不能将cut函数放在glm()函数中。这也是,只有代码处于循环中。

    那么,为什么代码的第一个版本不起作用?

    这令人困惑。任何帮助表示赞赏。

0 个答案:

没有答案