• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

SAS编程-ADaMEfficacy Analysis Flag的两种生成方法

武飞扬头像
野藤_
帮助1

临床试验会针对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。两种方法,各有特点,编程时按自己喜好使用。

感谢阅读, 欢迎关注!
若有疑问,欢迎评论交流!

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgkgafg
系列文章
更多 icon
同类精品
更多 icon
继续加载