news 2026/2/14 7:53:36

Logistic回归全流程代码,包含:导入数据 数据划分 基线表生成 LASSO回归 批量单因...

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Logistic回归全流程代码,包含:导入数据 数据划分 基线表生成 LASSO回归 批量单因...

Logistic回归全流程代码,包含:导入数据 数据划分 基线表生成 LASSO回归 批量单因素logistic 多因素logistic 列线图 ROC 校准曲线 DCA

本文档详细介绍一套基于R语言的Logistic回归全流程分析代码,该代码覆盖从数据导入到变量筛选的核心环节,适用于医学、社会学等领域的二分类结局变量研究,可帮助研究者高效完成数据预处理、基线特征分析与变量初筛,为后续多因素回归建模、模型验证奠定基础。

一、核心功能概览

该代码以“数据处理-特征分析-变量筛选”为核心逻辑,整合7个关键模块,其中“导入数据-数据划分-基线表生成-LASSO回归-批量单因素Logistic回归”为核心分析链,各模块功能独立且衔接紧密,支持研究者根据需求灵活调整参数,输出标准化结果与可视化图表。

二、分模块功能详解

(一)模块1:导入数据与格式转换

1. 核心目标

实现外部数据读取与数据类型标准化,解决分类变量在建模中无法识别的问题,同时检测数据质量(缺失值)。

2. 关键操作
  • 工作目录设置:通过setwd(path)指定数据存储路径(需用户替换为实际路径,如"D:/Data/"),确保R语言能准确定位文件。
  • 数据读取:使用read.csv("csv文件.csv")读取CSV格式数据,用户需将"csv文件.csv"替换为实际数据文件名(如"cancer_data.csv")。
  • 变量类型转换:借助dplyr包的transmute()函数,将分类变量(如性别Sex、年龄Age、肿瘤分期T/N/M等)转换为factor类型,并指定因子水平顺序(如Age的水平为c('65-80','>80')),数值变量保持原始类型;同时将结局变量y放在第1列,减少后续代码改动。
  • 缺失值检测:通过VIM包的aggr()函数,以可视化图表(红色标注缺失值)展示各变量的缺失比例(prop=T显示占比,numbers=T显示具体数量),帮助研究者判断是否需要进行缺失值填补(如多重插补、删除等)。
3. 注意事项

此模块是后续分析的基础,分类变量的因子水平设置需与实际业务逻辑一致(如肿瘤分级Grade的水平为c('I','II','III','IV')),若数据中存在其他分类变量(如Smoking),需手动添加到transmute()函数中。

(二)模块2:数据划分

1. 核心目标

将数据集按比例划分为训练集(用于建模)与测试集(用于后续模型验证),确保两组数据分布均衡,避免模型过拟合。

2. 关键操作
  • 随机数种子设置:通过set.seed(1)固定随机数生成规则,保证数据划分结果可重复(若需更换划分结果,可修改种子值,如set.seed(123))。
  • 按结局变量分层划分:使用caret包的createDataPartition()函数,按结局变量y的分布比例(分层抽样)划分数据,默认比例为7:3(p=0.7,70%为训练集,30%为测试集)。
  • 训练集/测试集提取:通过索引num$Resample1提取训练集(train = dt[num$Resample1,]),通过负索引-num$Resample1提取测试集(test= dt[-num$Resample1,])。
3. 核心价值

分层抽样可避免因结局变量分布不均导致的训练集/测试集偏差(如病例组与对照组比例失衡),为后续基线表均衡性检验提供基础。

(三)模块3:基线表生成

1. 核心目标

生成训练集与测试集的基线特征表,检验两组数据的临床/人口学特征是否均衡(P>0.05表示均衡),确保数据划分合理。

2. 关键操作
  • 数据集合并:为训练集(train$g = 't')与测试集(test$g = 'v')添加分组标记g,通过rbind()函数合并为dg数据集,便于分层汇总。
  • 基线表参数设置
  • 借助tableone包的CreateTableOne()函数,指定需汇总的变量(myVars,如SexAgeSurgery等)、分层变量(strata = "g",按训练集/测试集分层)、分类变量(factorVars = catVars,与myVars一致,确保分类变量按频数/百分比展示);
  • 启用addOverall = TRUE,在基线表中添加“总人群”列,便于整体特征查看。
  • 结果输出与导出
  • 通过print()函数调整输出格式(如catDigits=2设置分类变量百分比保留2位小数,pDigits=3设置P值保留3位小数);
  • 使用write.csv()将基线表结果导出为CSV文件("Table1-基线表.csv"),研究者可直接用于论文表格制作。
