7-一个实例

     一项多中心、随机双盲、安慰剂和阳性对照的临床试验。以某检测指标较基线变化作为主要疗效指标。采用线性混合效应模型进行主要有效性终点分析。模型中,治疗、访视、他汀类药物使用情况及中心作为固定效应,基线值作为协变量,受试者作为随机效应。方案要求间隔4周进行一次随访,实际共3次访视,但方案在主要指标分析处规定了仅后2次访视进入模型。
      根据既往研究的数据,假定安慰剂组与活性治疗组的方差不同。两次访视结果进入模型,采用的是重复测量的混合效应模型MMRM,需要注意,数据结构需要为纵向结构,各个访视结果放在同一个变量里进入模型。[针对重复测量数据,还可以采用重复测量方差分析,重复测量方差分析的数据集结构为横向结构,但数据集需为横向结构,即不同的时间点对应不同的变量,均放在因变量中,且要求数据均衡,某一个点数据缺失则会被剔除分析]。
     样本量计算采用的仍然是混合效应模型,方案中没有表明实际计算应用的软件或者公式。R中有一个Package可以进行该类样本量的计算:Longpower - Sample Size Calculations for Longitudinal Data,但是这个Package里没有非劣或者优效界值的设置。
     试验共3个组别,分别为试验组、阳性对照组及安慰剂组,组间比较采用顺序检验:
          1. 试验组较安慰剂组优效成立(界值=0)->步骤2 ;
          2. 试验组较阳性对照组非劣效成立(界值=15%)->步骤3 ;
          3. 试验组较阳性对照组优效成立(界值=0)。

      该指标为低优指标,变化值=基线后检测结果-基线结果,差值是负向的。假设检验:
      优效:H_0:μ_T-μ_C ≥0;H_1: μ_T-μ_C <0
      非劣:H_0:μ_T-μ_C ≥0.15;H_1: μ_T-μ_C <0.15

     程序如下:

数据预处理
data test;
length group $200;
set LB;
if XXXX and avisit in ('Week 8' 'Week 12') ; /* 筛选出待分析的检查项目及访视 */
if Treat=1 then Group='Placebo'; /*将活性药物组与安慰剂组区分以便分别估计*/
if Treat in (2,3) then Group='Non-Placebo';
run;

模型
ods trace on;
ods output LSMeans=XX; /* 输出Lsmean */
ods output LSMEstimates=XX; /* 输出组间比较结果,对应Lsmestimate命令 */
ods output diffS=XX; /* 输出组间差值估计,对应diff=control('1') */
proc mixed data=test ;
class subjid treat avisit siteid Group;
model chg = base treat avisit siteid /ddfm = kr solution; /* Solution输出固定效应的参数*/
random int/subject=subjid group=Group; /* 加上Group=后,将按分组进行估计*/
repeated /subject=subjid type=vc group= Group;
lsmeans treat/ cl diff=control('1'); /* 输出各组的估计值以及相对Control的差值 */
lsmestimate treat 'Test vs. Placebo' -1 0 1/ upper testvalue=0 alpha=0.05 ; /* 输出步骤1差值估计值及优效检验结果 */
lsmestimate treat 'Test vs. active' -1 1 0/ lower testvalue=0.15 alpha=0.05 ;/* 输出步骤2差值估计值及非劣检验结果 */
/* lsmestimate treat 'Test vs. active' -1 1 0/ upper testvalue=0 alpha=0.05 ; /* 输出步骤3差值估计值及优效检验结果 */
run;

  • 方案中规定仅后两次访视进入模型。因为治疗效果在8周后稳定,较基线变化8周后单调下降,这应该为未将第一次访视放入模型的原因。这里分别估计了放入3个访视和仅放入后两个访视的结果区别。

/* 放入3个访视的结果*/



因为设置了Group=命令,模型结果红框的部分分别输出了Placebo和Non-Placebo截距和残差,对应Dimensions中的Covariance Parameters=4,如果不加group=,这里的Covariance Parameters=2。

/* 仅放入后2个访视*/


/* 计算Lsmeans */
通过该例顺便验证一下LSmeans的估计,将模型简化,去掉了group=命令及siteid变量方便计算。
proc mixed data=test ;
class subjid treat avisit siteid Group;
model chg = base treat avisit siteid /ddfm = kr solution;
random int/subject=subjid;
repeated /subject=subjid type=vc;
lsmeans treat;
run;


通过估计方程计算出各个受试者的估计值,连续性变量代入所有组别的平均值,Base的平均值为315.558,代入方程后计算平均值:
If Treat=1 then do;
      if Avisit='Week 12‘ then y=85.9603-0.7118*315.558+151.98+7.1469;
      if Avisit='Week 8‘ then y=85.9603-0.7118*315.558+151.98+0;
end;
If Treat=2 then do;
      if Avisit='Week 12‘ then y=85.9603-0.7118*315.558+26.7924+7.1469;
      if Avisit='Week 8‘ then y=85.9603-0.7118*315.558+26.7924+0;
end;
If Treat=3 then do;
      if Avisit='Week 12‘ then y=85.9603-0.7118*315.558+0+7.1469;
      if Avisit='Week 8‘ then y=85.9603-0.7118*315.558+0+0;
end;
proc means data=XX;
var y;
by treat;
run;
模型输出结果和手动计算的结果在小数位后几位有区别,猜测是计算过程中小数位数不同导致。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容