全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
1588 2
2014-11-26
悬赏 50 个论坛币 已解决
求达人帮忙,想模拟1000个结构如下的数据集,请问如何做循环存成一个SAS数据集,万分感谢了!

set more off

clear

set memo 700m

set obs 20

generate school=_n

generate u_i=rnormal(0,0)

expand 10

bysort school:generateclassroom=_n

generate u_ij=rnormal(0,1.5)

expand 20

bysort schoolclassroom:generate child=_n

generate u_ijk=rnormal(0,1)

generate temprand=runiform()

egen mother_educ=cut(temprand),at(0,0.5,0.9,1)icodes

label define mother_educ0  "highschool"  1 "college"  2  ">college"

label values mother_educmother_educ

tabulate mother_educ,generate(meduc)

generatescore=7+0*meduc1+0.5*meduc2+1*meduc3+u_i+u_ij+u_ijk

drop  u_i u_ij u_ijk temprand meduc1 meduc2 meduc3

fdasave clindata

savasas using "H:", replace check


最佳答案

笑书神侠1 查看完整内容

楼主的问题我已用SAS帮你实现,程序如下: %Macro randomsurvey(n=,school=,classroom=,child=,bi=,bij=,bijk=,dataset=); options nonotes nosource; %do loop=1 %to &n.; data survey&loop.; length id $ 200; retain _seed_ &loop.; do school=1 to &school.; u_i=&bi*rannor(_seed_); do classroom=1 to &classroom.; u_ij=&bij*rannor(_seed_); do child=1 to &child.; u_ijk=&bijk*rannor(_seed_); co ...
二维码

扫码加我 拉你入群

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

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

全部回复
2014-11-26 15:06:26
楼主的问题我已用SAS帮你实现,程序如下:
%Macro randomsurvey(n=,school=,classroom=,child=,bi=,bij=,bijk=,dataset=);
options nonotes nosource;
%do loop=1 %to &n.;
data  survey&loop.;
length id $ 200;
    retain _seed_ &loop.;
    do school=1 to &school.;
u_i=&bi*rannor(_seed_);
do classroom=1 to &classroom.;
u_ij=&bij*rannor(_seed_);
do child=1 to &child.;
u_ijk=&bijk*rannor(_seed_);
cova=0+(1-0)*ranuni(_seed_);

meduc1=0;
meduc2=0;
meduc3=0;
if 0<cova<0.5 then do; meduc1=1;mother_educ=0;end;
else if cova<0.8 then do; meduc2=1;mother_educ=1;end;
else do; meduc3=1; mother_educ=2;end;
score=7+0*meduc1+0.5*meduc2+1*meduc3+u_i+u_ij+u_ijk;

replicate=&loop.;
id=cats(_seed_,school,classroom,child);
class=input(cats(_seed_,school,classroom),best12.);
            output;
end;
end;
end;
/* keep id classroom school child score mother_educ replicate;*/
run;
%end;
data  &dataset.;
    set  survey: ;
run;
proc datasets lib=work nolist;delete survey:;run;quit;
%Mend;
二维码

扫码加我 拉你入群

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

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

2014-11-26 16:27:38
牛逼!!!!!!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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