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