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),比较模型优劣并量化异质性来源(如数据类型、样本量)。
核心逻辑
-
提取各研究中不同 ML 模型的性能指标(以 AUC 为例,卒中预测模型最常用);
-
转换性能指标为可合并的效应量(如 AUC 转换为 Fisher-Z 值,满足正态分布);
-
合并效应量并分析异质性(如不同数据类型:影像 vs 电子病历);
-
反向转换为原始 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

最低0.47元/天 解锁文章
3131

被折叠的 条评论
为什么被折叠?



