R 语言 + 卒中 Meta 分析(续):机器学习 Meta 与结构方程 Meta 完整实现

R 语言 + 卒中 Meta 分析(续):机器学习 Meta 与结构方程 Meta 完整实现

在前文基础上,本文补充两类更复杂的 Meta 分析方法 ——机器学习 Meta 分析(整合卒中预测模型性能)与结构方程 Meta 分析(解析卒中风险因素因果路径),均以卒中临床研究为案例,通过 R 代码实现从数据构造到结果解读的全流程,突出方法的临床实用价值。

一、前置准备:新增方法专用 R 包加载

除保留此前核心包外,需加载机器学习 Meta 与结构方程 Meta 的专用工具:

\# 安装并加载新增包

install.packages(c("metaSEM", "caret", "pROC", "dplyr"))

library(metaSEM)    # 结构方程Meta分析核心包

library(caret)      # 机器学习模型性能评估(辅助数据构造)

library(pROC)       # 计算AUC值(机器学习Meta常用指标)

library(dplyr)      # 数据清洗(卒中多变量数据处理)

\# 保留此前包(metafor、ggplot2等,若已加载可跳过)

library(metafor)    # 机器学习Meta的效应量合并

library(ggplot2)    # 结果可视化

二、1. 机器学习 Meta 分析:卒中预后预测模型的性能整合

适用场景

当存在多个机器学习模型(如随机森林、LSTM、逻辑回归)用于同一卒中任务(如 30 天复发预测、影像病灶诊断),需整合各模型在不同研究中的性能指标(如 AUC、准确率、F1),比较模型优劣并量化异质性来源(如数据类型、样本量)。

核心逻辑

  1. 提取各研究中不同 ML 模型的性能指标(以 AUC 为例,卒中预测模型最常用);

  2. 转换性能指标为可合并的效应量(如 AUC 转换为 Fisher-Z 值,满足正态分布);

  3. 合并效应量并分析异质性(如不同数据类型:影像 vs 电子病历);

  4. 反向转换为原始 AUC,解读模型临床价值。

步骤 1:构造卒中 ML 模型性能数据集

模拟 10 项研究,包含 3 类常用 ML 模型(随机森林 RF、长短期记忆 LSTM、逻辑回归 LR)在 “卒中 30 天复发预测” 任务中的 AUC 值及 95% CI:

\# 卒中机器学习模型性能数据集(AUC指标)

stroke\_ml <- data.frame(

 study = paste("Study", 1:10),  # 研究ID

 model = rep(c("RF", "LSTM", "LR"), length.out = 10),  # ML模型类型

 auc = c(0.82, 0.85, 0.78, 0.86, 0.88, 0.76, 0.83, 0.87, 0.79, 0.84),  # 模型AUC

 auc\_lci = c(0.75, 0.78, 0.71, 0.79, 0.81, 0.69, 0.76, 0.80, 0.72, 0.77),  # AUC 95%CI下限

 auc\_uci = c(0.88, 0.91, 0.84, 0.92, 0.94, 0.82, 0.89, 0.93, 0.85, 0.90),  # AUC 95%CI上限

 data\_type = sample(c("影像数据", "电子病历"), 10, replace = TRUE)  # 异质性来源:数据类型

)

\# 查看数据集结构

head(stroke\_ml, 5)

步骤 2:AUC 值转换与效应量合并

AUC 为概率指标(0.5-1),需转换为 Fisher-Z 值(满足 Meta 分析的正态性要求),合并后再反向转换为 AUC:

\# 步骤2.1:AUC转换为Fisher-Z值(含方差计算)

\# 公式:Fisher-Z = 0.5 \* log((1+AUC)/(1-AUC));方差 = 1/((n1-3)+(n2-3))(简化为基于CI计算)

stroke\_ml <- stroke\_ml %>%

 mutate(

   \# 基于AUC的95%CI计算Fisher-Z及方差(使用pROC包的auc2z函数)

   z = auc2z(auc, auc\_lci, auc\_uci)\[, "z"],  # Fisher-Z值

   var\_z = auc2z(auc, auc\_lci, auc\_uci)\[, "var.z"]  # Fisher-Z的方差

 )

\# 步骤2.2:按模型类型分组合并效应量(随机效应模型)

meta\_ml <- rma.uni(

 yi = z,               # 效应量(Fisher-Z)

 vi = va
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值