0

我是R新手。我正在使用 R 来探索如何对 svyglm 进行 10 倍交叉验证以进行机器学习。没有一个流行的 R 包,例如 caret、mlr 支持 svyglm。我想使用 mlr 的 makeresamplesinstance 来创建样本折叠/拆分,并在函数/循环中使用它来对 svyglm 进行交叉验证。我的目标是根据交叉验证的估计进行预测,并从预测中产生平均错误分类误差和 auc。

编辑:建立一个 mlr 学习者将是理想的解决方案。对此的任何帮助也将不胜感激。

这是一个可重现的示例:

library(twang)
library(survey)
library(mlr)
set.seed(1)

data(lalonde)

tsk1 = makeClassifTask(id = "re78", data = Aids2[, c("age", "educ", "black", "hispan")], target = "re78")


merge_10CV1 = makeResampleDesc("CV", iters = 10L, stratify = TRUE)
merge10CV<-makeResampleInstance(merge_10CV1, tsk1)


ps.lalonde <- ps(treat ~ age + educ + black + hispan + nodegree + married + re74 + re75,
 data = lalonde)
lalonde$w <- get.weights(ps.lalonde, stop.method="es.mean")
design.ps <- svydesign(ids=~1, weights=~w, data=lalonde)

#how do I use 10 fold cross-validation here?
glm1 <- svyglm(re78 ~ age + educ + black + hispan, design=design.ps)

summary(glm1)

先感谢您。

4

0 回答 0