我运行以下几行:
DATA abc;
INPUT AA BB CC DD EE;
CARDS;
...
;
RUN;
PROC GLM DATA = abc;
MODEL AA BB CC DD EE = / NOUNI;
REPEATED conditions 5 (1 2 3 4 5) / PRINTE;
MEANS / TUKEY ALPHA = 0.05;
RUN;
但是MEANS
语句适用于类变量(“错误:此效果中只允许使用类变量。” SAS说。)。反过来,我只定义了回答(试验):MODEL AA BB CC DD EE = / NOUNI;
。有谁能够帮我?
P.S。
(基本上我的设计在CrossValidated解释。)
答案 0 :(得分:1)
根据我对SAS的经验,我非常肯定你想要的东西在SAS中并不容易 - 但我相信它是可能的。如果需要,手动确认很容易。
考虑您提供的链接中的数据,我将其读入SAS程序......
DATA raw_lph;
INPUT idnum cntrl a b c d;
CARDS;
20 5.1 12.42 10.1 9.58 8.54
21 4.07 9.96 14.12 10.79 12.24
22 3.94 4.92 13.04 15.96 9.37
25 0.6 3.24 8.94 0.61 3.62
26 1.72 13.96 2.48 3.44 3.12
27 0.53 3.36 1.4 4 0.81
28 0.97 3.88 2.33 3.77 3.31
31 0.15 4.05 1.45 2.44 1.47
32 0.58 1.92 2.47 2.33 4.92
33 1.02 6.03 4.4 4.8 3.88
;
RUN;
要对它进行更传统的方差分析,你需要转置它,我做了。
DATA transposed_lph;
SET raw_lph;
RETAIN idnum;
ARRAY varnames[5] $ _TEMPORARY_ ('cntrl' 'a' 'b' 'c' 'd');
ARRAY steps[5] cntrl--d;
DO i=1 TO 5;
well=varnames[i];
pctlph=steps[i];
OUTPUT;
END;
KEEP idnum well pctlph;
RUN;
现在,下面有两个块,一个使用更传统的ANOVA格式,另一个设置为使用REPEATED语句。
PROC GLM DATA=transposed_lph;
CLASS well idnum;
MODEL pctlph = well idnum well(idnum);
LSMEANS well /ADJUST=TUKEY E=well(idnum) PDIFF=ALL;
QUIT;
PROC GLM DATA=raw_lph;
MODEL cntrl--d = /NOUNI;
REPEATED Well;
QUIT;
处理重复措施的全部意义在于处理主体内的变异,而不是主体之间。第一个模型失败,因为它没有错误项,因为我们成功地用三个项来计算模型中的所有方差。这些术语是血液所处的状态,主体是什么,以及嵌套在穹顶内的井的效果 - 或者实质上是每个受试者的每个孔之间的差异 - 也就是在受试者变异中。
如果您查看第一组的输出,您会看到最终得到:
Source DF Type III SS Mean Square F p-value
well 4 134.5175200 33.6293800 . .
idnum 9 487.1931300 54.1325700 . .
well(idnum) 36 255.2066000 7.0890722 . .
使用LSMEANS声明,我要求Tukey调整好的方法; E = well(idnum)告诉系统使用well(idnum)作为这些方法的误差项。现在,看看第二个PROC GLM的输出。
Source DF Type III SS Mean Square F Value Pr
Well 4 134.5175200 33.6293800 4.74 0.0035
Error(Well) 36 255.2066000 7.0890722
如您所见,重复的度量标识了相同的错误陈述。但是,据我所知,如果不使用CLASS语句,则无法从SAS中的任何建模过程中获取方法。因此,解决这个问题的一种方法是重构我尝试过的模型并“游戏系统”。或者,您可以手动计算Tukey HSD。可能有一个R包比SAS更好地处理它。
为了它的价值,我在Minitab上学习了建模,它似乎实际上很好地处理了建模,所以它可能值得一看。
HTH!