药物浓度与心电图中QT间期间相关性分析学习笔记_下篇
付永超 / 2026-03-11
前言:
前文已经对C-QT分析的基本概念、白皮书中的模型进行了介绍,本文将关注具体的数据的分析的实例,尝试从C-QT数据一步一步计算与操作获得C-QT的分析结果。
本文将采用R语言作为分析工具对数据分析,将介绍:C-QT分析使用的数据,分析的步骤、分析的代码、以及作者开发的一个覆盖上述流程的用于CQT分析的一个在线的shiny程序。
一、完整的从ECG采集到C-QT分析结果报告的流程以及本文覆盖的范围
完整的流程:
沿着心电图数据的采集、评估、处理、分析的视角看,整个流程如下方示意图所示:

各个主要流程:
- 原始心电图数据:医生/技师通过操作心电图机采集与导出原始心电图电子数据。
- 准确的QT、RR等心电图衍生的参数:心电图阅片中心采用适当的盲法、阅片方法、阅片标准,基于原始心电图电子数据评估获得每个心电图的高质量的心电图衍生的参数。
- 最终的单个时间点的心电图参数数据与浓度数据:数据准备人员基于收到的心电图数据、浓度数据等信息,通过合并数据集以及计算每个时间点3份心电图参数的平均值生成最终可用于C-QT分析的数据集。
- C-QT分析:1.分析人员基于接收到的数据,进行CQT分析,分析时的QTc可以根据需要,采用合适的校正方法衍生出新的QTc,或者也可以直接使用数据中已有的QTc用于分析;2.衍生分析中所需要用到的其他数据;3.进行探索性分析,并进行假设检验,以确定是否可以使用白皮书中所指定的线性混合效应模型用于分析;4.选择合适的方法进项建模分析;5.报告分析结果。
本文覆盖的范围
上述整个流程涉及到较多的环节,本文数据的分析的实例将仅覆盖上述流程图中的“计算QTc”、“数据衍生:ΔQTc等”、“探索性分析”、“建模分析”步骤,其他内容不在本实例的介绍范围。
二、数据:
C-QT分析所需要的数据
在进行C-QT分析时至少需要有下述数据:
受试者编号(USUBJID)、干预(TRT)、剂量组(DOSE)、计划采集时间(NTIME)、浓度(Conc)、RR间期和/或心率(RR和/或HR)、QT间期(QT)。
QTc并不是必须的,但如果有已经计算好的QTc比如QTcF、QTcB等也可以的。
本实例所使用的数据
本文使用了Christoffe提供的数据的修改版本。
修改后用于本案例演示使用的数据集共有80例受试者,其中40例接受药物(TRT=1)治疗,另外40例接受安慰剂(TRT=1)治疗,每个受试者都在给药后的24小时内采集的药物浓度与ECG数据,ECG数据已经读图获取了HR、RR、QT、QTcF数据。
(假设:实际在收集ECG数据集时,应该是每个时间点都收集了3份ECG数据,之后计算3份数据的平均值作为该时间点的ECG数据用于CQT分析,当前的数据集中每个时间点仅有一个ECG数据点,因此假设这3份ECG是已经平均后的数据)。
修改后作为数据的基本情况如下:
- 行数:1028(1行列明+1027行数据)
- 列数:9
各列的含义:
- USUBJID:受试者编号,数据类型:因子,因子水平数量:80
- TRT:干预措施,数据类型:因子,因子水平数量:2
- DOSE:剂量,数据类型:因子,因子水平数量:2
- NTIME:计划采样时间,数据类型:因子,因子水平数量:13
- QT:QT间期,单位:毫秒,数据类型:数值,数值范围:301-495
- HR:心率,单位:次每分钟,数据类型:数值,数值范围:40-120
- RR:RR间期,单位:毫秒,数据类型:数值,数值范围:493-1445
- CONC:浓度,数据类型:数值,数值范围:0-3595.537614
- QTcF:采用 Fridericia(弗里德里西亚) 的方法计算的校正后的
- QT间期,单位:毫秒,数据类型:数值,数值范围:343-459
数据集文件的格式:csv格式,使用UTF-8-BOM编码。
数据集的导入
2.1.访问下述网址打开CQT探索性数据分析工具
https://s0521.shinyapps.io/cqt_eda/
(首次打开需要等待约10秒时间)
2.2.鼠标左键单击页面左侧的”2.QTc计算”标签页

