5D Library › 衰老动力学、mTOR-AMPK自噬开关与毒物兴奋效应的生物数学模型 · English

第一章 冈珀茨—梅克姆定律:死亡率曲线的形状

一条两百年前的曲线

1825 年,英国精算师本杰明·冈珀茨在《皇家学会哲学汇刊》上发表了一篇讨论人类死亡率函数与年金计算的论文 (Gompertz 1825)。他提出的假设大意是:一个人抵抗死亡的「能力」在每一段相等的极短时间内损失同样的比例。用今天的语言说,死亡风险(风险率、危险度,hazard)随年龄按指数增长:

μ(t)=Reαt,\mu(t) = R\,e^{\alpha t},

其中 tt 是年龄,RR 是基线水平,α\alpha 是增长率。35 年后,威廉·梅克姆加上了一个与年龄无关的常数项 AA,代表事故、传染病等不随年龄变化的死亡原因 (Makeham 1860):

μ(t)=A+Reαt.\mu(t) = A + R\,e^{\alpha t}.

这就是冈珀茨—梅克姆定律。它不是从生物学推出来的定律,而是一个经验规律:在许多人群与许多时期,成年人的死亡率在对数坐标上大致是一条直线。

证据

芬奇、派克与威滕 1990 年比较了多个物种的死亡率加速,把 ln⁡2/α\ln 2/\alpha 称为死亡率翻倍时间(mortality rate doubling time, MRDT),并报告人类成年后的 MRDT 约为 8 年 (Finch et al. 1990)。这个数字常被引用为「成年后死亡率约每 8 年翻一番」。它是一个典型值:不同国家、时期与性别之间有差异,用不同的年龄段拟合也会得到不同的数字。

推导

MRDT 的推导。 令 μ(t+D)=2μ(t)\mu(t + D) = 2\mu(t),在没有梅克姆项时 Reα(t+D)=2ReαtR e^{\alpha(t + D)} = 2 R e^{\alpha t},所以 D=ln⁡2/αD = \ln 2/\alpha。MRDT 为 8 年意味着 α=ln⁡2/8≈0.087\alpha = \ln 2/8 \approx 0.087 每年;从 30 岁到 90 岁的 60 年里,死亡率上升 260/8≈1802^{60/8} \approx 180 倍。

下面的程序用一组示意参数(MRDT 8 年;50 岁时年死亡率约 0.4%;梅克姆项 0.0005 每年)计算各年龄的风险率与剩余预期寿命,然后在一个合成队列中用最小二乘法从「观测」死亡率反推 MRDT,比较忽略与扣除梅克姆项的结果。

推导

# Gompertz-Makeham hazard mu(t) = A + R exp(alpha t); illustrative: MRDT 8 y, mu(50) ~ 0.004.
# Part 2: refit the MRDT from a synthetic cohort (fixed seed), with and without A.
import math, random

ALPHA = math.log(2) / 8
R = 0.004 / math.exp(ALPHA * 50)
A = 0.0005
mu = lambda t: A + R * math.exp(ALPHA * t)

print(f"alpha = {ALPHA:.4f} per year, MRDT = {math.log(2) / ALPHA:.1f} years, R = {R:.2e}")
print(" age | hazard per year | Makeham share | P(die within the year)")
for t in (20, 30, 50, 70, 90, 100):
    print(f" {t:3d} |   {mu(t):10.5f}    |    {A / mu(t):5.1%}     |   {1 - math.exp(-mu(t)):.4f}")

def remaining(t0, dt=0.01):                 # remaining life expectancy, integrated to age 120
    s, e = 1.0, 0.0
    for i in range(int((120 - t0) / dt)):
        e += s * dt; s *= math.exp(-mu(t0 + i * dt) * dt)
    return e
print("remaining life expectancy: " +
      ", ".join(f"at {t0}: {remaining(t0):.1f} y" for t0 in (30, 50, 70, 90)))

