1. ID可识别位数的设置
1.1 问题描述
在NM7中,ID
的值可以有14位数字,但是默认情况下,输出结果时只能识别前5位数字,例如ID为 “101001”、“101002”、“101003”的受试者,在输出的结果表格里全部显示为“101000”,即从第6位开始的都无法识别。
1.2 原因解析
NM使用Fortran语言编写,输出表格所有字段的默认格式是s1PE11.4
。此格式为科学计数法,允许11个字符的总宽度,包括符号和小数位数。小数点前面有1位,后面有4位,示例如下:-1.2345E+01。因此,在默认设置下,最多显示识别5位数字。
1.3 解决方案
使用LFORMAT
和RFORMAT
选项来对数据的位数进行设置。在$TABLE
模块加入以下代码:
$TABLE ID DOSE WT TIME NOPRINT
FILE=./filename.tbl
RFORMAT="(F15.0,"
RFORMAT="7(s1PE11.4))"
代码的第1行是我们需要输出的4个变量:ID、DOSE、WT、TIME;第2行是输出表格的路径及文件名。
在第3行,我们对第1个变量(即ID)的格式进行了设置。Fortran的浮点数表示格式为Fw.d
,整数部分有w个字符,小数部分有d个字符。因此代码中的F15.0
表示ID是一个浮点数,整数有15位,小数有0位。而NM7最多支持14位数字,因此这样设置已经足够14位ID的使用。
在第4行,我们将剩下的变量设置为仍然使用默认格式s1PE11.4
。前面的7
表示除了第1个变量ID之外,还有7个变量需要输出,但是从第1行来看,理应只有3个。这里之所以等于7,是因为除了自己定义输出的DOSE、WT、TIME外,NONMEM还会自动输出DV
、PRED
、RES
、WRES
这4个变量,所以很多时候在设置变量数时需要加4。
2. PsN的SCM功能
2.1 概述
SCM (stepwise covariate model) 是由PsN提供的一种自动筛选协变量的工具。使用SCM需要运行以下命令:
SCM -config_file=xx.scm
同时需要一份SCM文件,示例如下:
model = 3.mod
search_direction = both
p_forward = 0.05
p_backward = 0.01
continuous_covariates = WT,AST,ALT,ALB
categorical_covariates = SEX,CYP3A5
time_varying = WT,AST,ALT,ALB
[test_relations]
CL = WT,AST,ALT,ALB,SEX,CYP3A5
[valid_states]
continuous = 1,5
categorical = 1,2
[code]
CL:AST-5 = exponential
出现在$INPUT
中的变量名才会用到,控制文件中参数必须写成TVxx
的形式。
SCM的结果可以在scmlog1.txt
中查看,其中包含了OFV值和p值。
2.2 SCM的设置
必需的变量:
model
:基础模型search_direction
:筛选方向,可以等于forward、backward、bothcontinuous_covariates
:连续型协变量,逗号分隔,不能加空格categorical_covariates
:分类型协变量,逗号分隔,不能加空格
time_varying
用于协变量在研究过程中变化的情况,它只能在残差写成“Uppsala way”时才能使用。所谓“Uppsala way”,是指在$ERROR
或$PRED
模型使用变量W
,代码如下:
$ERROR
W = SQRT(IPRED * THETA(1)**2 + THETA(2)**2)
Y = IPRED + ERR(1)*W
IRES = DV - IPRED
IWRES = IPRES / W
$SIGMA
1 FIX
2.3 其他配置
[test_relations]
:定义协变量应该加到哪个参数上。[valid_states]
:定义协变量加入的形式。states可以自己在[code]
里面自己定义,也可使用固定的。固定的states如下:
变量 | states | 说明 |
---|---|---|
连续型 | 1 | none |
连续型 | 2 | linear |
连续型 | 3 | hockey-stick (分段线性) |
连续型 | 4 | exponential |
连续型 | 5 | power |
分类型 | 1 | none |
分类型 | 2 | linear |
[included_relations]
:定义在一开始就加入的协变量。例如:
CL = WT-2,AGE-5
3. Pirana
- 查看正在进行的任务
qstat -f
- 结束任务xxx
qdel xxx