美文网首页
SAS编程:计算LS Mean控制组的设置

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

作者: 野藤_ | 来源:发表于2021-04-11 22:22 被阅读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文档,这里先不介绍了,后续再进行补充。

    以上。

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

    相关文章

      网友评论

          本文标题:SAS编程:计算LS Mean控制组的设置

          本文链接:https://www.haomeiwen.com/subject/kfpzkltx.html