rng = random.Random(30)                     # 1,000,000 person-years per year of age
def fit(lo, hi, subtract_A):
    xs = list(range(lo, hi + 1))
    ys = [math.log(max(rng.gauss(mu(t) * 1e6, math.sqrt(mu(t) * 1e6)) / 1e6
                       - (A if subtract_A else 0), 1e-7)) for t in xs]
    mx, my = sum(xs) / len(xs), sum(ys) / len(ys)
    b = sum((x - mx) * (y - my) for x, y in zip(xs, ys)) / sum((x - mx) ** 2 for x in xs)
    return math.log(2) / b
for lo, hi in ((30, 90), (50, 90), (30, 60)):
    print(f"fit ages {lo}-{hi}: MRDT ignoring A = {fit(lo, hi, False):4.1f} y;"
          f" with A subtracted = {fit(lo, hi, True):4.1f} y (true 8.0)")
# alpha = 0.0866 per year, MRDT = 8.0 years, R = 5.26e-05
#  age | hazard per year | Makeham share | P(die within the year)
#   20 |      0.00080    |    62.7%     |   0.0008
#   30 |      0.00121    |    41.4%     |   0.0012
#   50 |      0.00450    |    11.1%     |   0.0045
#   70 |      0.02313    |     2.2%     |   0.0229
#   90 |      0.12850    |     0.4%     |   0.1206
#  100 |      0.30494    |     0.2%     |   0.2628
# remaining life expectancy: at 30: 48.7 y, at 50: 30.5 y, at 70: 15.1 y, at 90: 5.2 y
# fit ages 30-90: MRDT ignoring A =  8.7 y; with A subtracted =  8.0 y (true 8.0)
# fit ages 50-90: MRDT ignoring A =  8.2 y; with A subtracted =  8.0 y (true 8.0)
# fit ages 30-60: MRDT ignoring A =  9.7 y; with A subtracted =  8.0 y (true 8.0)

在这组参数下,风险率从 30 岁的约 0.0012 每年升到 90 岁的约 0.13 每年,即 90 岁的人一年内死亡的概率约为 12%。20 岁时,与年龄无关的梅克姆项占风险的约 63%;到 50 岁只占约 11%,70 岁以后不到 3%。这说明了一件事:年轻成年人的死亡主要不是「衰老」造成的,而年龄越大,冈珀茨项越占主导。

程序的后半部分是一个方法学提醒:真实 MRDT 为 8.0 年,不扣除梅克姆项对 30–90 岁拟合得到 8.7 年,只用 30–60 岁得到 9.7 年——年轻时不随年龄增长的那部分死亡率把直线「压平」了。文献中 MRDT 的差异一部分来自拟合方法与年龄段,而不全是生物学差异;MRDT 也只是群体风险的描述,不是个体「衰老速度」的直接测量。

为什么是指数?可靠性理论

如果身体里的每一个部件都在「老化」,为什么整体的死亡风险恰好是指数形式,而不是别的形状?工程学的可靠性理论提供了一种解释。

证据

加夫里洛夫与加夫里洛娃 2001 年提出了衰老与长寿的可靠性理论 (Gavrilov and Gavrilova 2001)。模型中的机体由许多串联的「模块」构成(任何一个模块失效,机体就死亡),每个模块又由若干并联的冗余「元件」构成(所有元件都失效,模块才失效)。关键在于:元件本身不老化,它们以恒定的速率随机失效。他们证明,如果机体在出生时就带有大量缺陷(每个模块中能工作的元件数目较少且随机),系统的失效率会近似地按指数上升;随着冗余被耗尽,失效率在极高龄时减速并趋向一个平台。如果机体在出生时完美无缺(每个模块的元件都完好),失效率则按幂函数(韦布尔型)上升,而不是指数。

推导

最简版本的推导。 设机体有 NN 个串联模块,每个元件的失效率为 KK,出生时每个模块中能工作的元件数服从均值为 λ\lambda 的泊松分布。一个元件活到 tt 的概率是 e−Kte^{-Kt},所以模块在 tt 时已经失效的概率是

∑ie−λλii!(1−e−Kt)i=e−λe−Kt.\sum_{i} \frac{e^{-\lambda}\lambda^i}{i!}\left(1 – e^{-Kt}\right)^i = e^{-\lambda e^{-Kt}}.

