全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4016 4
2010-05-13
大家好!
求助大家,我需要这样一个数据,即5维正态分布随机数
其中第一列数据服从N(33,10^2) ,第二列数据服从N(90,22^2),第三列N(110,56^2),第四列N(30,8^2),第五列N(10,14^2).而且已知其相关矩阵。
在sas中,怎么实现这个目地,恳求高人指教,十分感激!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-5-13 12:58:02
data RV;
retain _seed_ 0;  
mu1=33;
sigma1=10;
mu2=90;
sigma2=22;
do _i_ = 1 to 1000;
Normal1 = mu1 + sigma1* rannor(_seed_);
Normal2 = mu2 + sigma2* rannor(_seed_);
output;end;
drop _i_ _seed_ mu1 mu2 sigma1 sigma2;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-5-13 13:27:52
proc iml;
do i=1 to 1000;
mu={33,90};*均属向量;
sigma={10 0,0 22};*协方差阵;
call vnormal(result,mu,sigma,i);
end;
print result;
quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-5-13 14:52:04
用PROC IML写一个试试

/**********************************************
***********根据你的相关矩阵生成数据******
**********************************************/
DATA CORR_SIM (TYPE=CORR);
_TYPE_='CORR';
INPUT x1-x5;
CARDS;
1.00      .         .         .       .
  .66  1.00   .        .       .
  .57       .55  1.00    .       .
  .70   .69    .54  1.00    .
  .56   .59    .47    .64  1.00
  ;
RUN;
/******************************************************
*** 做因素分析找到 Factor Patter matrix **********
******************************************************/
PROC FACTOR DATA=CORR_SIM NFACTORS=5;  /** Factor analysis for extracting the FACTOR PATTERN MATRIX */
RUN;

/*************************************************************************
*** 用IML去做Monte Carlo simulation ****
*************************************************************************/
PROC IML;
FP={0.85188         0.04587        -0.30847        -0.33294         0.25729,
0.85186        -0.06014        -0.20368         0.46520         0.11323,
0.74929         0.60742         0.25954         0.01339        -0.04530,
0.87324        -0.15869        -0.13920        -0.09279        -0.42928,
0.78866        -0.38599         0.46073        -0.05283         0.11814};                  
*FP是你从因素分析中得到的Factor Pattern Matrix;

UNCORR_DATA=RANNOR(J(1000,5,12345));   /*** 生成不相关的5列正态分布数据 *****/

UNCORR_DATA=UNCORR_DATA`;               /****  矩阵转置  *****/

CORR_DATA=FP*UNCORR_DATA;            

CORR_DATA=CORR_DATA`;


X1=CORR_DATA[,1]*10+33;
X2=CORR_DATA[,2]*22+90;
X3=CORR_DATA[,3]*56+100;
X4=CORR_DATA[,4]*8+30;
X5=CORR_DATA[,5]*14+10;

CORR_DATA=X1||X2||X3||X4||X5;

CREATE CORRDATA FROM CORR_DATA [COLNAME={X1 X2 X3 X4 X5}];
APPEND FROM CORR_DATA;

/*******************************************************
*****  检查结果看看  *********************
*******************************************************/
PROC CORR DATA=CORRDATA;
VAR X1-X5;
RUN;
PROC MEANS DATA=CORRDATA;
VAR X1-X5;
RUN;


注:不知道有没有更简洁一点的方法。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-5-13 19:30:59
感谢edumetric大侠!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群