3. 核心判断标准

基线表中所有变量的组间比较P>0.05,说明训练集与测试集特征均衡,数据划分合理;若存在P<0.05的变量,需重新检查数据划分逻辑(如调整抽样比例、增加样本量)或在后续建模中纳入该变量作为协变量。

(四)模块4:变量筛选(LASSO回归+批量单因素Logistic回归)

此模块提供两种变量筛选方法(二选一即可),目的是从众多自变量中筛选出与结局变量相关的核心变量,减少多因素回归模型的冗余变量,提升模型稳定性。

方法1:LASSO回归(基于正则化的变量筛选)
1. 核心原理

LASSO(最小绝对收缩与选择算子)通过在损失函数中加入L1正则化项,对变量系数进行压缩,使部分变量系数变为0,从而实现变量选择,适用于自变量较多(如超过20个)或存在多重共线性的场景。

2. 关键操作
  • 数据格式转换:使用model.matrix()函数将训练集中的分类自变量转换为哑变量(自动处理因子变量,避免手动构建哑变量的繁琐),并删除截距列([,-1]);通过data.matrix()将哑变量矩阵与结局变量y转换为glmnet包要求的矩阵格式。
  • LASSO模型拟合:调用glmnet包的glmnet()函数,设置family = "binomial"(二分类Logistic回归)、alpha = 1(LASSO回归,alpha=0为岭回归),拟合模型并通过plot(fit, xvar="lambda")绘制“系数-λ值”曲线(λ为正则化参数,λ越小系数越复杂,λ越大系数越简洁)。
  • 交叉验证选择最优λ:使用cv.glmnet()函数进行10折交叉验证(nfolds=10),通过plot(cv.fit)绘制交叉验证曲线,曲线最低点对应“最小λ值(lambda.min)”(模型误差最小),最低点1个标准误差范围内的λ值(lambda.1se)对应“最简洁模型”。
  • 筛选变量提取:通过coef(cv.fit, s="lambda.min")查看最优λ值下的变量系数,系数非0的变量即为筛选出的核心变量;使用row.names(Coefficients)[Index]Index为系数非0的索引)提取变量名,可直接用于后续多因素回归。
方法2:批量单因素Logistic回归(基于统计显著性的变量筛选)
1. 核心原理

通过对每个自变量单独构建Logistic回归模型,计算其与结局变量的关联强度(OR值、95%CI)及统计显著性(P值),筛选出P<0.05(或其他阈值)的变量,适用于自变量较少、需明确单变量关联的场景。

2. 关键操作
  • 自定义批量回归函数:编写Uni_log()函数,实现单因素回归的自动化:
  • 动态构建回归公式(formu<-as.formula(paste0 ("y~",x))x为单个自变量);
  • 调用glm()函数拟合单因素Logistic回归(family=binomial(link ="logit"));
  • 提取关键结果:OR值(exp(coef(log1)))、95%CI(exp(CF±1.96*SE))、P值(log2$coefficients[,4]),并整理为数据框格式。
  • 批量执行与结果汇总
  • 提取训练集中的自变量名称(var.names<-colnames(train)[c(2:length(train))],排除第1列的结局变量y);
  • 使用lapply()函数批量执行Uni_log(),并通过plyr包的ldply()函数将列表结果转换为数据框(results);
  • 导出结果:通过write.csv()将单因素结果导出为CSV文件("Table2-单因素.csv"),包含变量名称、水平、OR值、95%CI、P值。
  • 筛选变量提取:通过paste0(unique(results$Characteristics[ results$p<0.05]), collapse ="+")提取P<0.05的变量,构建多因素回归公式(mult_form),直接用于后续多因素建模。
3. 两种方法的选择建议
  • 若自变量较多(如>15个)或存在多重共线性(如T分期肿瘤大小),优先选择LASSO回归,可有效压缩冗余变量;
  • 若自变量较少(如<10个)或需展示单变量与结局的关联(如论文Table2),优先选择批量单因素回归,结果更易解释。

三、代码使用流程与注意事项

1. 使用流程

  1. 安装依赖包:运行代码前需先安装所有用到的包,执行以下代码:
