Files
DeepHealth/burden_index_method_zh.tex

492 lines
17 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
\documentclass[11pt]{ctexart}
\usepackage[margin=1in]{geometry}
\usepackage{amsmath, amssymb, amsfonts}
\usepackage{bm}
\usepackage{booktabs}
\usepackage{enumitem}
\usepackage{hyperref}
\title{DeepHealth 负担指数:动态器官负担与功能负担}
\author{}
\date{}
\begin{document}
\maketitle
\begin{abstract}
DeepHealth 在查询时刻 \(t\) 输出隐含状态 \(h(t)\),并基于该隐含状态给出疾病级未来风险函数
\(p_d(h,\Delta)\)。疾病级输出足够细,但很难直接解释为个体层面的健康状态。因此,我们定义负担指数
Burden Indices, BI将历史已经形成的疾病负担和未来预期新增疾病负担聚合为更高层、可解释的表征。
器官负担指数Organ Burden Index, OBI将疾病映射到解剖系统功能负担指数
Functional Burden Index, FBI将疾病映射到功能受损和衰弱相关的诊断负担维度并在条件允许时使用
CIHI-HFRM 风格的诊断代码权重作为锚点。对于已形成负担,我们区分基于真实历史诊断的观测锚定版本,
以及基于 DeepHealth 历史风险轨迹的模型加权版本。当前阶段这些指标应被称为负担指数,而不是健康储备或健康状态评分,
因为当前模型主要由疾病事件监督,而不是由 ADL/IADL、步速、握力、认知测验或恢复能力等真实功能结局监督。
\end{abstract}
\section{动机}
在查询时刻 \(t\)DeepHealth 输出隐含状态 \(h(t)\),并给出疾病级风险预测
\[
p_d(h(t), \tau), \qquad d = 1,\ldots,D,
\]
其中 \(p_d(h(t),\tau)\) 表示疾病 \(d\) 在未来时间窗 \(\tau\) 内发生的预测概率。疾病级风险适合做单病种预测,
但不能直接回答个体层面的状态问题,例如疾病负担集中在哪些系统、当前已经形成了多少疾病负担、未来还可能新增多少负担,
以及疾病风险可能带来多少功能脆弱性。
因此,我们引入负担指数,将疾病级预测压缩为系统级负担表征:
\[
\text{疾病级风险}
\quad \longrightarrow \quad
\text{系统级负担}.
\]
负担指数由两部分组成:
\begin{enumerate}[leftmargin=*]
\item 已形成负担:截至查询时刻 \(t\) 已经累积形成的疾病负担;
\item 未来预期负担:未来时间窗 \(\tau\) 内预期新增形成的疾病负担。
\end{enumerate}
当前阶段,这些量应称为负担指数,而不是健康储备或完整健康状态。原因是当前模型主要基于 ICD 疾病事件训练和验证,
其直接可验证语义是疾病发生和疾病风险,而不是真实功能表现或生理储备。没有直接功能标签或健康参考系校准时,
\(100-\text{负担}\) 不能被严谨解释为剩余健康储备。
\section{两类负担空间}
我们定义两类互补的负担空间。
\subsection{器官负担指数}
器官负担指数OBI将疾病负担映射到解剖系统回答
\[
\text{病理负担主要集中在哪些器官或系统?}
\]
典型维度可以包括心脏/血管、脑/神经、肾脏、肺、肝脏/消化、代谢/内分泌、肌骨、血液以及肿瘤相关系统。
其映射矩阵记为
\[
A^{\mathrm{organ}} \in \mathbb{R}_{\ge 0}^{K_o \times D},
\]
其中 \(A^{\mathrm{organ}}_{k,d}\) 表示疾病 \(d\) 对器官维度 \(k\) 的贡献权重。
\subsection{功能负担指数}
功能负担指数FBI将疾病负担映射到功能受损和衰弱相关的诊断负担维度回答
\[
\text{这些疾病负担提示了多少功能脆弱性?}
\]
候选维度包括行动负担、认知负担、情绪负担、感官负担、营养负担、感染或免疫脆弱性负担、功能依赖负担和共病负担。
如果可以获得 CIHI-HFRM 或其他经过验证的住院衰弱风险诊断代码表,应优先将其作为 FBI 的锚点。
其映射矩阵记为
\[
A^{\mathrm{func}} \in \mathbb{R}_{\ge 0}^{K_f \times D},
\]
其中 \(A^{\mathrm{func}}_{k,d}\) 表示疾病 \(d\) 对功能负担维度 \(k\) 的贡献权重。
OBI 与 FBI 不是重复指标。OBI 描述病理负担的位置FBI 描述疾病负担可能带来的功能脆弱性。例如,卒中在 OBI 中主要贡献脑/血管负担,
但在 FBI 中可能同时贡献行动、认知、感官和功能依赖负担。
\section{模型输出与疾病风险函数}
对任意隐含状态 \(h\)DeepHealth 定义疾病级未来风险函数
\[
p_d(h,\Delta),
\]
其中 \(\Delta \ge 0\) 是时间窗长度。该风险函数由 all-future 模型给出。记
\[
\eta_d(h) = \operatorname{risk\_head}(h)_d,
\qquad
\lambda_d(h) = \operatorname{softplus}(\eta_d(h)).
\]
对于 exponential all-future 模型,
\[
p_d(h,\Delta)
=
1-\exp[-\lambda_d(h)\Delta].
\]
对于 Weibull all-future 模型,另有
\[
\rho_d(h)=\operatorname{softplus}(\operatorname{rho\_head}(h)_d),
\]
其风险函数为
\[
p_d(h,\Delta)
=
1-\exp[-\lambda_d(h)\Delta^{\rho_d(h)}].
\]
下面的负担定义只要求能够访问 \(p_d(h,\Delta)\)。exponential 和 Weibull 是该定义的两个具体实现。
\section{已形成负担}
对一个在时刻 \(t\) 查询的个体,设其历史 readout 时间点为
\[
t_0 < t_1 < \cdots < t_n \le t.
\]
为方便记号,定义
\[
t_{n+1}=t.
\]
于是历史轨迹被划分为相邻且不重叠的区间
\[
[t_i,t_{i+1}], \qquad i=0,\ldots,n.
\]
\[
h_i = h(t_i), \qquad \Delta_i = t_{i+1}-t_i.
\]
疾病 \(d\) 在第 \(i\) 个历史区间内的模型推断概率为
\[
q_{d,i}(t) = p_d(h_i,\Delta_i).
\]
\subsection{模型加权已形成负担}
模型加权已形成负担使用 DeepHealth 自身的历史风险轨迹,刻画疾病 \(d\) 在查询时刻 \(t\) 之前已经形成的负担强度。
它通过 noisy-or 沿历史区间累积定义:
\[
z^{\mathrm{model}}_d(t)
=
1-\prod_{i=0}^{n}\left[1-q_{d,i}(t)\right].
\]
等价地,
\[
z^{\mathrm{model}}_d(t)
=
1-\prod_{i=0}^{n}
\left[
1-p_d\!\left(h(t_i),t_{i+1}-t_i\right)
\right],
\qquad t_{n+1}=t.
\]
该定义只使用每一段历史区间一次,因此避免了从多个历史节点重复预测到同一个查询时刻所造成的重叠计数。
\subsection{观测锚定已形成负担}
观测锚定已形成负担将历史诊断视为事实证据。定义疾病 \(d\) 的历史观测指示变量:
\[
o_d(t)
=
\mathbb{I}\left\{
\exists j:\; \mathrm{event}_j=d,\; \mathrm{time}_j\le t
\right\}.
\]
观测锚定版本定义为
\[
z^{\mathrm{obs}}_d(t)=o_d(t).
\]
该版本最接近 HFRM 等基于诊断代码的负担度量:一旦疾病代码在查询时刻 \(t\) 前出现,对应的疾病负担项即被视为存在。
它最可审计,也最贴近代码负担定义,但不能区分同一历史诊断在严重程度、发生时间远近和当前残留影响上的差异。
\subsection{已形成负担版本选择}
两个定义对应不同语义:
\[
z^{\mathrm{obs}}_d(t)
=
\text{观测诊断负担},
\]
\[
z^{\mathrm{model}}_d(t)
=
\text{模型加权状态负担}.
\]
当目标是复现或扩展诊断代码负担指标时,应使用观测锚定版本。当目标是让 DeepHealth 根据历史隐含状态轨迹给出连续负担强度时,
应使用模型加权版本。在后续公式中,\(z_d(t)\) 表示根据所选 BI 版本采用的
\(z^{\mathrm{obs}}_d(t)\)\(z^{\mathrm{model}}_d(t)\)
\subsection{观测锚定与模型加权负担的异同}
观测锚定和模型加权两个定义具有相同目标:二者都试图刻画查询时刻 \(t\) 之前已经形成的疾病负担,并在此基础上再叠加未来预期负担。
二者进入后续 BI 公式的方式完全相同,差异只在于如何定义 \(z_d(t)\)
二者的核心区别在于优先采用哪类证据。观测锚定版本以诊断是否真实发生作为主要证据:
\[
z^{\mathrm{obs}}_d(t)=1
\quad\text{一旦疾病 } d \text{} t \text{ 前被观测到。}
\]
这适用于希望 BI 尽量贴近 HFRM 等诊断代码负担指标的场景。它透明、可审计,并且不容易受到模型校准误差影响;
但它会把同一种历史诊断都视为同等程度的已形成负担,不能表达严重程度、发生时间、上下文和残留影响的差异。
模型加权版本则以 DeepHealth 的历史风险轨迹作为主要证据:
\[
z^{\mathrm{model}}_d(t)
=
1-\prod_i
\left[
1-p_d\!\left(h(t_i),t_{i+1}-t_i\right)
\right].
\]
该版本允许同一种已发生疾病在不同个体、不同时间和不同上下文下具有不同负担强度。例如extra-info、疾病序列背景和隐含状态轨迹
都会影响模型给出的区间风险。它可能更接近状态依赖的连续负担强度,但如果模型对某个真实发生过的疾病给出较低历史概率,
也可能低估该诊断事实对应的负担。
因此,二者回答的是相关但不完全相同的问题:
\[
z^{\mathrm{obs}}_d(t):
\text{疾病 } d \text{ 是否已经作为诊断历史的一部分被记录?}
\]
\[
z^{\mathrm{model}}_d(t):
\text{模型隐含轨迹在多大程度上支持疾病 } d \text{ 已经形成负担?}
\]
因此,这两个版本都应作为有价值的敏感性分析方案。观测锚定版本更适合强调可审计性和与既有代码指标的一致性;
模型加权版本更适合将 DeepHealth 作为连续状态模型,让学习到的历史轨迹调节疾病负担强度。
\subsection{累计强度形式}
定义区间累计风险强度
\[
\ell_d(h_i,\Delta_i)
=
-\log\left[1-p_d(h_i,\Delta_i)\right],
\]
以及历史累计强度
\[
\Lambda^{\mathrm{model}}_d(t)=\sum_{i=0}^{n}\ell_d(h_i,\Delta_i).
\]
\[
z^{\mathrm{model}}_d(t)=1-\exp[-\Lambda^{\mathrm{model}}_d(t)].
\]
对于 exponential 模型,
\[
\ell_d(h_i,\Delta_i)=\lambda_d(h_i)\Delta_i,
\]
因此
\[
z^{\mathrm{model}}_d(t)
=
1-\exp\left[
-\sum_{i=0}^{n}
\lambda_d\!\left(h(t_i)\right)(t_{i+1}-t_i)
\right].
\]
对于 Weibull 模型,
\[
\ell_d(h_i,\Delta_i)
=
\lambda_d(h_i)\Delta_i^{\rho_d(h_i)},
\]
因此
\[
z^{\mathrm{model}}_d(t)
=
1-\exp\left[
-\sum_{i=0}^{n}
\lambda_d\!\left(h(t_i)\right)
(t_{i+1}-t_i)^{\rho_d(h(t_i))}
\right].
\]
\section{未来预期负担}
所选择的已形成负担 \(z_d(t)\) 表示截至查询时刻 \(t\) 已经形成的疾病负担。它可以是观测锚定负担
\(z^{\mathrm{obs}}_d(t)\),也可以是模型加权负担 \(z^{\mathrm{model}}_d(t)\)。从当前查询时刻 \(t\) 出发,
未来时间窗 \(\tau\) 内的疾病风险为
\[
p_d(h(t),\tau).
\]
疾病 \(d\) 的未来预期新增负担定义为
\[
f_d(t,\tau)
=
\left[1-z_d(t)\right]p_d(h(t),\tau).
\]
该项只计算尚未形成的疾病负担部分,避免历史负担与未来风险重复计数。疾病 \(d\) 的总动态负担贡献为
\[
b_d(t,\tau)
=
z_d(t)+f_d(t,\tau).
\]
等价地,
\[
b_d(t,\tau)
=
1-
\left[1-z_d(t)\right]
\left[1-p_d(h(t),\tau)\right].
\]
因此,\(b_d(t,\tau)\) 可以解释为疾病 \(d\) 的负担在时刻 \(t\) 已经形成,或将在未来时间窗 \(\tau\) 内新形成的累计概率。
\section{负担指数定义}
\(A \in \mathbb{R}_{\ge 0}^{K \times D}\) 是疾病到负担维度的映射矩阵。维度 \(k\) 的历史负担、未来负担和总负担分别为
\[
\operatorname{BI}^{\mathrm{hist}}_k(t)
=
\sum_{d=1}^{D} A_{k,d} z_d(t),
\]
\[
\operatorname{BI}^{\mathrm{future}}_k(t,\tau)
=
\sum_{d=1}^{D}
A_{k,d}
\left[1-z_d(t)\right]p_d(h(t),\tau),
\]
以及
\[
\operatorname{BI}^{\mathrm{total}}_k(t,\tau)
=
\operatorname{BI}^{\mathrm{hist}}_k(t)
+
\operatorname{BI}^{\mathrm{future}}_k(t,\tau).
\]
等价地,
\[
\operatorname{BI}^{\mathrm{total}}_k(t,\tau)
=
\sum_{d=1}^{D}
A_{k,d}
\left\{
1-
\left[1-z_d(t)\right]
\left[1-p_d(h(t),\tau)\right]
\right\}.
\]
对于 OBI\(A=A^{\mathrm{organ}}\)。对于 FBI\(A=A^{\mathrm{func}}\)
\section{映射矩阵构建}
\subsection{器官映射矩阵}
器官映射矩阵应来自代码分类体系或经过验证的临床分组,而不是人为随意指定权重。在当前 ICD token 设置下,
第一版可以使用 ICD 章节或预定义 ICD 范围构建稀疏的疾病到器官 mask
\[
M^{\mathrm{organ}}_{k,d}\in\{0,1\}.
\]
示例包括:
\begin{center}
\begin{tabular}{ll}
\toprule
维度 & 示例 ICD 组 \\
\midrule
心脏/血管 & I00--I99可进一步拆分为心脏和血管组 \\
脑/神经 & G00--G99F00--F09I60--I69 \\
肾脏/泌尿生殖 & N00--N39尤其 N17--N19 \\
肺/呼吸 & J00--J99 \\
代谢/内分泌 & E00--E90 \\
肝脏/消化 & K00--K93尤其 K70--K77 \\
肌骨 & M00--M99 \\
\bottomrule
\end{tabular}
\end{center}
最简单的器官权重为
\[
A^{\mathrm{organ}}_{k,d}=M^{\mathrm{organ}}_{k,d}.
\]
如果有纵向器官终点标签,可以在 mask 约束下学习权重:
\[
A^{\mathrm{organ}}_{k,d}\ge 0,
\qquad
A^{\mathrm{organ}}_{k,d}=0
\quad\text{if}\quad
M^{\mathrm{organ}}_{k,d}=0.
\]
这样可以保持投影的临床可解释性,同时允许数据驱动校准。
\subsection{功能映射矩阵}
功能映射矩阵应尽可能锚定在经过验证的衰弱相关诊断代码表上。CIHI-HFRM 或相关的 Hospital Frailty Risk Measure
是合适起点,因为它从诊断代码及其权重定义衰弱负担。
\(w^{\mathrm{HFRM}}_d\ge 0\) 是映射到 DeepHealth 疾病 token \(d\) 的 HFRM 权重。如果 HFRM 代码比
DeepHealth 的 ICD token 更细,而 DeepHealth 使用三位 ICD token则可按代码前缀聚合。保守默认方式是
\[
w^{\mathrm{HFRM}}_d
=
\max_{c:\, c \text{ maps to token } d}
w^{\mathrm{HFRM}}_c.
\]
对于总功能负担,一维映射为
\[
A^{\mathrm{func,total}}_{1,d}
=
w^{\mathrm{HFRM}}_d.
\]
对于分域功能负担,定义分组 mask
\[
G_{k,d}\in\{0,1\},
\]
其中 \(G_{k,d}=1\) 表示 HFRM 相关疾病 token \(d\) 属于功能负担维度 \(k\)。于是
\[
A^{\mathrm{func}}_{k,d}
=
G_{k,d} w^{\mathrm{HFRM}}_d.
\]
候选功能维度包括行动、认知、情绪、感官、营养、感染或免疫脆弱性、功能依赖和共病负担。在没有直接功能测量校准之前,
这些维度应被解释为诊断风险驱动的功能负担代理,而不是直接的功能储备测量。
\section{归一化与报告}
原始负担指数是加权加和:
\[
\operatorname{BI}_k(t,\tau)
=
\sum_d A_{k,d} b_d(t,\tau).
\]
为了可解释性,系统应报告三项分解:
\[
\operatorname{BI}^{\mathrm{hist}}_k(t),
\qquad
\operatorname{BI}^{\mathrm{future}}_k(t,\tau),
\qquad
\operatorname{BI}^{\mathrm{total}}_k(t,\tau).
\]
也可以报告归一化负担:
\[
\widetilde{\operatorname{BI}}_k(t,\tau)
=
\frac{
\sum_d A_{k,d} b_d(t,\tau)
}{
\sum_d A_{k,d} + \epsilon
},
\]
其中 \(\epsilon>0\) 用于避免除零。当 \(b_d(t,\tau)\in[0,1]\)\(A_{k,d}\ge 0\) 时,该分数便于不同维度之间比较。
在队列层面,还可以在年龄和性别分层参考人群中计算相对分位数:
\[
\operatorname{PercentileBI}_k(t,\tau)
=
\operatorname{rank}_{\mathrm{age,sex}}
\left(
\operatorname{BI}^{\mathrm{total}}_k(t,\tau)
\right).
\]
该分位数表示相对负担排名,而不是健康储备百分比。
\section{验证}
OBI 与 FBI 应使用不同结局进行验证。
OBI 应针对器官系统特异性未来事件验证。例如,心脏/血管负担对应心血管事件,脑/神经负担对应卒中或痴呆,
肾脏负担对应 CKD 进展,肺部负担对应呼吸系统事件。
FBI 应针对 CIHI-HFRM 风格的衰弱诊断负担、衰弱相关诊断终点、住院、死亡、照护依赖代理指标,
或在条件允许时针对直接功能结局验证。如果没有 ADL/IADL、步速、握力、认知测验或恢复能力等直接功能标签
FBI 应被报告为基于诊断风险的功能负担代理,而不是直接的功能储备测量。
\section{总结}
DeepHealth 负担指数将疾病级风险预测转换为可解释的负担表征。已形成负担可以定义为观测锚定负担
\(z^{\mathrm{obs}}_d(t)\),即遵循真实历史诊断;也可以定义为模型加权负担 \(z^{\mathrm{model}}_d(t)\)
即沿历史隐含状态轨迹累积 DeepHealth 预测的区间风险。未来预期负担则是在尚未形成的疾病负担部分上计算未来新增风险。
OBI 使用解剖系统分组描述病理负担集中在哪里FBI 使用 CIHI-HFRM 风格的衰弱相关诊断权重描述功能脆弱性负担。
二者提供疾病负担的两种互补视角,同时允许明确选择已形成负担的语义。
\end{document}