最近遇到的一张Table,要计算试验组和对照组的LS Mean以及对应的两组差值和p-value,Shell是这样的:
Shell统计师也给了对应的模型参考代码:
proc genmod data=dt;
class trt01pn var1 var2;
model pchg = trt01pn var1 / dist = Normal;
repeat subject = var2 / type=un corrw covb;
lsmeans trt01pn / cl pdiff;
run;
Shell中的小n是根据footnotes中的定义,另外计算。剩余统计量,按示例代码编程都能计算出,使用Ods Output
语句进行输出整理就可以。不过,在表格输出后的Review中,我们发现了一个问题:Difference的值本应该是试验组 - 对照组,默认输出结果是对照组 - 试验组。显然SAS运行过程中,默认试验组为“Control”了。
在计算差值这一类统计量时,一定要注意检查减数、被减数是否与统计要求一致。类似问题,在临床试验统计分析中会不止一次发生。
SAS默认的对照组应该与各分组(本例中为trt01pn)的排序有关,这里无需纠结SAS系统默认是正序排列还是逆序排列,正确的做法是直接在代码中分配好具体的对照组, pdiff=control("0")
。代码如下:
ods output lsmeans=ls diffs=df;
proc genmod data=dt;
class trt01pn var1 var2;
model pchg = trt01pn var1 / dist = Normal;
repeat subject = var2 / type=un corrw covb;
lsmeans trt01pn / cl pdiff=control("0");
run;
ods output close;
输出结果实现了"410 - 0"的要求,结果如下:
Output计算LS Mean也可以Proc Mixed
语句进行实现:
ods output lsmeans=ls diffs=df;
proc genmod data=dt;
class trt01pn var1 var2;
model pchg = trt01pn var1 ;
lsmeans trt01pn / cl pdiff=control("0");
run;
ods output close;
不过,在Mixed语法中,Model语句中没有dist=
选项,也没有repeated
语句。具体如何实现前面Genmod效果,需要参考相关的SAS文档,这里先不介绍了,后续再进行补充。
以上。
若有疑问,欢迎评论区交流!
网友评论