SAS编程-ADaM:Efficacy Analysis Flag的两种天生方法

源代码 2024-9-7 02:32:36 127 0 来自 中国
临床试验会针对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。两种方法,各有特点,编程时按本身喜欢使用。
感谢阅读, 欢迎关注!
如有疑问,欢迎品评互换!
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-12-4 16:21, Processed in 0.182160 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表