没有合适的资源?快使用搜索试试~ 我知道了~
风险预测模型评价之NRI的R语言计算.docx
需积分: 26 5 下载量 129 浏览量
2023-01-29
10:17:16
上传
评论
收藏 118KB DOCX 举报
温馨提示
试读
11页
风险预测模型评价之NRI的R语言计算.docx
资源推荐
资源详情
资源评论
风险预测模型评价之 NRI 的 R 语言计算
R 语言代码的盛(暴)宴(击),除了 NRI 的运算,还
有蛮多预处理的操作,在哪都能用得着。大家做好战斗准备。
R 里有 2 个包专事计算 NRI,分别为 nricens 和
PredictABEL。从最后结果来说,nricens 计算出来的是绝对
NRI,PredictABEL 则为相对 NRI。但我们已经知道计算原
理了呀,而且它们都能生成新旧模型分类的对照表,所以其
实只用其中一个包就都可以计算了。
不过它们还是有一些小小差异,我们就以 logistic 回归
模型为例,分别看一下这两个包,供大家参考选择。Cox 模
型参数较多也较复杂,但我相信你看完这篇的讲解就能看懂
帮助文档中的 cox 案例,算是留个小作业给你吧~
拟合模型
先用一份示例数据做个模型。这是 survival 包里带有的
一份梅奥诊所的数据,记录了 418 位患者的临床指标,观察
这些因素与原发性胆汁性肝硬化(PBC)的关系。其中前
312 位参加了 RCT,其他的只参加了观察队列。
我们用前 312 份样本,做个预测 2000 天时间点上死亡
与否的模型。先载入这份数据看一下。
library(survival)
### logistic 回归
egData <- pbc[1:312,]
做一个 logistic 回归,我们需要一个结局事件作为因变
量,它必需是个分类变量;其次需要若干自变量,它们可以
是分类也可以是连续。
这个表中的结局是 status,0 = 截尾(删失),1 = 接
受移植,2 = 死亡。研究目的“死亡与否”是个二分类变量,
所以要做些变换。
再看 time 一栏,有的不够 2000 天,这些样本要么是没
到 2000 天就死亡了,要么是删失了。我们要删掉 2000 天
内删失的数据。
egData = egData[egData$time > 2000 |
(egData$time < 2000 & egData$status ==
2),]“[ ]” 表示筛选条件,| 表示“或”,& 为“和”。所
以条件句就是 egData 中的 time 一列大于 2000 的保留,或
小于 2000 但同时状态为死亡的也保留。最后一个“,”别忘
了,其在条件句的前面表示对列进行选择,在其后表示选择
行。
选好后做一个 event 向量,把 status 的三个状态变成死
亡 = 1, 未死亡 = 0。
event = ifelse(egData$time < 2000 &
egData$status == 2, 1, 0)
ifelse (test, yes, no)大法好啊,前面一个 test 是逻辑
判断句,其值为真时返回 yes 的值,为假时返回 no 的值。
所以本句中 test 就是当 time<2000,且 status 为 2(死亡)
时,记为 1,否则为 0。
然后把 event 合并入原来的表格。
egData = cbind(egData,event)
cbind()是以列合并,另有 rbind()以行合并。这样
event 就成了最后一列,为结局事件。
然后选择模型的自变量(predictors)。太多了,选取
其中几个示例。就以年龄、胆红素、白蛋白为旧模型
(standard),三者加上一个凝血酶原时间为新模型
(new)。
一般做 logistic 回归是用 glm(因变量 ~ 自变量 1 + 自
变量 2 + …… +自变量 n, family = binomial('logit'), data
= 数据表),但如果自变量较多的话,前面那个运算式就会很
长很长,万一这些自变量还是基因名或编号,就很想死了。
所以顺便讲一个简化的办法,即把那一串先写成 formula。
fml.std <- as.formula(paste('event~',
paste(colnames(egData)[c(5,11,13)],
collapse = '+')))
这里有好几层函数,paste() 会把括号中的元素粘贴起
来,collapse 是其中的间隔。colnames() 是获取表格的列
名,[]中的数值向量为所选择的列序号。这样如果是一个超
大表格,你选中第 10~70 列还可以写成“10:70”。
好了,同样写出新模型的 formula:
fml.new <- as.formula(paste('event~',
paste(colnames(egData)[c(5,11,13,1
9)],
collapse = '+')))
剩余10页未读,继续阅读
资源评论
海澜明月
- 粉丝: 23
- 资源: 3148
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 人工智能实验四 感知器算法的设计实现
- java小项目多线程多线程 复制文件 冒泡排序 群聊
- 四数之和(java代码).docx
- 701837906919458TapScanner v3.0.10 (Pro).apk
- 青岛大学人工智能实验二 利用α-β搜索的博弈树算法编写一字棋游戏
- ### 1、项目介绍 本项目Scrapy进行数据爬取,并使用Django框架+PyEcharts实现可视化大屏 效果如下:
- # 微信小程序-健康菜谱 基于微信小程序的一个查找检索菜谱的应用 ### 效果 !动态图(./res/gif/demo
- zabbix-get命令包资源
- 289ssm-mysql-jsp 计算机课程实验管理系统.zip(可运行源码+数据库文件+文档)
- 毕业设计,基于PyQt5实现的可视化界面的Python车牌自动识别系统源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功