qianping522 发表于 2010-8-6 15:35 
想产生n元标准正态分布随机数的样本数据(这里n=100),n元正态分布相关矩阵的所有元素相同(设ρ=0.2),请问用SAS怎么做,现在最大的疑惑是怎么用SAS生成这个100×100的相关系数矩阵。如果n=3,这个问题很好解决,看下。如果n=100,怎么操作,相关矩阵不用手动输入,而用SAS自动生成?
DATA A (TYPE=CORR);
_TYPE_='CORR';
INPUT X1-X3;
CARDS;
1.00
.
.
.20 1.00
.
.20
.20 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;
READ ALL VAR _NUM_ INTO F;
F=F`;
DATA=RANNOR(J(10000,3,0));
DATA=DATA`;
Z = F*DATA;
Z = Z`;
X1=Z[,1];
X2=Z[,2];
X3=Z[,3];
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;
You need a couple help.
1) programs
2) math
The programs are easy(see below).
A correlation matrix needs to be positive definite.
%let n=10;
%let rho=0.2;
DATA A (TYPE=CORR);
_TYPE_='CORR';
array x(&n);
do i = 1 to &n;
do j=1 to i;
if j<i then x(j)= ρ
else x(i)=1;
end;
output;
end;
keep x:;
;
proc print; run;