ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

R 语言一次算出 3 种生物年龄:BioAge 标志物算法实践笔记

R 语言一次算出 3 种生物年龄:BioAge 标志物算法实践笔记 R 语言一次算出 3 种生物年龄BioAge 标志物算法实践笔记【免费下载链接】BioAgeBiological Age Calculations Using Several Biomarker Algorithms项目地址: https://gitcode.com/gh_mirrors/bi/BioAgeBioAge 是一个从血液生物标志物计算生物年龄的 R 语言包。基于 NHANES 调查数据用一次调用算出 KDM 生物年龄、表型年龄与稳态失调三项指标内置 NHANES 数据集可直接上手。为什么“日历年龄”不够用同一个 50 岁的人有的体检指标接近年轻人有的已经出现多系统异常。在队列研究里如果只用日历年龄做分层或协变量会把这批差异抹平你真正关心的往往是“谁的老化速度快”“哪组人群生理失调节显著”而不是“几岁”。生物年龄biological age用血检与器官功能标志物回答这个问题但三个主流算法——KDM、Levine 表型年龄、稳态失调——的系数、单位和预处理各不相同文献里散着手工重实现容易在单位转换和参考人群筛选上出错。BioAge 把这三套已发表的算法连同 NHANES III1988–1994训练、NHANES IV1999–2018投影的完整流程封装成三个函数调用系数已固定省去重复建模的环节。拿到第一个计算结果安装并运行需要 R ≥ 3.5。克隆仓库git clone https://gitcode.com/gh_mirrors/bi/BioAge后本地安装install.packages(devtools) # 先执行 git clone https://gitcode.com/gh_mirrors/bi/BioAge devtools::install_local(BioAge, dependencies TRUE)然后选一个标志物子集训练 KDM 并投影library(BioAge) fit_kdm - kdm_nhanes(biomarkers c(albumin, alp, lncrp, totchol, lncreat, hba1c)) head(fit_kdm$data[, c(age, kdm, kdm_advance)])返回值是一个列表$data是逐样本结果表每行带kdm生物年龄和kdm_advance年龄加速值$fit是模型参数。核心计算逻辑可以看 R/ 目录下的kdm_calc.R、hd_calc.R、phenoage_calc.R。多个指标怎么挑三项指标回答的问题不同选型时按你要的“尺度”决定指标计算逻辑输出尺度一句选型建议KDM 生物年龄kdm/kdm_advance每个标志物对日历年龄的回归距离加权合成年龄尺度可与日历年龄直接比大小需要报告“比实际年龄老/年轻几岁”时选它表型年龄phenoage/phenoage_advance标志物预测死亡风险后折算成年龄年龄尺度直接挂接死亡风险结局关注死亡率时选它稳态失调hd/hd_log个体与年轻健康参考人群的马氏距离失衡程度无年龄单位关注生理偏离幅度、不想绑定年龄轴时选它_advance列均为“指标 − 日历年龄”正值表示老化快于实际年龄。三个指标要对同一批人比较时把各自的$data按sampleID合并library(dplyr) bm - c(albumin, alp, lncrp, totchol, lncreat, hba1c) fit_hd - hd_nhanes(biomarkers bm) fit_pa - phenoage_nhanes(biomarkers c(albumin_gL, alp, lncrp, totchol, lncreat_umol, hba1c)) res - merge(fit_hd$data, fit_kdm$data) %% merge(., fit_pa$data)看懂输出才知道结论plot_ba生成“指标 × 日历年龄”的散点矩阵每块标注 Pearson 相关系数是第一步健康检查KDM 与日历年龄的相关应接近 0.9 以上下图中 r0.964如果某块相关性异常低多半是标志物选错了或数据列名串位。plot_ba(res, agevar c(kdm, phenoage, hd), label c(KDM bioage, Phenotypic age, HD))plot_baa画各加速指标间的相关热图上三角为相关系数、下三角为散点用来判断几个指标是否高度共线若两列 r 接近 1放进同一个回归模型里会互相抵消留一个即可。统计层面table_surv(res, agevar, label)输出各指标与全因死亡的 Cox 回归风险比及 95% 置信区间按性别、种族、年龄分层HR 1 且置信区间不含 1说明该指标在控制年龄后仍独立关联死亡风险table_health则换成握力、步速等健康结局看指标能否解释“健康寿命”差异。解读顺序建议是先plot_ba检查有效性再看table_surv判断关联强度最后才比较指标之间谁更强。从内置 NHANES 换成你的数据内置数据集在 data/ 目录NHANES3、NHANES4等 rda 文件适合先跑通流程。换成自己的队列时把*_nhanes系列换成*_calc系列hd_calc(data, reference, biomarkers)需要自己指定参考人群。HD 的参考组按文献惯例取年轻健康者包内 NHANES 流程用 20–30 岁、非孕、指标在临床合理区间内的样本参考组样本量太小时协方差矩阵估计不稳。kdm_calc(data, biomarkers, fit, s_ba2)第一次调用不传fit即训练之后的批次把fit传入做投影s_ba2可手动调整生物年龄方差默认按 KDM 原文公式计算。phenoage_calc投影时必须传训练得到的fit否则重新拟合会改变系数。换数据前先把列名对齐计算函数按biomarkers参数取列另外要求数据里带sampleID、age、gender若接着用table_surv还要有race、time、status。列名对不上时函数不报错而是算出全 NA排查时先names(your_data)对照一遍。纵向队列的做法是把每个访视截面分别投影出指标值再按sampleID纵向展开对_advance列做相邻访视差分除以间隔月数得到个体层面的老化速率后续可用线性混合模型检验干预效应。踩坑清单phenoage_nhanes报找不到列→ Levine 算法用albumin_gL、lncreat_umolg/L、µmol/L 单位列KDM/HD 用albumin、lncreat两套函数别共用同一个标志物向量。hd_calc警告 reference matrix must have more than one row→ 参考人群筛选后只剩个位数多为指标被临床区间过滤掉了放宽参考组条件或减少标志物数量。合并后行数明显变少→ 各行含缺失即算 NA 属预期行为别手动删行用$fit$nobs核对有效样本量。plot_ba/table_surv报错或出空图→ 列名必须恰好叫age、gender后者还需要race、time、status重命名后再传。kdm0、phenoage0部分行为 NA→ 这两个原始算法依赖肺活量或 CRP某些 NHANES 时期没测这些项不是数据损坏跨时期分析时只用kdm、phenoage等修改版列。换了标志物组合后数值和别人的结果对不上→ 系数是针对具体标志物集合训练的换集合后量级不可比只在自己内部做纵向比较。BioAge 的价值在于把三个算法的系数、参考人群筛选和投影流程固化成可复现的调用让你的分析精力留在标志物选择和结果解读上。下一步建议拿一个自己的截面数据用hd_calc指定自有参考人群跑一遍hd并与 NHANES 内置流程的输出做一遍列名和量级对照。【免费下载链接】BioAgeBiological Age Calculations Using Several Biomarker Algorithms项目地址: https://gitcode.com/gh_mirrors/bi/BioAge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表