记 x=λe−Ktx = \lambda e^{-Kt},在出生时存活的条件下,机体的风险率是

μ(t)=NKxex−1.\mu(t) = N K \frac{x}{e^{x} – 1}.

当 xx 很大(冗余充足)时,ln⁡μ\ln \mu 对 tt 的斜率约为 K(x−1)K(x – 1),接近指数增长;当 x→0x \to 0(冗余耗尽)时,μ→NK\mu \to NK,即高龄平台。程序比较两组参数:A 组模块很多、元件失效率低;B 组模块很少、元件失效率高;并与「出生时完美」的模块对照。

推导

# Reliability model (simplest version, after Gavrilov & Gavrilova 2001): N blocks in series,
# non-ageing elements (rate K) in parallel, Poisson(LAM) working elements at birth.
# Hazard N K x / (e^x - 1), x = LAM e^(-K t); plateau N K. Illustrative parameters.
import math

SETS = {"A: many blocks, low K": (5.3e5, 0.006, 22.0), "B: few blocks, high K": (25, 0.02, 20.0)}

def hazard(t, n, k, lam):
    x = lam * math.exp(-k * t)
    return n * k * x / math.expm1(x)

def mrdt(t, *p, w=5):                       # local doubling time of the hazard around age t
    return 2 * w * math.log(2) / (math.log(hazard(t + w, *p)) - math.log(hazard(t - w, *p)))

for name, p in SETS.items():
    print(f"set {name}: N = {p[0]:.3g}, K = {p[1]}, LAM = {p[2]}; plateau N * K = "
          f"{p[0] * p[1]:.3g} per year")
    print("   age:    " + "  ".join(f"{t:7d}" for t in (40, 60, 80, 100, 120)))
    print("   hazard: " + "  ".join(f"{hazard(t, *p):7.4f}" for t in (40, 60, 80, 100, 120)))
    print("   MRDT y: " + "  ".join(f"{mrdt(t, *p):7.1f}" for t in (40, 60, 80, 100, 120)))

M, KP, NP = 5, 0.004, 25                    # initially perfect: hazard ~ t^(M-1) at first
def hazard_perfect(t):
    q = 1 - math.exp(-KP * t)
    return NP * M * q ** (M - 1) * KP * math.exp(-KP * t) / (1 - q ** M)
loglog = lambda t: (math.log(hazard_perfect(t + 5) / hazard_perfect(t - 5))
                    / math.log((t + 5) / (t - 5)))
print("initially perfect blocks (M = 5), log-log slope at ages 40, 80, 120: " +
      ", ".join(f"{loglog(t):.2f}" for t in (40, 80, 120)) + " (Weibull-type)")
# set A: many blocks, low K: N = 5.3e+05, K = 0.006, LAM = 22.0; plateau N * K = 3.18e+03 per year
#    age:         40       60       80      100      120
#    hazard:  0.0017   0.0105   0.0530   0.2191   0.7612
#    MRDT y:     7.1      8.0      9.2     10.4     11.9
# set B: few blocks, high K: N = 25, K = 0.02, LAM = 20.0; plateau N * K = 0.5 per year
#    age:         40       60       80      100      120
#    hazard:  0.0006   0.0073   0.0362   0.0968   0.1766
#    MRDT y:     4.3      6.9     11.1     18.2     29.6
# initially perfect blocks (M = 5), log-log slope at ages 40, 80, 120: 3.53, 3.08, 2.67 (Weibull-type)
左:冈珀茨—梅克姆风险率(示意参数,MRDT 8 年),实线为全模型,虚线为冈珀茨项,点线为梅克姆常数项。右:可靠性理论最简版本的两组参数与纯冈珀茨曲线的比较;A 组在 40–90 岁间 MRDT 约 7–10 年,但平台远在人类寿命之外;B 组的平台为 0.5 每年,但 MRDT 随年龄迅速变长。

