r - 留一交叉验证 GLM 模型
问题描述
我试图通过首先将我的数据拟合到 glm 模型,然后使用预测来进行遗漏交叉验证。显然我没有正确设置交叉验证,因为我收到错误。有谁知道这应该怎么写正确?
data <- structure(list(hsa_miR_1306_5p = c(5.66281697186733, 6.58664110311681,
8.24680160610849, 7.59469600671128, 5.11353374464181, 5.21216070738553
), hsa_miR_576_5p = c(3.01744918102835, 4.94428256624179, 6.47085031132479,
6.341071987735, 5.11353374464181, 4.94239499718096), V3 = c(3,
5, 3, 3, 5, 5), V4 = c(29.9, 27.1, 32.7, 24.9, 30.2, 29.9), V5 = c(1957,
1948, 1951, 1954, 1946, 1952), V6 = c(1, 1, 1, 0, 1, 0)), row.names = c("1004773522",
"1108651363", "1170306251", "1170306252", "1170306253", "1170306258"
), class = "data.frame")
LOOCV 型号:
loocv <- sapply(1:nrow(data), function(x) {
loo.data <- data[-x,]
model <- glm(as.factor(V3) ~ hsa_miR_1306_5p + hsa_miR_576_5p + V4 + V5 + V6, family=binomial(logit),data=loo.data)
predict(model,newdata=data[x,], type = "lp")
})
阴谋:
roc.data <-roc(model$y , model$fitted.values,ci=T,predictor = loocv)
plot.roc(roc.data)
错误:
Error in match.arg(type) :
'arg' should be one of “link”, “response”, “terms”
解决方案
您需要小心使用的软件包。请在进行分析之前加载这两个包:
library(pROC)
library(rms)
基本 R预测(或 predict.glm)函数有一个类型参数,但只有选项
type = c("link", "response", "terms")
您可以通过指定获得线性预测变量
predict(..., type = "link")
您使用的语法来自 rms::predictrms() 函数。
推荐阅读
- url - 离线 PWA 中的 https://example.com/page.html?param=val 等 URL
- ios - RxSwift - 递归 Observables?
- windows - 为什么这会引发“读取访问冲突”?
- typescript - 打字稿:如何将对象强制转换或分配给属性较少的类型?(从大到小)
- amazon-web-services - 如果 Terraform 中没有特定子网,如何选择默认子网?
- ios - 用于匹配字符串中数字的小数部分并修改它的 Swift 正则表达式
- python - 使用特定维度作为键对排序列表进行排序
- ios - 当我通过我的应用程序打开 App Store 时,在 App Store 中显示打开的应用程序而不是更新应用程序
- c# - 仅当目标路径为空时,使用 pdfsharp 合并和保存 PDF 才有效
- python - 为什么 filechooser.selection 会添加一个额外的航点?