我正在尝试对我之前在 R 中构建的一些 glm 模型进行 10 倍交叉验证。尽管我已经阅读了很多帮助文件,但我cv.glm()
对包中的函数有点困惑。boot
当我提供以下公式时:
library(boot)
cv.glm(data, glmfit, K=10)
这里的“数据”参数是指整个数据集还是仅指测试集?
到目前为止,我看到的示例提供了“数据”参数作为测试集,但这并没有真正意义,例如为什么在同一个测试集上进行 10 折?他们都会给出完全相同的结果(我假设!)。
不幸的是?cv.glm
,以一种模糊的方式解释它:
数据:包含数据的矩阵或数据框。行应该是案例,列对应于变量,其中之一是响应
我的另一个问题是关于$delta[1]
结果的。这是 10 次试验的平均预测误差吗?如果我想得到每个折叠的错误怎么办?
这是我的脚本的样子:
##data partitioning
sub <- sample(nrow(data), floor(nrow(x) * 0.9))
training <- data[sub, ]
testing <- data[-sub, ]
##model building
model <- glm(formula = groupcol ~ var1 + var2 + var3,
family = "binomial", data = training)
##cross-validation
cv.glm(testing, model, K=10)