R语言进行复杂抽样设计(Survey-Weighted)logistic回归列线图-Cindex-ROC-校准曲线绘制-外部验证

列线图,又称诺莫图(Nomogram),它是建立在回归分析的基础上,使用多个临床指标或者生物属性,然后采用带有分数高低的线段,从而达到设置的目的:基于多个变量的值预测一定的临床结局或者某类事件发生的概率。列线图(Nomogram)可以用于多指标联合诊断或预测疾病发病或进展。
近些年来在高质量SCI临床论文中用的越来越多。列线图将回归模型转换成了可以直观的视图,让结果更容易判断,具有可读性,例如:
在这里插入图片描述
对于复杂设计调查(Survey-Weighted)的数据,我们不能使用RMS包直接绘制预测模型列线图,这样会造成数据偏差,既往我们已经介绍了SvyNom包绘制复杂设计调查(Survey-Weighted)的数据cox回归的列线图,今天我们来介绍绘制复杂设计调查(Survey-Weighted)的数据logistic回归列线图-Cindex-ROC-校准曲线绘制-外部验证,继续使用我们的转移性胃癌数据,我们先导入数据和R包

library("rms")
library("survey")
bc<-read.csv("E:/r/test/noNA.csv",sep=',',header=TRUE)

在这里插入图片描述
上图只显示了一部分,这是一个转移性胃癌患者(Power、Capanu、Kelsen 和 Shah 2011)的数据(公众号回复:胃癌数据,可以获得数据),数据很多我们选取一部分建模,age_dx:年龄,group:分组变量,分为存活率小于2年的和大于两年的,inv_weight:概率权重,ssize:每个分组患者的人数,survival生存时间,surv_cens生存结局
先要注意一下,这是个生存数据,我们把它当成二分类数据来分析,做个演示而已。
因为我们要进行外部验证,所以要分成建模集和验证集

tr1<- sample(nrow(bc),0.8*nrow(bc))##随机无放抽取
bc_train <- bc[tr1,]#70%数据集
bc_test<- bc[-tr1,]#30%数据集

要建立调查加权,我们先要生成一个调查表,我们这里是根据患者是否能活超过24个月进行分层,

本文为转载文章,原文地址为: https://mp.weixin.qq.com/s?__biz=MzI1NjM3NTE1NQ==&mid=2247487455&idx=1&sn=a690bb9a24d89ed17ca614416ee73dc9&chksm=ea26efc3dd5166d5ae060ba90dad8b2bb4aff9a5d6ade4f33c91717c6777b7e4d79ac3a8ac83#rd

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于多分类logistic回归结果,我们可以使用sklearn库中的相关函数来计算这些参数。具体步骤如下: 1. 导入必要的库和数据 ```python from sklearn.linear_model import LogisticRegression from sklearn.model_selection import cross_val_score, cross_val_predict from sklearn.metrics import accuracy_score, roc_auc_score, recall_score, precision_score, f1_score from sklearn.datasets import load_iris # 加载数据 iris = load_iris() X = iris.data y = iris.target ``` 2. 创建模型并进行十折交叉验证 ```python # 创建模型 clf = LogisticRegression(multi_class='auto', solver='lbfgs', max_iter=5000) # 进行十折交叉验证 scores = cross_val_score(clf, X, y, cv=10) y_pred = cross_val_predict(clf, X, y, cv=10) ``` 3. 计算各个参数 ```python # 计算accuracy accuracy = accuracy_score(y, y_pred) # 计算auc auc = roc_auc_score(y, y_pred, multi_class='ovo', average='weighted') # 计算recall recall = recall_score(y, y_pred, average='weighted') # 计算precision precision = precision_score(y, y_pred, average='weighted') # 计算F1-score f1 = f1_score(y, y_pred, average='weighted') ``` 其中,multi_class参数指定了多分类问题的处理方式,solver参数指定了优化器的选择,max_iter参数指定了最大迭代次数。cross_val_score函数可以得到十折交叉验证的得分,cross_val_predict函数可以得到每个样本的预测结果。通过调用相关函数,即可计算出accuracy、auc、recall、precision以及F1-score等参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值