楼主: euphemia6noyes
1895 4

sas 重复模拟1000次 [推广有奖]

  • 0关注
  • 0粉丝

小学生

64%

还不是VIP/贵宾

-

威望
0
论坛币
30 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
109 点
帖子
6
精华
0
在线时间
4 小时
注册时间
2013-11-27
最后登录
2016-9-26

楼主
euphemia6noyes 发表于 2013-11-27 21:43:09 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
各位前辈好:
      初学sas,遇到一个棘手问题:如何对以下程序重复模拟1000次。以下是回归分析求参数,为计算参数的准确率,老师要求重复模拟1000次,急,万分感谢。
data X1;/*生成6个独立的服从标准正态分布的随机数*/

do i=1 to 200;
X1=0+1*rannor(0);
output;
end;
run;

data X2;

do i=1 to 200;
X2=0+1*rannor(0);
output;
end;
run;

data X3;

do i=1 to 200;
X3=0+1*rannor(0);
output;
end;
run;

data X4;

do i=1 to 200;
X4=0+1*rannor(0);
output;
end;
run;

data X5;

do i=1 to 200;
X5=0+1*rannor(0);
output;
end;
run;

data X6;

do i=1 to 200;
X6=0+1*rannor(0);
output;
end;
run;
data X; /*将六个变量生成的随机数合并在一起*/
merge X1 X2 X3 X4 X5 X6;
by i;
run;

data yifu;
do i=1 to 200;
yifu=0+4*rannor(0);
output;
end;
run;
data X0;/*将X中的X1-X6选出来*/
set X;
keep X1 X2 X3 X4 X5 X6;
run;
data yifu0;/*将yifu选出来,以便后面生成矩阵*/
set yifu;
keep yifu;
run;


proc iml;/*将X0数据集变成矩阵x */
    use X0;
    read all var _num_ into XX;
   print XX;
    use yifu0;/*将yifu数据集变成矩阵yifusilo */
    read all var _num_ into yifusilo;
   print yifusilo;

   reset print;/*矩阵的生成和运算命令*/
beta={1, 0.8, 0.6, 0, 0, 0};
Y=XX*beta+yifusilo;/*生成Y*/
print Y;
create YY from Y;/*将矩阵Y转换成数据集YY*/
append from Y;
quit;

data bijiao;
merge X0 YY;
run;
/*
data bijiao;
(rename=(COL1=Y0));
set bijiao;
run;
proc print data=bijiao;
run;
*/
proc reg data=bijiao;
model COL1=X1-X6/selection=stepwise sle=0.10 sls=0.10;
run;
quit;
proc reg data=bijiao;
model COL1=X1-X6/selection=rsquare
      best=2 cp aic bic ;
run;

二维码

扫码加我 拉你入群

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

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

关键词:Selection Election stepwise Rsquare output 回归分析 正态分布 准确率 程序 如何

沙发
A072560 发表于 2013-11-27 21:56:31
蒙特卡罗设计;
%MACRO A;
%DO I=1 %TO 1000;

你的程序
%END;
%MEND A;
%A;

即:
%maroc a;
%do loop=1 %to 1000;

data X1;/*生成6个独立的服从标准正态分布的随机数*/

do i=1 to 200;
X1=0+1*rannor(0);
output;
end;
run;

data X2;

do i=1 to 200;
X2=0+1*rannor(0);
output;
end;
run;

data X3;

do i=1 to 200;
X3=0+1*rannor(0);
output;
end;
run;

data X4;

do i=1 to 200;
X4=0+1*rannor(0);
output;
end;
run;

data X5;

do i=1 to 200;
X5=0+1*rannor(0);
output;
end;
run;

data X6;

do i=1 to 200;
X6=0+1*rannor(0);
output;
end;
run;
data X; /*将六个变量生成的随机数合并在一起*/
merge X1 X2 X3 X4 X5 X6;
by i;
run;

data yifu;
do i=1 to 200;
yifu=0+4*rannor(0);
output;
end;
run;
data X0;/*将X中的X1-X6选出来*/
set X;
keep X1 X2 X3 X4 X5 X6;
run;
data yifu0;/*将yifu选出来,以便后面生成矩阵*/
set yifu;
keep yifu;
run;


proc iml;/*将X0数据集变成矩阵x */
    use X0;
    read all var _num_ into XX;
   print XX;
    use yifu0;/*将yifu数据集变成矩阵yifusilo */
    read all var _num_ into yifusilo;
   print yifusilo;

   reset print;/*矩阵的生成和运算命令*/
beta={1, 0.8, 0.6, 0, 0, 0};
Y=XX*beta+yifusilo;/*生成Y*/
print Y;
create YY from Y;/*将矩阵Y转换成数据集YY*/
append from Y;
quit;

data bijiao;
merge X0 YY;
run;
/*
data bijiao;
(rename=(COL1=Y0));
set bijiao;
run;
proc print data=bijiao;
run;
*/
proc reg data=bijiao;
model COL1=X1-X6/selection=stepwise sle=0.10 sls=0.10;
run;
quit;
proc reg data=bijiao;
model COL1=X1-X6/selection=rsquare
      best=2 cp aic bic ;
run;

%end;
%mend a;
%a;

藤椅
euphemia6noyes 发表于 2013-11-28 11:38:25
A072560 发表于 2013-11-27 21:56
蒙特卡罗设计;
%MACRO A;
%DO I=1 %TO 1000;
谢谢您,可以做啦,不过%macro小写运行不了,改成大写%MACRO就可以啦

板凳
respringwa 发表于 2013-11-29 10:05:34
学习了

报纸
A072560 发表于 2013-11-30 20:49:01
euphemia6noyes 发表于 2013-11-28 11:38
谢谢您,可以做啦,不过%macro小写运行不了,改成大写%MACRO就可以啦
怎么可能

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-8 18:58