A 组在 40 到 100 岁之间给出了与人类数据相当接近的形状:风险率从 0.0017 升到 0.22,局部 MRDT 从 7.1 年逐渐变为 10.4 年,与「约 8 年」的经验值同一量级,也有轻微的高龄减速。但它的平台高达每年 3,000 以上,只有在远远超出人类寿命的年龄才会出现。B 组的平台是每年 0.5,在人类年龄范围内就清楚地显示出减速,代价是 MRDT 从 40 岁的 4.3 年一路变长到 120 岁的近 30 年,不再像一条直线。出生时完美的模块则给出幂函数型的增长:在对数—对数坐标上的斜率约为 2.7–3.5,而不是指数。

注

对作者原框架的限定。 可靠性理论的价值在于一个概念上的转变:不需要假设每个部件都在老化,冗余的逐渐耗尽本身就能产生指数型的死亡率上升与高龄减速。但本书所用的最简版本不能用同一组参数,同时给出 30–90 岁恒定的 8 年翻倍与人类年龄范围内的平台。加夫里洛夫夫妇的完整讨论包括更多的设定;这里的程序只用来说明机制,不是对人类数据的拟合,也不能用来「测量」一个人还剩多少冗余。

假说 · 尚未验证

多器官储备的耗尽速度预测个体的死亡率加速(尚未确立)。如果冗余耗尽是死亡率指数上升的主要原因,那么在同一个人身上重复测量几种器官的功能储备(例如最大摄氧量、肺功能、肾小球滤过率、握力),这些储备合在一起的下降速度,应当比任何单一指标更能预测此人随后的死亡风险。可以检验的推论是:在纵向队列中,「综合储备斜率」对死亡的预测力显著高于基线水平与单一器官斜率。如果综合斜率不比单一指标更好,或者只有基线水平有预测力而斜率没有,这一假说就被削弱。

高龄平台:真实还是误差?

可靠性理论预言高龄时死亡率会减速甚至进入平台。超高龄老人的年龄记录很容易出错,少量的年龄夸大就足以制造一个假的平台,所以这一现象是否存在争论了很久。

证据

巴尔比等人分析了意大利 2009–2015 年间 105 岁及以上、年龄经过逐一核实的近 4,000 名老人,报告死亡风险在 105 岁以后不再上升,呈现平台 (Barbi et al. 2018)。纽曼 2018 年则用模拟和数据表明,年龄记录中很低比例的随机误差与抽样偏差,就足以在本来按冈珀茨增长的数据中产生高龄减速与平台,并认为已发表的平台可能主要是误差的产物 (Newman 2018)。两种解释目前都有支持者。

对本书来说,这场争论的意义在于:冈珀茨定律在大约 30 到 90 岁之间是可靠的描述,超出这个范围就需要特别小心。第五章把风险比换算为「死亡率曲线上的年数」时,也只在这个范围内使用它。

发病压缩:弗里斯的预言

1980 年,詹姆斯·弗里斯在《新英格兰医学杂志》上提出了一个影响深远的设想 (Fries 1980)。他认为人类的寿命存在一个大致固定的生物学上限,随着早死的减少,生存曲线会越来越「矩形化」:大多数人会活到接近这个上限,然后在较短的时间内死去。如果慢性病与失能的发生年龄推迟得比死亡年龄更快,带病生存的年数就会被压缩到生命的最后一小段。

这个设想有两部分:生存曲线的矩形化与发病被压缩,两者都可以检验。两个时钟相互独立是下面模型的一个简化(实际上患病会提高死亡风险)。

证据

克里明斯与贝尔特兰-桑切斯 2011 年回顾了美国的死亡率与发病趋势 (Crimmins and Beltrán-Sánchez 2011)。1970 年以后,65 岁的人活到 85 岁的机会大约翻了一番;但在 1998–2006 年间,从 20 岁起不患心血管病、癌症与糖尿病的预期年数略有减少,失去基本行动能力的预期年数增加。他们的结论是,美国的数据没有显示发病被压缩;患病率上升的一个重要原因是患病者活得更长了。

推导

一个「双时钟」的玩具模型:一个时钟决定死亡(冈珀茨—梅克姆,与程序一相同),另一个时钟决定第一种致残慢性病的发生(同样的斜率,但提前 12 年)。把两个时钟分别向右平移若干年,计算从 30 岁起的预期寿命、健康预期寿命与带病年数。程序的第二部分计算纯冈珀茨曲线下死亡年龄的离散程度:众数固定在 85 岁,改变 MRDT。

