我想使用proc ttest
比较两组的平均值,我成功地完成了以下操作。
proc ttest;
class group;
var score;
run;
但是,此代码仅假设使用group = 0
作为默认组进行观察。因此,t-statistics
基于Mean
(具有组的0的分数= 0)减去平均值(具有组的obs的得分= 1)来计算。但是,我想反过来说。
它只会改变t-statistics
的符号,但这正是我想要做的。
只需添加一个选项,是否可以选择这样做?
我知道如果我制作了另一个与我的组变量完全相反的虚拟变量,我本可以做到的。但是,我不想创建更多虚拟变量。
答案 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
技巧,即使使用原始值也可以使用此功能(虽然如果真的想要的话,你可以使用非打印字符搞乱排序顺序。