生成指定相关性的多个正态分布的变量的样本数据:
DATA A (TYPE=CORR); _TYPE_='CORR';
INPUT X1-X3;
CARDS;
1.00 . .
.5 1.00 .
.5 .5 1.00
;
run;
PROC FACTOR N=3 OUTSTAT=FACOUT;
run;
DATA PATTERN; SET FACOUT;
IF _TYPE_='PATTERN';
DROP _TYPE_ _NAME_;
RUN;
PROC IML;
USE PATTERN; *USE语句:打开入SAS数据集;
READ ALL VAR _NUM_ INTO F; *READ:将打开的SAS数据集中的数据读入IML并形成矩阵,每个变量读入后形成一个列向量,列向量名为原先的变量名;
F=F`; *转置;
DATA=RANNOR(J(10000,3,0)); *** J函数:R=J(M,N,'元素'),m是矩阵的行数,n是矩阵的列数,元素是矩阵中的元素。注意用J函数生成的矩阵的每一个元素都取同一个值。;
DATA=DATA`; *** 转置;
Z = F*DATA; *** * 矩阵相乘,得到相关性矩阵 ;
Z = Z`; *** 转置;
X1=Z[,1]*15 + 100; *** 线性转换,得到指定的均值和方差;
X2=Z[,2]*10 + 50;
X3=Z[,3];
***结果输出到数据集A中;
Z=X1||X2||X3;
CREATE A FROM Z [COLNAME={X1 X2 X3}];
APPEND FROM Z;
*** 查看均值标准差偏度峰度;
PROC MEANS DATA=A N MEAN STD SKEWNESS KURTOSIS;
VAR X1 X2 X3;
*** 查看变量间的相关性;
PROC CORR DATA=A NOSIMPLE;
VAR X1 X2 X3;
RUN;
|