1、验证SAS计算统计量计算过程
2、建模是对于多个变量的处理(探索、哑变量)
3、更适用于算法
----以下是使用sashelp中的iris数据,使用IML计算了样本均值、样本方差、协方差矩阵和样本系数相关矩阵等----
验证则使用了means过程和corr过程。
/*1 载入iris数据*/
data iris;
setsashelp.iris;
run;
/*2 读入矩阵-存储矩阵*/
proc iml;
use iris;
read all var _num_ into ir;
close iris;
store ir;
quit;
/*3 载入矩阵*/
proc iml;
load ir;
/*计算样本均值*/
ir_m=ir[:,];
/*计算x-avg(x):猜测sas是以向量为单位操作的*/
ir_t=ir-ir_m;
/*计算平方*/
ir_svar=ir_t[##,];
/*计算样本方差*/
ir_res=ir_svar[+,];
/*巧妙一点的方法来计算非缺失变量的个数*/
/*ir_row=nrow(ir);*/
ir_r1=ir/ir;
/*为了和proc means 验证,减掉一个自由度,在大样本的时候差异不大*/
ir_row=ir_r1[+,]-1;
/*均方差体现*/
ir_square=sqrt(ir_res/ir_row);
/*print ir_res ir_row ir_square;*/
/*ir_t是每列与均值的差,存储这个结果来计算协方差*/
store ir_tir_square;
quit;
/*4 计算样本协方差*/
proc iml;
load ir_t ;
row=nrow(ir_t);
col=ncol(ir_t);
ir_cov=j(4,4,0);
do i=1 to col;
do j=1 to col;
tem=ir_t[,i]#ir_t[,j];
ir_cov[i,j]=tem[+,]/(row-1);
end;
end;
store ir_cov;
quit;
/*5 计算协方差矩阵*/
proc iml;
load ir_covir_square;
dim=ncol(ir_cov);
ir_idx=j(dim,dim,0);
do i=1 to dim;
do j=1 to dim;
ir_idx[i,j]=ir_cov[i,j]/(ir_square[,i]*ir_square[,j]);
end;
end;
print ir_idx;
quit;
[size=21.3333px]验证:
ods graphics on;
proc corr data=iris(keep= _numeric_) plots=matrix(histogram);
run;
ods graphics off;
结果1:散点图矩阵
结果二:corr过程统计量
结果三:IML计算出的相关系数矩阵