穆怀伦
「摘要」在I/II期的肿瘤临床试验中,出于安全性,有效性的考虑,受试者的服药剂量会在试验中变化。为更直观的展示剂量变化对于药物的影响,在统计图表中绘制剂量变化图形显得至关重要。本文将演示如何使用PROC SGPLOT过程HIGHLOW语句,在肿瘤项目泳道图中增加剂量变更的信息。展现HIGHLOW语句与常规泳道图做法的优势。增加剂量变更的泳道图,可以为研究人员提供更多的信息,以便对研究人员了解不同剂量对受试者的影响提供信息,同时可以为选出合适的服药剂量作参考。
「关键词」SAS;泳道图;临床试验;肿瘤
一、引言
近年来,随着国内肿瘤项目临床试验日渐增多。为了高效的开展临床试验,更多的适应性设计被广泛应用到肿瘤I/II期临床项目中。加之出于对受试者的安全性及有效性考虑。同一受试者在试验中,出现试验药物剂量调整的情况普遍存在。如何将剂量调整的信息与原有图表相结合,更清晰明了的展示结果,显得至关重要。
对于一般肿瘤项目中的泳道图,瀑布图,生存分析图等,其目的是从不同角度展现受试者的肿瘤信息。在绘制此类图表时,过程不近相同。但泳道图的绘制过程相较于其它图形更为复杂。泳道图一般包含:药物暴露时间,肿瘤评估时间,肿瘤评估信息,研究药物暴露后的持续反应等信息。其可以很好的展示个体的趋势。然而这些信息需要用不同的符号/颜色组合显示。它在绘制中打破了常规的绘图的方式,需要在一个图中,绘制多个不同图形,已达到最终的目的。在原有的泳道图中加上剂量变化信息,将使得制图过程更加复杂。
PROC SGPLOT过程是SAS 中的重要绘图语句之一,其简洁,方便的语句被更多的人所青睐。随着SAS版本的不断更新,其增加了更多的编程选项与编程,可以更好的绘制复杂的图形以及图形中细节的修订。PROC SGPLOT过程原理是创建各种各样的图,再并将图叠加在一起以生成包含不同类型的图。本文将通过实例,展示如何使用PROC SGPLOT过程HIGHLOW语句实现包含剂量变化信息的泳道图。
二、原理与方法
1.泳道图介绍
在肿瘤学研究中,可以使用类似泳道的条形图直观地模拟受试者的时间-事件(Time-to-Event)数据。
研究人员可以通过泳道图快速检查任何感兴趣的受试者的肿瘤信息,并比较不同治疗组的反应趋势,以及剂量变化对结果的影响。
2. 编码思路
泳道图的绘制方法众多,随着近年来SAS版本不断的更新升级,PROC SGPLOT模块被广泛应用。使用PROC SGPLOT模块绘制泳道图的常规思路,一般为使用HBARPARM先绘制底层柱状图,再使用SCATTER语句绘制图中相应的标识图。
若想通过常规方法,我们是否可以将剂量变更的信息增加到图中呢?实际上我们也可以应用HBARPARM和SCATTER的方法展现剂量变更的信息于图中,但图例中却无法呈现对应的剂量颜色。这导致了,虽然我们可以呈现信息,但绘制的图形,却不严谨的问题。究其根本是HBARPARM语句所绘制的条形图,只能规定条形图的末尾参数,并不能分段绘制。绘制出的剂量变化信息,只能叠加呈现。叠加出来的颜色将与实际赋值的颜色不一致。使得图例不能很好的实现剂量变更的内容。
PROC SGPLOT模块中HIGHLOW语句可以很好的解决这个问题,相较于HBARPARM只能在Y轴中设置一个参数,HIGHLOW语句可以设置条形图的开始位置与结束位置两个参数。我们可以将受试者不同剂量的服药时间信息,按剂量组分别绘制条形图后叠加。从而达到按不同服药剂量及服药天数绘制条形图。继而使用HIGHLOW和SCATTER语句的组合,绘制包含多个与肿瘤反应相关信息的泳道图。在下面的小节中,我们将详细介绍输入数据集,然后描述如何将图的构造分为三个阶段绘制:基本阶段、自定义阶段,并对每个步骤中使用的语句进行解释。
3. 输入数据集结构
在SAS绘图中,输入的数据集结构,直接影响作图的质量与速度。我们需要将涉及的全部数据点,以合适的方式呈现出来。对此我们需要对图1进行拆分,分析图1是如何构成的:
1) 反应服药信息的bar 图
2) 反应肿瘤评估的scatter图
3) 反应结束研究原因的scatter图
因此我们需要在数据集中体现的数据点为:
SUBJID:受试者识别号;
TRT01A:实际服药剂量;
TRTSDT:首次服药天数;
TRTEDT:末次服药天数;
CRDY:肿瘤评估首次被评为CR(Complete Response)的天数;
PRDY:肿瘤评估首次被评为PR(Partial Response)的天数;
SDDY:肿瘤评估首次被评为SD(Stable Disease)的天数;
PDDY:因受试者疾病进展退出的天数;
DDDY:因受试者死亡退出的天数;
ONGOING:是否持续;
POS:Y轴标签参数;
之前提到,我们需将每个人的不同剂量信息分别绘制后想叠加。故我们的输入数据集,应为每个受试者,每个服药剂量一条记录的访视所呈现。对于肿瘤评估信息和结束研究原因的信息,我们只需在该受试者对应的记录中呈现即可。这里需要说明的是结束研究原因。由于該信息可能与末次服药信息想一致,为了美观起见,我们可以将该信息的天数增加1-2天,使得结束研究原因信息与原条形图相分离。
创建数据集:
data swimmer;
input SUBJID $ TRT01A $ TRTSDT TRTEDT CRDY PRDY SDDY PDDY DDDY ONGOING POS;
datalines;
001 560QD 1 403 . 231 . . . . -10
002 560QD 1 675 . 300 . . . . -10
003 240BID 1 90 . . . . . . -10
003 360BID 91 220 . 150 . . . . .
004 360BID 1 55 . . 40 .55 . -10
005 360BID 1 391 . . 60 391 . . -10
006 360BID 1 114 . 56 . . . 116 -10
007 240BID 1 589 . . . . . . -10
007 360BID 589 617 590 . . . . . . .
;
run;
基本階段:
PROC SGPLOT过程可以将图叠加在一起以生成许多不同类型的图,叠加图的前提条件是各图的分组只能有一种。所以选好分组条件很关键,在泳道图的绘制过程中,条形图是泳道图的基础图,在绘制条形图时我们选用TRT01A(实际服药剂量)变量作为分组变量,该分组变量也是泳道图中的唯一分组变量。我们首先画出泳道图的基础图。其展现了关于受试者的三个信息点:
1)服药时间(以条形图长度表示)。
2)接受研究药物的受试者数量(以条形条数表示)。
3)服药剂量信息(用颜色条表示)
对应代码:
procsgplotdata=swimmer nocycleattrs;
highlowy=subjidlow=TRTSDT high=TRTEDT / type=bar group=trt01a;
yaxisreverse;
run;
HIGHLOW:
创建表示高值和低值的浮动垂直或水平线条或条的显示。分别用Y,LOW,HIGH,TYPE,GROUP 规定Y轴变量,起始值,终止值,条形图类型,分组信息。
根据数据集中的信息,SAS在后台将根据TRT01A分组信息,分别绘制每条记录的条形图,并将其叠加呈现。
自定义阶段
我们已经通过基础图绘制了受试者的服药信息,但显然图中缺乏泳道图的主要信息点:肿瘤评估信息,以及受试者研究结束原因。这些信息需要通过绘制不同类型的散点图,与基础图相结合来呈现。将不同的信息以不同的颜色,形状绘制散点图,并将绘制好的散点图与条形图相叠加。通过SCATTER语句已将肿瘤评估信息,以及受试者研究结束原因以散点图的形式所呈现。不同颜色及图形代表不同的信息。
其展现了关于受试者的六个信息点:
1)若受试者最佳肿瘤评估为CR,对应的日期。
2)若受试者最佳肿瘤评估为PR,对应的日期。
3)若受试者最佳肿瘤评估为SD,对应的日期。
4)若受试者由于PD(疾病进展)退出试验。
5)若受试者由于死亡退出试验。
6)若受试者仍在试验中。
对应代码:
procsgplotdata=swimmer nocycleattrs;
……
scattery=subjidx=CRDY / markerattrs=(symbol=starfilledsize=20pt color=orange);
……
run;
SCATTER:
SCATTER创建散点图。其分别用Y,X参数规定Y轴变量,X轴变量,决定绘制散点的位置。由于HIGHLOW语句我们已经使用了TRT01A(实际服药剂量)变量作为分组变量。故在绘制散点图时我们不能使用分组变量绘图。我们需将使用散点图的信息,分别绘制散点图,如例子中呈现的那样,6个信息点我们使用了6个scatter语句。在SCATTER中使用markerattrs选项定义symbol,color, size语句来定义散点的形状,颜色,大小信息。
本例中最后一个SCATTER语句,是为了展现SCATTER语句的另一用途。即我们可以使用SCATTER语句,将想要呈现的文体信息放于图中规定位置。上图以subjid为例,通过定义Y,X参数,规定subjid信息呈现的位置,并使用markerchar定义想要在图中呈现的变量,用markercharattrs对呈现信息样式进行编辑。
三、总结
通过演示我们使用PROC SGPLOT语句中HIGHLOW与SCATTER语句绘制了泳道图。我们的编程思路同常规泳道图做法相一致,但数据集结构与语句与常规做法稍有不同。使用HIGHLOW语句绘图相比HBARPARM绘图更加的灵活,他可以自由定义条形图的位置。同时HIGHLOW语句可以更好的与SCATTER,SERIES,NEEDLE等图相兼容。这使得我们可以根据试验的需求,在原有的泳道图上增加更多的信息,如肿瘤评估CR,PR的持续时间,肿瘤类型等信息。
由包含剂量变化信息的泳道图,我们可以从图中清晰的看到,不同受试者的剂量变化信息,也能看到对于剂量变化导致的疗效,安全性的结果。使得在研究肿瘤项目时,研究人员可以更好的分析剂量变化对于试验的影响,从而为寻找合适剂量提供了更多的帮助。
对于在临床试验中的图,增加一个信息点,可能会导致数据集结构发生很大变化。但在I/II期临床试验中,研究人员在探索药物信息时,往往需要跟多的信息作为参考。以图的形式可以更直观的展现出这些信息,从而帮助研究人员更好的做决策。所以在选择绘图语言时,我们应该选择更灵活,更兼容,更全面的语句绘制图形。这样不仅可以更多的展现出所需要的信息,而且在试验进行中也可以更方便的增加新的信息。
四、结论
随着SAS的版本不断更新,越来越多的强大绘图工具被引入。
本文通过演示,只需更改几个简单的PROC SGPLOT语句,可以使得在绘制泳道图时,增加剂量变化信息。使得泳道图的绘制更加灵活。在I/II期的肿瘤临床试验中,可以为研究者提供更多的安全性,有效性信息。
参考文献
[1] Stacey D. Phillips, Inventiv Health Clinical, Princeton, NJ. “Swimmer Plot: Tell a Graphical Story of Your Time to Response Data Using PROC SGPLOT”
[2] SAS® 9.4 ODS Graphics Procedures Guide
[3] SAS® 9.4 Graph Template Language User’s Guide
[4] SAS® 9.4 Graph Template Language Reference