我有一个函数可以返回 cv.glmnet 模型的 auc 值,虽然不是大多数时候,但它经常在执行 cv.glmnet 函数时返回以下错误:
drop(y % % rep(1, nc)) 中的错误:在为函数 'drop' 选择方法时评估参数 'x' 时出错:y % % rep(1, nc) 中的错误:参数不一致
我已经阅读了一些关于该错误的信息,我能找到的唯一建议是使用 data.matrix() 而不是 as.matrix()。我的函数如下(其中“form”是带有我想要的变量的公式,“dt”是数据框):
auc_cvnet <- function(form, dt, standard = F){
vars = all.vars(form)
depM = dt[[vars[1]]]
indM = data.matrix(dt[vars[-1]])
model = cv.glmnet(indM, depM, family = "binomial", nfolds=3, type.measure="auc", standardize = standard)
pred = predict(model, indM, type = "response")
tmp = prediction(pred, depM)
auc.tmp = performance(tmp, "auc")
return(as.numeric(auc.tmp@y.values))
}
我在另一个函数中实现了这个函数,该函数迭代了几个变量的组合,以查看哪些变量组合运行良好(这是一种非常强力的方法)。无论如何,当错误被抛出时,我打印出迭代的公式,并只用那个公式调用函数,它工作得很好。所以不幸的是,我无法确定哪些调用会引发错误,否则我会尝试提供更多信息。数据框大约有 30 行,当我在具有 110 行的较大数据集上运行代码时没有错误。两个数据集中也没有 NA。
有没有人见过这个或有任何想法?谢谢!