2.3.选择数据源
在”2.QTc计算”标签页右侧区域,在“使用的数据”区域鼠标左键单击的单击“加载内置示例数据”按钮,直接加载本示例数据集。(或者也可单击“上传数据”按钮,上传需要用到的数据集)
三、QTc的计算
采用Fridericia方法校正计算得到的QTcF:
QTcF <- QT / (RR/1000)^(1/3)
【保留2位小数】
3.1选择QTc计算方法
在“2.QTc计算”标签页右侧的“QTc的计算方法选择”区域的单选列表中选中“Fridericia(弗里德里西亚)提出的计算公式”选项。
3.2单击“执行:QTc计算”按钮。

3.3结果查看
通过鼠标左键滚动页面至下方,可在“结果数据预览”区域查看计算的结果。
可在结果表格中通过QTc列看到计算得到的QTc,以及通过QTc_use列了解QTc是使用的什么方法计算的,以及也可以直接查看QTcF列看到QTcF的数值。

四、数据衍生
衍生获得HR、RR、QT、QTc的基线列(BL)、较基线变化列(Δ)、基线QTc的总体平均值以及个体基线相对于总体基线的差值、衍生相对基线变化的值相对于安慰剂组变化的值列(ΔΔ)。
数据假设:
- TRT=0的干预措施为安慰剂
- NTIME=0的为基线
数据衍生过程:
- 基线的QTc:QTc_BL=QTc_(NTIME=0)
- ΔQTc:dQTc=QTc-QTc_BL
- 基线的QTc的均值:Mean_QTc_BL=Mean(QTc_BL)
- 【个体基线的QTc】较的【基线的QTc的均值】的差值:Diff_QTc_BL=QTc_BL-Mean_QTc_BL
- ΔΔQTc(观测值):ddQTc=dQTc_(TRT=1, NTIME=i) -dQTc_(TRT=0, NTIME=i)
【衍生过程中保留两位小数】
4.1.鼠标左键单击页面左侧的”3.数据衍生”标签页
4.2.选择数据源
在”3.数据衍生”标签页右侧区域,在“使用的数据”区域鼠标左键单击的”使用步骤2的结果数据”按钮,以便将之前在步骤2中计算获得的包含有QTc的数据集作为本步骤的源数据用于进一步的数据衍生。

4.3执行
单击“执行:数据衍生”按钮。(执行约耗时2秒)
4.4结果查看
通过鼠标左键滚动页面至下方,可在“结果数据预览”区域查看计算的结果。
通过QTc_BL列看到计算得到的每个个体基线的QTc的值,通过dQTc列看到计算得到的ΔQTc的值,也可进一步查看其他列了解更多结果。

五、探索性分析
生成用于假设检验相关的图与表。
5.1.鼠标左键单击页面左侧的”4.数据探索性分析”标签页
5.2.选择数据源
在”4.数据探索性分析”标签页右侧区域,在“使用的数据”区域鼠标左键单击的”使用步骤3的结果数据”按钮,以便将之前在步骤3中计算获得的包含有QTc_BL、dQTc等列的数据集作为本步骤的源数据用于进一步的数据衍生。
5.3执行
单击“执行:图与表生成”按钮。(执行约耗时20秒)

