资讯详情

TyHGB复合指标在CHARLS队列中的构建与应用解析

📅 2026/10/10 6:09:49 | 华诺云谱 👁 阅读
TyHGB复合指标在CHARLS队列中的构建与应用解析
1. 为什么是TyG代谢流行病学里最像“基础设施”的指数近半个月我做的最有满足感的一件事是把 TyHGB 这个复合指标的完整计算流程和分析链路整理上线到了自己的数据平台上。过程中顺手在 CHARLS 相关文献里检索了一圈结果和标题里说的差不多这个方向目前确实还有不少可以做的空间。TyG 指数本身不算新但把它和血红蛋白放在同一个框架里再用中国中老年纵向队列去验证这样的组合还远远谈不上拥挤。这篇文章把我这些天踩过的点整理出来给准备用公共数据库做代谢流行病学或老年代谢研究的同行一个参考。先说清楚 TyG 是什么。TyG 的全称是 triglyceride-glucose index即甘油三酯-葡萄糖指数计算公式是TyG ln[空腹甘油三酯(mg/dL) × 空腹血糖(mg/dL) / 2]这个指标最早是为了解决一个很现实的问题胰岛素抵抗的金标准评估方法比较麻烦正葡萄糖钳夹技术不是普通人能用到的HOMA-IR 虽然好但必须同步测空腹胰岛素。很多大型队列在建队的时候根本没想到后来要做胰岛素抵抗研究或者测了胰岛素但不同批次之间的检测方法漂移数据根本不稳。反而是甘油三酯和空腹血糖这两个项目几乎任何一个常规体检都会做存量大、历史久、跨队列可比性好于是 TyG 就承担了“不需要胰岛素也能估胰岛素抵抗”的任务。它的内在逻辑也不难理解。胰岛素抵抗发生之后脂肪组织脂解增加血里游离脂肪酸变多肝脏合成 VLDL 的原料变多甘油三酯自然就高与此同时外周组织对葡萄糖的利用效率下降空腹血糖会往上走。所以 TG 和血糖任意一个升高都提示代谢出了问题两个放在一起信号会更集中。这也是为什么 TyG 在糖尿病、高血压、非酒精性脂肪肝、心脑血管事件、全因死亡里都有相对稳定的表现。TyG 不是一个新东西但它在公共数据库研究里几乎是最划算的暴露指标之一。你没有胰岛素的年代可以用它你没法做身体成分测量的年代也可以用这套思路去复合别的变量。后来衍生出的 TyG-BMI、TyG-WC、TyG-WHtR本质就是把 TyG 的代谢信号和肥胖的身体结构信号叠加。TyHGB 是同一个家族里的新成员只不过这次叠加的不是腰围、BMI而是血红蛋白。我在这里先提一个单位和计算上的细节。CHARLS 等国内队列发布血检数据的时候不同文件、不同批次可能用 mg/dL 也可能用 mmol/L。只要你整套数据内部统一问题就不大因为 TyG 在 log 变换下只差一个常数项对于后续秩相关和回归系数方向没有本质影响。但如果要在文章里报告原始值还是要严格按编码手册写清楚单位尤其是 TG 换算系数和葡萄糖换算系数不一样这是最容易翻车的地方。2. TyHGB把血红蛋白拉进赛道组合逻辑和指标构建为什么单独把血红蛋白拉进来我第一次听到这个组合的时候第一反应也是“这两个东西量纲都不一样怎么合”。但做代谢研究时间长了就会发现胰岛素抵抗不是一个孤立的糖脂问题它和慢性缺氧、红细胞功能、血液携氧效率都有关系。血红蛋白的核心功能是携带氧气。组织对葡萄糖的利用不是凭空发生的需要氧参与氧化代谢而胰岛素要顺利把葡萄糖送进细胞也需要正常的组织灌注和氧供。HGB 偏高红细胞比容很容易跟着升血液黏度增加末梢微循环灌注变差组织长期处于一种“糖很多但用不进去”的相对缺氧状态HGB 偏低则是另一种方向的氧供不足同样会影响胰岛素信号通路和代谢效率。所以 HGB 和代谢指标之间的真实关系很可能不是简单的一条直线而是存在某种拐点。从机制链条上想至少有这样几条通路值得在文章里写慢性缺氧会激活交感神经系统促进儿茶酚胺释放增加糖原分解和肝糖输出和胰岛素抵抗互相强化。缺氧诱导因子 HIF-1α 在低氧环境下会诱导红细胞生成同时调节糖酵解相关基因表达等于说血液系统本身就在参与糖代谢重塑。血红蛋白水平受吸烟、慢性阻塞性肺病、睡眠呼吸暂停、肾功能等多因素影响这些因素同样和心血管预后相关所以把 HGB 放进来也能部分抓住这些传统 TyG 抓不到的“非代谢”因素。有研究表明在糖尿病和代谢综合征人群里血红蛋白和糖脂代谢指标呈正相关但相关性不强这就给了复合指标“增量信息”的空间。问题在于TyHGB 还没有一个全世界公认的固定公式。我看到过的做法里有人把 TyG 和 HGB 标准化之后相加有人在 TyG 基础上乘血红蛋白有人按 TyG 和 HGB 的中位数做四分类组合。这不是一个简单的对错问题而是要看你的研究设计。我当前项目里采用的版本是先把 TyG 和 HGB 分别做 z-score 标准化然后相加作为连续型 TyHGB 分数。理由很简单标准化之后两个变量都落在同一量纲上不会出现 HGB 因为数值大就把 TyG 完全压掉的情况。与此同时我会再做一组按性别分层中位数划分的联合分类变量TyG 高/低乘以 HGB 高/低形成 4 组以“TyG低/HGB低”为参照这样既能看连续效应也能看交互作用。两个版本都跑结论要一致才敢往文章里写。如果你不是自己开发指标而是准备引用某篇已发表的 TyHGB 定义那更简单——直接按那篇文章的公式用就可以但一定要注意它用的是 g/L 还是 g/dL用的是空腹血糖还是糖化血红蛋白以及它的人群是什么年龄段。这些细节决定了你的结果和它是否可比较。如果完全没人用过这个名字那我强烈建议你在论文里写清楚“TyHGB-score v1”之类的版本号并把 z-score 构建过程完整放上去。一个新指标最怕的不是不完美而是说不清楚自己是怎么造出来的。我不建议一上来就把 TyHGB 定义成线性主效应完事。血红蛋白和代谢结局很可能是 U 型或 J 型关系所以你至少应该做一次限制性立方样条RCS看看 TyHGB 与结局之间是不是真的线性。如果样条图显示明显的拐点那就要考虑分段、阈值效应或者干脆报告非线性关系。这一步不仅是统计方法问题更是帮你判断 TyHGB 到底应该当作连续变量还是分类变量来用。3. 为什么我认定CHARLS是这块蓝海的落脚点先用大白话介绍 CHARLS中国健康与养老追踪调查英文全称 China Health and Retirement Longitudinal Study主要研究中国 45 岁及以上中老年人群的健康、养老、收入和生活方式2011 年基线开始差不多每两年追访一次。它有几个特点让做代谢流行病学的人很难绕开。第一样本量大覆盖范围广。CHARLS 的抽样设计覆盖全国多个省份包含了城市和农村社区不是单中心小样本做出来的年龄别、性别别亚组分析还像样。第二它有完整的问卷信息和实测体格指标血压、身高、体重、腰围这些都有不是全靠自报。第三它有血检数据甘油三酯、空腹血糖、糖化血红蛋白、总胆固醇、高密度脂蛋白、低密度脂蛋白、C 反应蛋白等都在里面TyG 的核心原料直接可以从生化文件里拿。第四它是纵向设计从 2011 年一路追到后面好几轮够你做时间-事件分析。为什么不用 NHANESNHANES 虽然是横断面只能做患病关联没法做新发事件预测。为什么不直接上 UK BiobankUKB 的数据质量确实好但那是英国人群人种、饮食习惯、代谢表型分布和我们差异很大Hb 的参考范围和吸烟背景也不一样。你要论证一个针对中国中老年人的代谢指标CHARLS 就是性价比最高的选择。这也是我判断“CHARLS 领域蓝海”的核心落脚点数据和指标都在手里差的只是有人去做组合。再说说检索的真实情况。我在 PubMed 和几个中文数据库里用 CHARLS、TyG、hemoglobin、Hb 这些词交叉检索了一遍至少在我检索的时间段里把“TyG血红蛋白复合指标”放到 CHARLS 队列里做的文章确实很少。更常见的是 TyG 单独做 CHARLS 的糖尿病或心脑血管文章或者 TyG-BMI 做骨质疏松和衰弱。也就是说TyG 的基础已经打得很厚但“TyG 和 HGB 联合”这一步还很少有人系统做。用行话讲这叫检索密度低选题拥挤度低。不过我得泼一盆冷水“蓝海”不等于“没人做过”更不等于“一定能写好发好”。很多人在公共数据库选题时有个误解觉得越没人做过越好。实际上完全没人做过可能说明这个数据组合本身存在硬伤比如 CHARLS 血红蛋白变量覆盖不全、随访结局定义不清、指标定义没有依据。所以检索的目的不是找“空白”而是找“有基础但没做完”的缝隙。TyHGB 正好属于这一类TyG 的生物学机制有一堆文献支撑HGB 与代谢的关系也有一堆生理学研究只是很少有人把它们放到同一个公共队列里做成一个可发表的复合指标。另外一个我比较看重的原因是 CHARLS 的结局空间足够大。你可以做新发糖尿病也可以做新发高血压、心血管事件、全因死亡、认知功能下降甚至可以往衰弱、跌倒、抑郁这些老年代谢相关的结局上延伸。同一个 TyHGB 分子式换一个结局就是一篇新文章换一个人群筛选条件又是一篇。这不是怂恿大家水文章而是说复合指标这类研究的增量本来就可以靠“新的目标结局”“新的效应修饰因素”去累积。4. 从想法到跑出结果TyHGB在CHARLS里的完整操作链路这部分我把实际跑的流程拆开讲不绕弯子。第一步不是急着写代码而是先把数据文件搞清楚。CHARLS 的数据要从官方网站注册下载血检数据通常和基线问卷数据是分开的发布模块里面还有编码手册。你要先确认你需要的变量在哪个文件里变量名是什么单位是什么。不要凭之前在别的队列里的印象猜不同年份的编码方式可能都不一样。我自己的习惯是建一个变量映射表把原始变量名、所在文件、单位、编码说明、清洗规则全部放进去这样后面做数据合并的时候能少花一半时间。下面是一个简化的示例变量类别变量内容通常来源模块需要留意的问题暴露变量甘油三酯 TG基线血检数据文件mg/dL 还是 mmol/L暴露变量空腹血糖 GLU基线血检数据文件与糖化血红蛋白不是一回事复合变量血红蛋白 HGB血常规/血检相关模块变量可能分性别参考范围单位注意 g/L 或 g/dL结局变量新发糖尿病/高血压/心血管事件随访问卷体检需要定义基线排除标准时间变量随访时间、事件发生时间随访记录/死亡数据区分随访起点和终点协变量年龄、性别、教育、吸烟、饮酒基线问卷编码多为分类变量注意参照组设置体格变量BMI、腰围、血压基线体检缺失率一般不高但也要做缺失模式分析变量目录理清楚之后TyG 和 TyHGB 的计算用 pandas 就能完成。我给一个简化版的流程示例import pandas as pd import numpy as np # 假设已读入合并后的数据框 df # 变量名先按你自己的编码表改下面只是演示逻辑 # 1. 单位换算和清洗 # 如果 TG 和 GLU 是 mmol/L先按编码手册统一转换成 mg/dL # TG_mgdl TG_mmolL * 88.57 # GLU_mgdl GLU_mmolL * 18.02 # 2. 计算 TyG df[TyG] np.log(df[TG_mgdl] * df[GLU_mgdl] / 2) # 3. 标准化两个组分 df[zTyG] (df[TyG] - df[TyG].mean()) / df[TyG].std() df[zHGB] (df[HGB_gL] - df[HGB_gL].mean()) / df[HGB_gL].std() # 4. 构建 TyHGB 连续评分 df[TyHGB_score] df[zTyG] df[zHGB]这里的标准化要特别注意如果后续要按性别分层看结果必须在分层后分别标准化或者至少报告男性和女性各自的 HGB 参考范围。因为女性血红蛋白本身低于男性如果不分性别直接标准化等于把性别差异混进了指标里最后 TyHGB 的高低可能只是性别的化身。分类版本的构建我也顺手写了# 按 TyG 中位数分高低 df[TyG_high] (df[TyG] df[TyG].median()).astype(int) # 按性别分层后的 HGB 中位数分高低 df[HGB_high] df.groupby(gender)[HGB_gL].transform( lambda x: (x x.median()).astype(int) ) # 四分类1TytG低/HGB低2TytG高/HGB低3TytG低/HGB高4两者都高 df[TyHGB_grp] df[TyG_high] * 2 df[HGB_high] 1到这里暴露变量就算构建完了。接下来是统计模型的设计。第一步先做基线特征表把人群按 TyHGB 的三分位或四分位分组比较年龄、性别、BMI、血压、吸烟、慢性病史这些变量有没有组间差异。这一步不复杂但决定了你能不能在文章里说清楚“高 TyHGB 人群到底比低 TyHGB 人群更‘不健康’”。基线表里最好同时展示连续变量和分类变量的缺失比例。第二步做关联分析。如果结局是糖尿病或者心血管事件这种含发生时间的结局首选 Cox 比例风险回归。模型从粗模型开始逐步加年龄性别、再加代谢危险因素最后加生活方式因素。典型的呈现方式是 Model 1、Model 2、Model 3。比如library(survival) cox_ph - coxph( Surv(followup_years, event) ~ TyHGB_score age gender BMI sbp dbp education smoking drinking baseline_diabetes, data dat ) summary(cox_ph)这里有几个必须检查的东西协变量之间有没有共线性HGB 和 TG 之间理论上不会高度相关但如果你把 BMI、腰围、血压全塞进去VIF 变大是很正常的比例风险假设要用 Schoenfeld 残差检验如果随访过程中有大量死亡发生而结局是糖尿病这类非致命事件还需要考虑竞争风险模型用 Fine-Gray 模型做敏感性分析不然死亡会把结局概率稀释掉。第三步是做剂量-反应关系。TyHGB 是一个连续评分直接看 HR 虽然简单但有可能掩盖非线性。用 RCS 画出来是审稿人比较喜欢看到的图。R 里 rms 包写起来很方便library(rms) dd - datadist(dat) options(datadist dd) fit_rcs - cph( Surv(followup_years, event) ~ rcs(TyHGB_score, 4) age gender BMI, data dat, x TRUE, y TRUE )第四次要把亚组分析做扎实。性别、年龄组、BMI 分层、吸烟与否这些是最常见也最有临床意义的修饰因素。尤其是性别因为 HGB 本身就存在生理性性别差异TyHGB 对男性的预测能力是不是显著强于女性这是这篇文章最值得回答的问题之一。亚组分析的 p 值要做交互检验不要只汇报“这组显著那不显著”否则审稿人会认为你是拿 P 值挑结果。最后不要忘了做敏感性分析。常见组合包括只保留基线无糖尿病人群再跑一遍、把 HbA1c 代替空腹血糖放入 TyG 计算一遍、连续变量用四分类替换一遍、缺失协变量用多重插补而不是直接剔除。一个指标要是换了几种定义就翻车那说明指标本身还不够稳。5. 容易翻车的地方我在类似分析里踩过的坑先说单位坑。CHARLS 不同批次的生化数据单位我在实际整理的时候发现并不完全可以靠文件名判断。甘油三酯有的文件直接给 mg/dL有的给 mmol/L血糖经常以 mg/dL 形式出现但也有轮次或派生变量可能是 mmol/L。如果你不加处理直接用 mmol/L 去套 TyG 的 mg/dL 公式得到的数值至少整体平移一个常数如果混用单位那整个样本的计算基础就崩了。解决办法只有一条每次下载数据后先看编码手册再随机抽几个样本核对原始值量级比如正常人空腹血糖如果显示 90 左右那基本是 mg/dL如果显示 5.2 左右那就是 mmol/L。第二个坑是血红蛋白的单位。血常规里 g/L 和 g/dL 差 10 倍很多人不注意但在做 z-score 的时候影响不大因为标准化抹掉了单位差异可一旦要做临床切点、贫血定义、或者按性别参考范围分成高低组单位错了整个分组全错。女性 HGB 低于 120 g/L 才叫贫血你如果把 12 这个 g/dL 的数当成 120 g/L 处理问题立刻出现。所以分组之前先看分布心里要有数。第三个坑是缺失和选择偏倚。CHARLS 血检数据不是每个人都在同一个时间点做的有人有血样有人只有问卷有人血样检测失败合并分析时样本量会突然掉一截。如果你直接只保留所有变量都完整的个体最后的人群可能偏向身体条件更好、依从性更高的那部分人。处理办法是先看缺失比例做多重插补如果缺失率太高就把核心结果用完整病例分析和插补后分析同时汇报。插补数据在 Cox 模型里可以用 mice 和 survival 包联合处理代码不复杂但很多初学者根本没走到这一步。第四个坑是随访时间定义。CHARLS 的访问时间点不是所有人同一天如果只按“第几轮”来算年份误差可以到半年甚至一年。对代谢指标这种长病程结局来说时间定义粗糙一点也许还能接受但如果你连这个都不写清楚审稿人问一句“你的随访时间是怎么算的”你就被动了。稳妥做法是用个体实际访问日期计算生存时间并把基线日期设定为血检采集或体检完成的日期。要注意随访起点不是问卷访问时间而是暴露变量真正测出来的那天。第五个坑是抽样设计。CHARLS 是多阶段抽样社区、家庭、个人层层嵌套如果你的模型不处理聚类标准误可能偏小。这一点在流行病学期刊里越来越被重视。最简单的处理是在 Cox 模型里加 cluster(community) 或者用稳健三明治方差估计或者用 svydesign 对基线描述统计做加权。虽然复合指标更多是做“关联”不是做“全国患病率估计”但审稿人看到你考虑了复杂抽样设计印象分会提升不少。第六个坑是反向因果。你测基线 TyHGB 的时候有些人可能已经处于糖尿病早期或心脏功能受损状态这些人的 HGB 和糖脂指标本来就异常结果随访期里发生事件看起来是 TyHGB 预测了结局实际可能是基线疾病状态造成的。处理方法是把基线已有目标疾病的人排除掉或者把随访前两年发生的事件去掉做敏感性分析。对老年人队列基线疾病史极多这一步不能省。还有一个细节容易被忽略吸烟和慢性阻塞性肺病会导致继发性血红蛋白升高吸烟本身又和心血管结局强相关。如果你不调整吸烟TyHGB 的效应会被夸大。把吸烟变量放进模型之后看效应衰减多少这个差值其实本身就很有信息量可以在讨论里写上一段。6. 要不要追这个蓝海我的判断和操作习惯最后聊点实在的。很多人看到“蓝海”两个字就想立刻冲进去但选题之前我习惯先问自己一个问题这篇论文到底是想做“因素关联”还是想做“预测模型”。这两个方向对 TyHGB 的要求完全不同。如果你做“因素关联”那 TyHGB 只要满足机制上有道理、统计上稳健、效应量有临床意义就够。文章重点放在 Cox 回归的调整模型、RCS 的非线性趋势、亚组分析和敏感性分析上结论落在“TyHGB 可能作为代谢紊乱的一个综合标志物”即可。这种文章好写数据要求也低但期刊档次通常不会特别高。如果你想做“预测模型”那就不能只给一个 HR 了。你要有内部验证、交叉验证或者 bootstrap 校准曲线要比较 TyHGB 相对 TyG 单独使用的 C-index、NRI、IDI还要做决策曲线分析说明在什么阈值下新增价值能转化为临床获益。预测模型文章的评审标准比关联研究严格得多最容易出的问题是“增量 AUC 只有 0.01临床意义在哪里”你要是没法回答这个问题就别把文章往预测模型方向写。还有一个经常被审稿人问的问题为什么不直接用 TyG-BMI非要用 TyHGB这需要你准备两套证据。一是机制证据说明 Hb 所代表的携氧状态不是 BMI 能替代的尤其在中老年人群里吸烟、慢阻肺、肾性贫血都直接影响 HGB而 BMI 对这些因素基本无感。二是统计证据在同一个模型里把 TyG、TyG-BMI、TyHGB 都放进去比较展示 TyHGB 的模型拟合和预测指标确实有改善。哪怕改善幅度不大只要能稳定地在多轮随访中复现就已经是一个有价值的发现。我的另一个操作习惯是给新指标做“家族式管理”。也就是说我把 TyG、TyG-BMI、TyG-WC、TyHGB 全部放进一个内部平台上统一计算公式、统一变量名、统一结局定义跑同一个队列、同一套模型。这样就能非常快地看出哪个复合指标在哪个结局上表现更好。TyHGB 的代码版本、计算日期、数据版本我也会在平台里记下来。这个习惯帮我省了很多次“明明之前跑过但现在复现不了”的尴尬。如果你现在准备动手我建议第一批只做两件事一是把 CHARLS 的编码手册下载下来确认你需要的那几个变量都在二是把检索词组合想好在 PubMed 里重新查一遍确认你心里那个切入点还没有被抢先发表。如果这两个条件都满足那这个所谓蓝海至少值得你花一周时间跑一轮初步结果出来看看。我实际操作下来的体会是复合指标研究最难的从来不是建模而是“命名、定义、可复现”这三个环节。TyHGB 这个名字听起来很唬人但真正让它站住脚的是一篇文章里能写清楚的分子式、能复现的代码、以及能说服人的生物学解释。把这些做扎实它才有机会从一个小众组合变成更多人愿意引用的指标。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