我很困惑,为什么两段代码正在返回不同的结果之间的输出差混淆。 在一个环路之间唯一的区别是使用的工资$ age.cut1与age.cut1。差异的意义是什么?有两个简单的循环
DATA:ISLR包,工资数据
cv.err <- rep(NA, 10)
for (i in 2:10){
Wage$age.cut1 = cut(Wage$age, i)
fit = glm(wage~age.cut1, data = Wage)
cv.err[i] = cv.glm(Wage, fit, K = 10)$delta[2]
}
> cv.err
[1] NA 1733.646 1681.587 1636.521 1632.931 1623.112 1611.965 1600.903 1609.973
[10] 1607.234 # these are the expected results
cv.err <- rep(NA, 10)
for (i in 2:10){
age.cut1 = cut(Wage$age, i)
fit = glm(wage~age.cut1, data = Wage)
cv.err[i] = cv.glm(Wage, fit, K = 10)$delta[2]
}
> cv.err
[1] NA 1603.255 1608.617 1602.296 1606.265 1606.139 1602.448 1606.063 1605.100
[10] 1606.986
我敢打赌,如果你运行两次_same_代码,你不会得到完全相同的结果。交叉验证使用随机选择的点来构建模型以及那些不用于测试的点。如果你运行两次,你会得到不同的随机选择和不同的结果。 – G5W
尝试在每个'cv.err'前面设置'set.seed(1)',看看你是否得到相同的结果。 –
在两个循环中将随机种子设置为1会产生不同的结果。结果与我的初始运行一致。据我所知,两个循环都是一样的,不是吗? – Redeyes10