5.4结果查看
通过鼠标左键滚动页面至下方,可在“执行后生成的诊断图形和表格”区域查看计算的结果。
页面上会多个图与表格,如果感兴趣某幅图或者某个表是如何制作的,可以单击相关图表右上方的”show”按钮,单击后会显示出制作该图表的具体的R代码。

5.5几个假设的检验的部分图形
药物对心率有无影响?(下图为ΔΔHR对时间图)

不给药和/或安慰剂组的QTc 是否独立于HR?

评估PK/PD间是否存在滞后?


评估ΔQTc与暴露量间的关系是否是线性?

六、建模分析
基于预先定义的模型进行建模分析。
6.1.鼠标左键单击页面左侧的”5.白皮书建议的线性模型:线性+随机截距+随机斜率(个体间变异协方差矩阵:无结构)”标签页
6.2.选择数据源
在标签页右侧区域,在“使用的数据”区域鼠标左键单击的”使用步骤4的源数据”按钮,以便与步骤4使用一样的数据用于分析。
6.3执行
单击“执行:图与表生成”按钮。(执行约耗时10秒)

6.4结果查看
通过鼠标左键滚动页面至下方,可在“执行后生成的诊断图形和表格”区域查看计算的结果。
页面上会多个图与表格,如果感兴趣某幅图或者某个表是如何制作的,可以单击相关图表右上方的”show”按钮,单击后会显示出制作该图表的具体的R代码。

6.5关键的建模结果
参数估计值
| Value | Std.Error | DF | t-value | p-value | |
|---|---|---|---|---|---|
| (Intercept) | 0.075775979 | 1.456875094 | 934 | 0.05201268 | 9.59E-01 |
| CONC | 0.004515276 | 0.000810241 | 934 | 5.57275791 | 3.28E-08 |
| TRT1 | -0.15191312 | 1.701641711 | 77 | -0.08927445 | 9.29E-01 |
| Diff_QTc_BL | -0.16051678 | 0.044061664 | 77 | -3.64300312 | 4.87E-04 |
| NTIME0.5 | -0.45513941 | 1.525367385 | 934 | -0.29838019 | 7.65E-01 |
| NTIME1 | 2.750932948 | 1.599379071 | 934 | 1.72000059 | 8.58E-02 |
| NTIME1.5 | 3.884149583 | 1.620821311 | 934 | 2.39640826 | 1.68E-02 |
| NTIME2 | 5.646425078 | 1.617090321 | 934 | 3.49171905 | 5.02E-04 |
| NTIME3 | 5.555346979 | 1.596908627 | 934 | 3.47881331 | 5.27E-04 |
| NTIME4 | 5.550873504 | 1.558746049 | 934 | 3.56111472 | 3.88E-04 |
| NTIME5 | 5.695379136 | 1.532642791 | 934 | 3.71605123 | 2.14E-04 |
| NTIME8 | -0.70776368 | 1.492392518 | 934 | -0.47424767 | 6.35E-01 |
| NTIME10 | -0.20714869 | 1.465471256 | 934 | -0.14135295 | 8.88E-01 |
| NTIME12 | -1.09355516 | 1.444457646 | 934 | -0.75706973 | 4.49E-01 |
| NTIME18 | 7.52482236 | 1.426925033 | 934 | 5.27345318 | 1.66E-07 |
| NTIME24 | -1.38182736 | 1.420405274 | 934 | -0.97284021 | 3.31E-01 |
剂量水平的Cmax的几何均值及其对应的ΔΔQTc点估计与置信区间估计值
| Contrast | SE | Lower | Upper | CONC | TRT | |
|---|---|---|---|---|---|---|
| 200mg | 10.35444 | 1.910605 | 7.173505 | 13.53538 | 2326.847 | 1 |
ΔΔQTc对浓度图

6.6结论
本实例数据200mg剂量Cmax的几何均值对应的ΔΔQTc置信区间上限超过的10ms,结果阳性。
七、小结
本文介绍了一个具体的数据的分析的实例。