install.packages(c("dplyr", "VIM", "caret", "tableone", "glmnet", "plyr", "rms", "pROC", "ggDCA", "ggprism", "ggplot2"))
  1. 模块1:替换数据路径与文件名,调整分类变量列表,检测缺失值;
  2. 模块2:确认数据划分比例(默认7:3),执行分层抽样;
  3. 模块3:生成基线表,检验训练集/测试集均衡性(P>0.05为合格);
  4. 模块4:选择LASSO回归或批量单因素回归,筛选核心变量;
  5. 后续步骤:基于筛选的变量进行多因素Logistic回归、列线图绘制、ROC/校准/DCA曲线验证(代码中已包含,可继续执行)。

2. 注意事项

  • 结局变量y:需确保y为二分类变量(如0=无事件,1=有事件),且在模块1中放在第1列;
  • 变量名与水平:分类变量的因子水平需与数据实际情况一致(如Race的水平若包含"Asian",需修改为c('White','Black','Asian','Other'));
  • 结果导出:所有表格(基线表、单因素结果)均导出为CSV格式,可直接用Excel打开编辑,图表(如ROC曲线、列线图)需取消代码中的注释(删除#tiff(...)#dev.off()前的#),指定保存路径后生成高清图片(分辨率600dpi)。

四、代码应用场景

该代码适用于二分类结局的预测模型研究,典型场景包括:

  • 医学研究:如肿瘤预后模型(结局为“3年生存率”,自变量为年龄、分期、治疗方式等)、疾病诊断模型(结局为“患病/未患病”,自变量为症状、实验室指标等);
  • 社会学研究:如贫困风险预测(结局为“贫困/非贫困”,自变量为收入、教育水平、家庭结构等);
  • 商业分析:如客户流失预测(结局为“流失/未流失”,自变量为消费频率、会员等级、投诉记录等)。

通过该代码,研究者可快速完成从数据预处理到变量筛选的全流程,为后续模型构建与验证提供标准化、可重复的分析框架,大幅提升研究效率。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/13 0:48:47

互联网医院系统|禾高互联网医院|互联网医院成品

随着医疗健康服务的数字化进程加速&#xff0c;互联网医院系统已演变为重构医疗资源配置、优化诊疗流程、重塑患者体验的战略性基础设施。其本质并非线下医疗的简单线上化&#xff0c;而是以患者为中心、以数据为驱动、以安全和合规为基石的新型医疗服务模式的综合载体。1、患者…

作者头像 李华
网站建设 2026/2/12 19:03:02

【计算机毕业设计案例】基于spring boot的高校宿舍管理系统设计基于spring boot + vue 的宿舍管理系统(程序+文档+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/2/11 15:30:29

ClickHouse 监控与告警:确保大数据系统稳定运行

ClickHouse 监控与告警&#xff1a;确保大数据系统稳定运行 关键词&#xff1a;ClickHouse、监控指标、告警策略、大数据系统、稳定性、监控工具、性能优化 摘要&#xff1a;在大数据时代&#xff0c;ClickHouse作为高性能列式数据库&#xff0c;承担着海量数据实时分析的核心任…

作者头像 李华
网站建设 2026/1/27 3:12:47

java计算机毕业设计小微企业项目管理系统的设计与实现 轻量级Java毕业设计:中小微企业全周期项目管控平台 基于SpringBoot的微型企业项目全生命周期数字管理系统

计算机毕业设计小微企业项目管理系统的设计与实现t7okm9&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。在数字化转型浪潮下&#xff0c;小微企业普遍面临“人少事多、流程混乱、…

作者头像 李华
网站建设 2026/2/6 20:39:26

2026 3D打印机买家指南:TCT亚洲 3D打印展首批百款展品曝光,涵盖工业级金属3D 打印到桌面级3D打印机!持续更新中~

进入 2026 年&#xff0c;3D打印行业更新节奏发生了质变 。相比往年的技术激进&#xff0c;新一轮设备更强调实际使用场景与稳定输出能力 。即将于3月17-19日在上海国家会展中心举办的2026年TCT 亚洲展现已提前公布了近百款重磅新品&#xff08;持续更新中&#xff09;&#xf…

作者头像 李华
网站建设 2026/2/4 5:45:17

自动驾驶VLA新SOTA:复旦联合团队提出WAM-Diff重塑端到端自动驾驶

复旦大学与引望智能科技联合提出自动驾驶WAM-Diff框架。WAM-Diff的全新端到端自动驾驶框架&#xff0c;在NAVSIM-v1榜单上取得了91.0 PDMS&#xff08;预测驾驶得分&#xff09;的惊人成绩&#xff0c;一举超越了现有的自回归和扩散基线模型。它通过掩码扩散模型&#xff08;Ma…

作者头像 李华