我想对我之前在R中建立的一些glm模型进行10倍交叉验证。我对boot
包中的cv.glm()
函数有点困惑,尽管我已经阅读了很多帮助文件。当我提供以下公式时:
library(boot)
cv.glm(data, glmfit, K=10)
这里的 "data" 参数是指整个数据集还是仅指测试集?到目前为止我看到的例子都将 "data" 参数作为测试集,但那并没有太多意义,比如为什么在同一测试集上进行10次交叉验证?它们都会给出完全相同的结果(我猜测!)。
不幸的是,
?cv.glm
以模糊的方式解释了它:data: 包含数据的矩阵或数据框。行应该是案例,列对应于变量之一为响应
我的另一个问题是关于
$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)
boot:::cv.glm
的示例部分。您应该输入完整的数据、模型和 CV 的折叠。 - Roman Luštrikcv.glm(data, glm, K=10)
提供了一个1000行的数据框,它会将数据分成10个大小为100的部分并进行交叉验证吗?抱歉,我已经查看了?cv.glm,但没有找到答案。 - Error404