推导

# Two-clock toy model (Fries 1980): death = program 1's curve shifted by s_d; onset of disabling
# disease = same slope, 12 y earlier, shifted by s_m; independent clocks. Part 2: SD of death age.
import math

ALPHA = math.log(2) / 8
R, A = 0.004 / math.exp(ALPHA * 50), 0.0005
mu_d = lambda t, s: A + R * math.exp(ALPHA * (t - s))
mu_m = lambda t, s: R * math.exp(ALPHA * (t - s + 12))

def expectancies(s_d, s_m, dt=0.02):        # from age 30: life expectancy, healthy expectancy
    sd = sb = 1.0; le = hle = 0.0
    for i in range(int(100 / dt)):
        t = 30 + i * dt; le += sd * dt; hle += sb * dt
        sd *= math.exp(-mu_d(t, s_d) * dt); sb *= math.exp(-(mu_d(t, s_d) + mu_m(t, s_m)) * dt)
    return le, hle

base = expectancies(0, 0)
print("scenario (shift of death / onset clock)  | LE from 30 | healthy | with morbidity")
for label, sd, sm in (("baseline", 0, 0), ("death delayed 5 y only", 5, 0),
                      ("both delayed 5 y", 5, 5), ("onset delayed 8 y, death 5 y", 5, 8),
                      ("onset delayed 5 y only", 0, 5)):
    le, hle = expectancies(sd, sm)
    extra = (le - hle) - (base[0] - base[1])
    print(f"{label:40s} | {le:8.1f} y | {hle:5.1f} y | {le - hle:5.1f} y ({extra:+.1f})")

def sd_age_at_death(mrdt, dt=0.01):         # pure Gompertz, modal age 85, alive at 30
    a = math.log(2) / mrdt; r = a * math.exp(-a * 85)
    surv = lambda t: math.exp(-(r / a) * (math.exp(a * t) - math.exp(a * 30)))
    m0 = m1 = m2 = 0.0
    for i in range(int(130 / dt)):
        t = 30 + i * dt; p = surv(t) - surv(t + dt); x = t + dt / 2
        m0 += p; m1 += p * x; m2 += p * x * x
    return math.sqrt(m2 / m0 - (m1 / m0) ** 2), m1 / m0
for m in (8.0, 5.0, 3.0):
    sd, mean = sd_age_at_death(m)
    print(f"pure Gompertz, mode 85: MRDT {m:3.1f} y -> mean age at death {mean:.1f}, SD {sd:.1f} y")
print(f"asymptotic SD pi / (alpha sqrt 6) = {math.pi / (ALPHA * math.sqrt(6)):.1f} y at MRDT 8 y;"
      f" SD 4 y needs MRDT {4 * math.log(2) * math.sqrt(6) / math.pi:.1f} y")
# scenario (shift of death / onset clock)  | LE from 30 | healthy | with morbidity
# baseline                                 |     48.7 y |  34.4 y |  14.3 y (+0.0)
# death delayed 5 y only                   |     53.4 y |  35.4 y |  18.0 y (+3.7)
# both delayed 5 y                         |     53.4 y |  39.0 y |  14.5 y (+0.2)
# onset delayed 8 y, death 5 y             |     53.4 y |  40.9 y |  12.5 y (-1.7)
# onset delayed 5 y only                   |     48.7 y |  37.6 y |  11.1 y (-3.1)
# pure Gompertz, mode 85: MRDT 8.0 y -> mean age at death 78.9, SD 13.7 y
# pure Gompertz, mode 85: MRDT 5.0 y -> mean age at death 80.9, SD 9.2 y
# pure Gompertz, mode 85: MRDT 3.0 y -> mean age at death 82.5, SD 5.6 y
# asymptotic SD pi / (alpha sqrt 6) = 14.8 y at MRDT 8 y; SD 4 y needs MRDT 2.2 y

