个人学习笔记

  • 首页
  • NONMEM
  • PBPK
  • R语言
  • 其他
  • 常用链接
  • 博客简介
  • 隐私政策
学海无涯勤可渡,书山万仞志能攀
  1. 首页
  2. NONMEM
  3. 正文

温故而知新:NONMEM控制文件之内置模型梳理

2026年7月18日 30点热度 1人点赞 0条评论

一、控制文件的总体逻辑

`NONMEM` 控制文件的核心任务,是把药代动力学假设翻译成一套可估计、可诊断、可扩展的模型表达。对已经能够独立跑模型的读者来说,真正需要进一步掌握的,是控制文件的结构逻辑、各模块的职责分工,以及从一室到三室、从静脉到口服时,哪些部分保持不变,哪些部分需要随结构变化而调整。

一句话概括:结构模型决定药物怎么走,`ETA` 负责个体差异,`EPS` 负责观测噪声,协变量负责解释能解释的差异,诊断负责判断模型是否站得住。

建模主线

数据读入 -> 结构模型 -> 个体参数 -> IIV -> 残差误差 -> 估计 -> 诊断。

常见风险

参数太多、初值不合理、采样不支持、协变量过早加入、只看 OFV 不看图。

二、各模块的作用

$PROB 用于说明模型名称和特征;$INPUT 定义数据列名;$DATA 指定数据文件;$SUBROUTINES 选择求解器;$MODEL 声明房室结构;$PK 定义典型值、个体值和协变量;$DES 写微分方程;$ERROR 写观测误差;$THETA/$OMEGA/$SIGMA 分别定义固定效应、个体间变异和残差误差。

如果把整个控制文件看成一条流水线,这些模块就是按顺序串联起来的:数据进入,结构建立,参数赋值,误差叠加,最后由估计过程找到最优解。

写控制文件时,最容易出问题的地方往往不是某个公式本身,而是事件编码、房室映射和单位是否统一。

三、一室模型

一室模型是所有复杂模型的起点。它适用于药物分布相对简单,或者数据并不支持更复杂结构的场景。静脉一室模型和口服一室模型的差别,主要在于是否需要吸收过程。

静脉一室模型

$PROB IV one-compartment model

$INPUT ID TIME AMT DV EVID MDV CMT
$DATA data.csv IGNORE=@

$SUBROUTINES ADVAN1 TRANS2

$PK
CL = THETA(1)*EXP(ETA(1))
V  = THETA(2)*EXP(ETA(2))
S1 = V

$ERROR
IPRED = F
Y = IPRED*(1+EPS(1))

$THETA
(0, 5)
(0,50)

$OMEGA
0.1
0.1

$SIGMA
0.04

这版模型最适合做数据核查,也常作为后续二室、三室模型的起点。

口服一室模型比静脉模型多出一个吸收过程。若峰前采样不足,`KA` 往往比 `CL` 和 `V` 更难稳定估计。

四、二室模型

二室模型适用于存在明显分布相的药物。它的核心是中央室和外周室之间的交换。若一室模型不能同时解释早期快速下降和末端缓慢下降,二室模型通常更合理。

口服二室模型

$PROB Oral two-compartment model

$INPUT ID TIME AMT DV EVID MDV CMT
$DATA data.csv IGNORE=@

$SUBROUTINES ADVAN4 TRANS4

$PK
CL = THETA(1)*EXP(ETA(1))
V1 = THETA(2)*EXP(ETA(2))
KA = THETA(3)*EXP(ETA(3))
Q  = THETA(4)*EXP(ETA(4))
V2 = THETA(5)*EXP(ETA(5))
S2 = V1

$ERROR
IPRED = F
Y = IPRED*(1+EPS(1))

$THETA
(0, 5)
(0,50)
(0, 1)
(0,10)
(0,100)

$OMEGA
0.1
0.1
0.1
0.1
0.1

$SIGMA
0.04

口服二室是临床药代分析中最常见的实战模型之一,但它也最容易出现参数混淆,尤其是 `KA`、`Q` 和 `V2`。如果早期和末端数据不足,模型往往“能跑”却不一定可辨识。

五、三室模型

三室模型用于描述更复杂的分布过程。它的优势在于更灵活,但代价是参数更多、可辨识性更差、对数据质量要求更高。通常只有在二室模型仍不足以解释数据时才考虑上三室。

静脉三室模型

$PROB IV three-compartment model

$INPUT ID TIME AMT DV EVID MDV CMT
$DATA data.csv IGNORE=@

$SUBROUTINES ADVAN11 TRANS4

$PK
CL = THETA(1)*EXP(ETA(1))
V1 = THETA(2)*EXP(ETA(2))
Q2 = THETA(3)*EXP(ETA(3))
V2 = THETA(4)*EXP(ETA(4))
Q3 = THETA(5)*EXP(ETA(5))
V3 = THETA(6)*EXP(ETA(6))
S1 = V1

$ERROR
IPRED = F
Y = IPRED*(1+EPS(1))

