登录
首页精彩阅读SAS中的协方差分析
SAS中的协方差分析
2017-05-29
收藏

SAS中的协方差分析

所谓的协方差分析,就是在方差分析的基础上加上协变量这一额外因素,而方差分析则只考虑组变量这一因素。协变量可以有一个,也可以有多个。

在这篇文章中,我只讲述单变量的协方差分析。在医学上通常用来判断治疗前后带来的差异性结果是否与治疗前的结果是否存在线性关系,如果存在线性关系,则通过线性模型去掉这一因素所带来的影响。

以人体增重为例,假如在服用某种药物之前体重为X,服用药物之后体重为X1,则减肥效果通常是用Y = X - X1来表示。那么X则称之为协变量。因为在比较不同组间的减肥结果的时候我们需要去除服药前体重的不同而带来的误差,协方差模型就是通过对Y和X以及组变量CLASS建立一个线性回归模型,通过模型来求得X的回归系数β,然后通过Y-β(X - X平均值)得到调整之后的Y,通过这一调整,使得由于不同的疗前体重所带来的误差被剔除,相当于使得大家在疗前都处于同一水平上,进而可以以调整后的Y对组间的减肥效果进行方差分析

SAS里,可以通过各种过程步来进行求解,例如reg过程、glm过程。

我就选glm过程,以下述数据作为例子简单写一下如何通过SAS来进行协方差分析


例:

比较三种猪饲料A1,A2,A3对猪增重的影响,测得每头猪的增重(Y)和出生重(X),数据列在表4-3中。问三种饲料对猪增重是否有显著不同的效果?


表4-3    不同饲料对猪增重的影响



首先确定X为出生体重,组变量为class,反应变量为Y,建立回归模型,如下所示:

data tmp;

input x y @@;

class = scan("A1,A2,A3",ceil(_n_/8));

if class ='A1' then do;

k1 =0; k2 =1;

end;

else if class ='A2' then do;

k1 =1; k2 =0;

end;

else do;

k1 =0; k2 =0;

end;

cards;

16 8513 83 11 6512 76 12 80 16 91 14 84 17 90

17 9716 9018 10018 9521 10322 10619 9918 94

22 8924 9120 8323 9525 10027 10230 10532 110

;

run;

ods output ParameterEstimates = stat;

proc glm data = tmp;

model y =  x k1 k2;

run;

ods output close;

得到结果如下所示:


模型的x的回归系数在0.05的水平上是明显不为0的,因此可以认为x与y存在线性关系,那么接下来就需要去掉这一因素不同水平差异而带来的变异了。
proc sql noprint;

create table tmp1 as

        select a.*,mean(a.x) as mean_X,b.Estimate as beta, y -  beta * (a.x - calculated                     mean_X) as y1 label = "调整后的Y"

          from tmp a,stat b

          where b.Parameter = 'x';
quit;

可以看到上述sql过程得到调整之后的y,剔除了不同水平差异的X之后,那么接下里就可以进行方差分析了,这里就不再赘述了。


数据分析咨询请扫描二维码

客服在线
立即咨询