模型给出了弗里斯论证的逻辑:只推迟死亡 5 年、不推迟发病,带病年数从 14.3 年增加到 18.0 年(发病扩张);两者都推迟 5 年,带病年数几乎不变;只有当发病推迟得比死亡更多(8 年对 5 年)时,带病年数才减少 1.7 年(发病压缩)。所以「延长寿命」与「延长健康寿命」是两个不同的目标,不能互相替代。

第二部分检验矩形化。在纯冈珀茨曲线下,死亡年龄的标准差主要由 α\alpha 决定,渐近值为 π/(α6)\pi/(\alpha\sqrt{6}):MRDT 为 8 年时约 14.8 年(从 30 岁算起为 13.7 年)。弗里斯设想的「死亡年龄集中在 85 岁左右、标准差约 4 年」需要约 2.2 年的 MRDT,比观测到的 8 年快得多。换句话说,只要死亡率的年龄斜率不变,把整条曲线向右推,不会让死亡变得更集中;要使生存曲线明显矩形化,必须改变曲线的斜率,而不只是位置。

本章小结

冈珀茨—梅克姆定律 μ(t)=A+Reαt\mu(t) = A + R e^{\alpha t} 是对成年人死亡率的稳健经验描述,人类的 MRDT 约为 8 年,但它是典型值而不是常数,估计值还依赖拟合方法。可靠性理论说明,不老化的元件加上冗余的耗尽,就能产生指数型上升与高龄减速,但最简版本只是定性解释;高龄平台是真实现象还是数据误差仍有争论。弗里斯的发病压缩是一个可检验的假说,美国的数据没有支持它;在模型中,只有发病推迟得比死亡更快才会压缩,而要让死亡年龄更集中,必须改变死亡率曲线的斜率。下一章从群体曲线走进细胞:营养感应通路如何在合成与回收之间切换。

参考文献

Barbi, Elisabetta, Francesco Lagona, Marco Marsili, James W. Vaupel, and Kenneth W. Wachter. 2018. “The Plateau of Human Mortality: Demography of Longevity Pioneers.” Science 360 (6396): 1459–61. https://doi.org/10.1126/science.aat3119.
Crimmins, Eileen M., and Hiram Beltrán-Sánchez. 2011. “Mortality and Morbidity Trends: Is There Compression of Morbidity?” The Journals of Gerontology, Series B: Psychological Sciences and Social Sciences 66B (1): 75–86. https://doi.org/10.1093/geronb/gbq088.
Finch, Caleb E., Malcolm C. Pike, and Matthew Witten. 1990. “Slow Mortality Rate Accelerations During Aging in Some Animals Approximate That of Humans.” Science 249 (4971): 902–5. https://doi.org/10.1126/science.2392680.
Fries, James F. 1980. “Aging, Natural Death, and the Compression of Morbidity.” New England Journal of Medicine 303 (3): 130–35. https://doi.org/10.1056/NEJM198007173030304.
Gavrilov, Leonid A., and Natalia S. Gavrilova. 2001. “The Reliability Theory of Aging and Longevity.” Journal of Theoretical Biology 213 (4): 527–45. https://doi.org/10.1006/jtbi.2001.2430.
Gompertz, Benjamin. 1825. “On the Nature of the Function Expressive of the Law of Human Mortality, and on a New Mode of Determining the Value of Life Contingencies.” Philosophical Transactions of the Royal Society of London 115: 513–83. https://doi.org/10.1098/rstl.1825.0026.
Makeham, William M. 1860. “On the Law of Mortality and the Construction of Annuity Tables.” The Assurance Magazine, and Journal of the Institute of Actuaries 8 (6): 301–10. https://doi.org/10.1017/S204616580000126X.
Newman, Saul Justin. 2018. “Errors as a Primary Cause of Late-Life Mortality Deceleration and Plateaus.” PLoS Biology 16 (12): e2006776. https://doi.org/10.1371/journal.pbio.2006776.

Fan, Y. (2026). Ageing Kinetics, the mTOR-AMPK Autophagy Switch and Hormesis: From the Gompertz Mortality Law and Mitohormesis to Cardiorespiratory Fitness Epidemiology, Read Beside Classical Chinese Longevity Philosophy [衰老动力学、mTOR-AMPK自噬开关与毒物兴奋效应的生物数学模型] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23770092 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).