我想到的有2个方法:
方法一:应用corr过程,程序如下
DATA raw;
input x1 x2 x3 @@;
CARDS;
171.0 58.5 81.0 154.8 44.5 74.0
175.0 65.0 87.0 164.0 51.0 72.0
159.0 38.0 71.0 165.2 55.0 79.0
155.3 45.0 74.0 164.5 46.0 71.0
152.0 35.0 63.0 159.1 48.0 72.5
158.3 44.5 75.0 164.2 46.5 73.0
;
PROC CORR COV ;
RUN;
方法二:用iml直接计算,程序如下
proc iml;
start cov(x);
n=nrow(x);
x_sum=x[+,];
x_cov=(t(x)*x-t(x_sum)*x_sum/n)/(n-1);
print x_cov;
finish cov;
x={171.0 58.5 81.0,
175.0 65.0 87.0,
159.0 38.0 71.0,
155.3 45.0 74.0,
152.0 35.0 63.0,
158.3 44.5 75.0,
154.8 44.5 74.0,
164.0 51.0 72.0,
165.2 55.0 79.0,
164.5 46.0 71.0,
159.1 48.0 72.5,
164.2 46.5 73.0};
run cov(x);
quit;
在以上的iml,我已经建立里cov模块,以后直接调用就行了。
仅供参考啊!~