临床试验会针对Efficacy Endpoints举行Efficacy分析,这些分析是针对特定的Efficacy Paramters。纳入Efficacy分析的人群,通常是基线以及基线后至少一次访视值不为空 (With non-missing values at baseline and at least on post-baseine visit)。
在SAP中,分析人群会有明白界说。在ADaM中,会创建特定Flag变量来标识每一个分析人群。比方,Full Analysis Set对应加入随机化或加入入组的人群,对于符合条件的受试者,变量FASFL赋值为“Y”。
1. Efficacy Analysis Flag阐明
Efficacy分析是基于Parameter-Level的,即针对受试者的特定Paramter举行。只要特定Paramter满意,基线以及基线后至少一次访视值不为空的条件,就将受试者的这个Paramter纳入分析。对于历时较长或多阶段试验,Efficacy分析可能是分阶段举行。
基线值生存在Base变量中,访视检测值生存在AVAL变量中,只要基线后访视中,有一条记载这两个变量都不为空,即n(base, aval)=2大概chg ne .,该受试者的Paramter就满意条件,纳入Efficacy分析。(chg = aval - base)
以一个3期试验举例,该试验主体研究为3年时间,对应的访视值AVISIT为Baeline、Month 12、Month 24、Month 36,对应的AVISITN为0、12、24、36,天生4个Efficacy Flag:
- EFFPFL: Efficacy Parameter-Level Flag
- EPM12FL: Eff Parameter-Level Flag at Month12
- EPM24FL: Eff Parameter-Level Flag at Month24
- EPM36FL: Eff Parameter-Level Flag at Month36
这篇文章介绍两种天生Efficacy Analysis Flag的方法,分别使用Data步和Proc SQL举行实现。
2. 方法1:Data步
获取Efficacy Analysis Flag的团体思路是,在per usubjid per paramcd的维度下,筛选出基线后访视AVAL和BASE值都不为空的记载,将对应的Flag赋值为“Y”,然后再将Flag拼接回原数据集中。
Efficacy分析只会针对特定的Paramter,SAP中会规定好,一样平常也都有详细条件举行筛选,比方parcat1 = "XXXXX",paramcd in ("XX1" "XX2" "XX3"),举例代码中就不再演示。
Data 步实现的思路是,筛选出符合条件的USUBJID-PARAMCD组合,为其赋上对应的Flag,然后去重,末了拼接回数据集。
演示代码如下:
**effpfl;data effpfl; set adxx; where avisitn > 0 and chg ne.; effpfl = "Y"; keep usubjid paramcd effpfl; proc sort nodupkey; by usubjid paramcd;run;**epm12fl;data epm12fl; set adxx; where 0<avisitn<=12 and chg ne.; epm12fl= "Y"; keep usubjid paramcd epm12fl; proc sort nodupkey; by usubjid paramcd;run;**epm24fl;data epm24fl; set adxx; where 0<avisitn<=24 and chg ne.; epm12fl= "Y"; keep usubjid paramcd epm24fl; proc sort nodupkey; by usubjid paramcd;run;**epm36fl;data epm24fl; set adxx; where 0<avisitn<=36 and chg ne.; epm36fl= "Y"; keep usubjid paramcd epm36fl; proc sort nodupkey; by usubjid paramcd;run;**Combine flags above;data adxx1; merge adxx effpfl epm12fl epm24fl epm36fl; by usubjid paramcd;run;整个过程,看起来长了些,但是条理清晰,容易明白。
3. 方法2:Proc SQL
获取Efficacy Analysis Flag的团体思路肯定不会变,但是基于自身语法的特性,SQL实现起来比力简便。
主体步伐依旧是左拼接,只不外各个Flag的天生聚合在子查询中,通过group by以及聚合函数max实现了去重的功能。
proc sql noprint; create table adxx2 as select a.*, b.effpfl, b.epm12fl, b.epm24fl, b.epm36fl from adxx as a left join ( select usubjid, paramcd, "Y" as effpfl, max(case when avisitn<=3012 then "Y" else " " end) as epm12fl, max(case when avisitn<=3024 then "Y" else " " end) as epm24fl, max(case when avisitn<=3036 then "Y" else " " end) as epm36fl from adxx where avisitn > 0 and chg ne. group by usubjid, paramcd ) as b on a.usubjid = b. usubjid and a.paramcd = b.paramcd group by a.usubjid, a.paramcd, a.avisitn ;quit;若只天生EFFPFL变量,子查询中需添加distinct选项去重。由于对于保存下来的EFFPFL记载,值都为“Y”,聚合函数会直接保存 1条记载,没有聚合函数,就必要添加去重选项。
SQL步伐,浓缩简便,易读性上差了点。
这里注意一个小点,这个点不常碰到,SQL拼接天生新变量时,新变量名不能在原数据中存在,假如存在会造成赋值失败。
总结
文章介绍了Efficacy Analysis Flag,以及对应的两种天生方式——Data步和Proc SQL。两种方法,各有特点,编程时按本身喜欢使用。
感谢阅读, 欢迎关注!
如有疑问,欢迎品评互换! |