proc ttest类,默认组问题

时间:2017-10-11 19:59:48

标签: class sas t-test

我想使用proc ttest比较两组的平均值,我成功地完成了以下操作。

proc ttest;
class group;
var score;
run;

但是,此代码仅假设使用group = 0作为默认组进行观察。因此,t-statistics基于Mean(具有组的0的分数= 0)减去平均值(具有组的obs的得分= 1)来计算。但是,我想反过来说。

它只会改变t-statistics的符号,但这正是我想要做的。

只需添加一个选项,是否可以选择这样做?

我知道如果我制作了另一个与我的组变量完全相反的虚拟变量,我本可以做到的。但是,我不想创建更多虚拟变量。

1 个答案:

答案 0 :(得分:2)

ORDER=DATA将告诉SAS根据遇到值的时间对类变量进行排序。因此,如果1值早于0值,则它将是比较中的第一个。

例如:

data for_ttest;
  call streaminit(7);
  do group = 0 to 1;
    do _n_ = 1 to 50;
      score = rand('NORMAL',1,0.5)+group;
      output;
    end;
  end;
run;

proc sort data=for_ttest;
  by descending group;
run;

proc ttest data=for_ttest order=data;
  class group;
  var score;
run;

没有ORDER=DATA,它的行为与您所看到的一样,但有了它,1就是第一组。

您还可以将ORDER=FORMATTED与格式合并。

proc format;
  value groupf
  1="Group 1 (Value=1)"
  0="Group 2 (Value=0)"
  ;
quit;
proc ttest data=for_ttest order=formatted;
  class group;
  format group groupf.;
  var score;
run;

PROC FORMAT中的标签无关紧要,除此之外,它们必须按字母顺序排序。遗憾的是PRELOADFMT选项在PROC TTEST中不可用,因此您无法使用NOTSORTED中的PROC FORMAT技巧,即使使用原始值也可以使用此功能(虽然如果真的想要的话,你可以使用非打印字符搞乱排序顺序。