SAS编程:计算LS Mean控制组的设置

2021-04-11  本文已影响0人  野藤_

最近遇到的一张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文档,这里先不介绍了,后续再进行补充。

以上。

若有疑问,欢迎评论区交流!

上一篇 下一篇

猜你喜欢

热点阅读