$THETA
(0, 5)
(0,50)
(0,10)
(0,20)
(0,10)
(0,30)

$OMEGA
0.1
0.1
0.1
0.1
0.1
0.1

$SIGMA
0.04

口服三室模型

$PROB Oral three-compartment model

$INPUT ID TIME AMT DV EVID MDV CMT
$DATA data.csv IGNORE=@

$SUBROUTINES ADVAN12 TRANS4

$PK
CL = THETA(1)*EXP(ETA(1))
V2 = THETA(2)*EXP(ETA(2))
KA = THETA(3)*EXP(ETA(3))
Q3 = THETA(4)*EXP(ETA(4))
V3 = THETA(5)*EXP(ETA(5))
Q4 = THETA(6)*EXP(ETA(6))
V4 = THETA(7)*EXP(ETA(7))
S2 = V2

$ERROR
IPRED = F
Y = IPRED*(1+EPS(1))

$THETA
(0, 5)
(0,50)
(0, 1)
(0,10)
(0,20)
(0,10)
(0,30)

$OMEGA
0.1
0.1
0.1
0.1
0.1
0.1
0.1

$SIGMA
0.04

三室模型的关键不只是“多一个外周室”,而是模型复杂度显著提高之后,数据支持、初值、参数相关性和诊断的重要性都会同步上升。

六、实战判断:什么时候加复杂度,什么时候停手

复杂度不是越高越好,而是越高越要谨慎。判断是否继续加室、加 `Tlag` 或加协变量,最重要的不是个人偏好,而是数据支持程度。

先看数据

峰前不足时,`KA` 和 `Tlag` 很容易混;末端不足时,`Q` 和 `V2/V3` 常常不稳。

先看结构,再看协变量

协变量不是救结构模型的工具。先把结构、残差和 IIV 理顺,再考虑解释个体差异。

不要只看 OFV

OFV 下降不等于模型更好。参数合理性、标准误、`CWRES`、ETA 收缩率和协方差同样重要。

先保守,再扩展

从核心参数开始放 IIV,再根据诊断逐步加复杂度,能让你知道每一步改动带来了什么。

七、经典协变量建模

协变量建模的目标不是单纯让 `OFV` 下降,而是让参数解释更合理、更稳定、更可推广。体重、年龄、肾功能、肝功能、性别、食物状态和合并用药,都是常见候选,但并不意味着都应当进入最终模型。

体重

体重是最经典也最常见的协变量。清除类参数常用 0.75 的异速生长指数,体积类参数常用 1.0:

CL = TVCL*(WT/70)**0.75*EXP(ETA(1))
V1 = TVV1*(WT/70)**1.0*EXP(ETA(2))

对于 `Q` 和 `V2`,是否加入体重协变量要更谨慎,最好有机制和数据双重支持。

协变量判断原则

  • 有生理或临床机制意义。
  • 加入后参数稳定性没有明显变差。
  • 能解释个体差异,而不是单纯“凑显著”。
  • 不会引入严重共线性。
  • 在诊断和外部验证中表现合理。

八、模型诊断与常见报错排查

模型是否“能跑”和模型是否“可信”是两件不同的事。诊断要关注收敛、参数合理性、协方差、`CWRES`、`ETA shrinkage` 和参数相关性。

重点看什么

  • 是否成功收敛,目标函数是否稳定。
  • 参数是否落在边界上,标准误是否过大。
  • `CWRES` 是否随机分布,是否存在时间趋势。
  • `ETA shrinkage` 是否过高,尤其是 `KA`、`Q`、`V2/V3`。
  • 协方差步骤是否成功,是否提示参数相关性过强。

常见问题

不收敛

通常先查初值、模型复杂度、数据支持和协变量数量,再考虑调整估计方法。

协方差失败

往往说明参数不可辨识或相关性过强,不要只重复跑一次,应回到模型结构本身。

参数跑边界

通常意味着这个参数没有被数据充分支持,或者边界和初值设得不合适。

残差图有趋势

常提示结构模型、残差模型或协变量模型还没解释到位,可能需要回头简化或重建。

九、结语

`NONMEM` 控制文件的经典写法,本质上是在用固定语法表达药代动力学假设。结构模型决定药物如何在体内移动,`ETA` 描述个体间差异,`EPS` 描述观测误差,协变量模型解释可识别的个体差别,而诊断则决定模型是否真正站得住。

对已经会跑模型的读者而言,真正需要建立的不是模板记忆,而是判断能力:什么时候该加室,什么时候该加协变量,什么时候该继续复杂化,什么时候该停在足够好的模型上。

标签: 暂无
最后更新:2026年7月18日

MSxiaoming

得失从缘,心无增减

点赞
< 上一篇

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

MSxiaoming

得失从缘,心无增减

标签聚合
NONMEN POPPK PBPK模型 R语言 群体药代动力学 NONMEM R语言,数据管理 折腾

COPYRIGHT © 2023 个人学习笔记. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

皖ICP备2023004398号-1