2017-10-11 32 views
0

我想比较两组使用proc ttest的平均值,并且我成功地做了如下。proc ttest class,默认组问题

proc ttest; 
class group; 
var score; 
run; 

但是,这个代码就假定与group = 0作为默认组的意见。因此,t-statistics基于Mean(组= 0的obs得分)减去平均值(组= 1的obs得分)计算。但是,我想反过来。

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

有没有一个选项可以通过简单地添加一个选项来实现?

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

回答

1

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允许这种情况即使在原始值的工作(虽然你可以使用非打印字符乱用排序顺序,如果你真的想要)。