曲线下面积(Area under Curve,AUC)的计算,在很多场合都会遇到。
比方说,小编就遇到过以下几种情况:
统计机器学习模型拟合效果评价(配合ROC曲线)
药动学中的药物浓度-时间曲线
恩格尔系数/集中系数/集中曲线
上图是比较典型的一个药时曲线,随着时间的进展,血液中药物浓度逐渐增加,又随着代谢逐渐降低。药时曲线下的面积,就是临床试验中 I 期试验和BE试验的一个重要的研究指标。
当然,其他场景中用到的曲线下面积,计算策略基本也是类似的。我们常采用一种叫做“梯形法”的方法。即如下图,将整个曲线下面积拆分为一个个梯形,然后叠加起来,即为曲线下面积。
这一计算,在Stata中十分的简便。
及借助Stata的PK模块,使用pkexamine命令。
命令也很简洁:
pkexamine time concentration, graph
time,即为横轴变量;concentration,即为纵轴变量。使用时,可以根据自己的需要替换。graph参数,即为绘图参数,免去额外繁琐的绘图。
结果如下:
如果只是做普通的曲线下面积,则读取第一列数据(红框标示);如果是真实的PK数据,则会用到后面几列数据,根据末尾3个测量值做拟合后的从0到inf的面积。
那么,完整的PK数据怎么实现的?我们打开个pk中计算曲线下面积的例子,非常简单。
//导入数据
webuse pkdata, clear
//计算药时曲线下面积
by id, sort : pkexamine time concA
//绘制药时曲线
by id, sort : pkexamine time concA, graph
//绘制药时曲线网格
line concA time, by(id)
//同一图中的AB两药曲线的组合绘制
line concA concB time, by(id)
//曲线下面积参数批量转存
pkcollapse time concA concB, id(id) keep(seq) stat(auc)
我们依次来看一下效果:
//导入数据
webuse pkdata, clear
以下打开的是使用2×2交叉设计收集的AB两药的时间浓度数据:
//计算药时曲线下面积
by id, sort : pkexamine time concA
软件默认会根据“by id”语句算出所有id下的AUC值:
//绘制药时曲线
by id, sort : pkexamine time concA, graph
语句后添加“, graph”之后,会依次对药时曲线制图,下图仅为示例:
//绘制药时曲线网格
line concA time, by(id)
//同一图中的AB两药曲线的组合绘制
line concA concB time, by(id)
//曲线下面积参数批量转存
pkcollapse time concA concB, id(id) keep(seq) stat(auc)
如果你有一批AUC需要单独计算,那使用这个模块就很方便了。最重要要单独加一个参数stat(auc),否则会把一系列pk参数全都报告给你。
以下为20个样本各自的AUC:
如果你去掉了参数stat(auc),
//曲线下面积参数批量转存
pkcollapse time concA concB, id(id) keep(seq)
那你会获得如下辣么多,怕不怕:
动手试试吧,几行代码,大作用。
评论列表