全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3313 2
2014-06-01
SAS初学级
历史模拟法的程序老师给的看不懂 。。
二维码

扫码加我 拉你入群

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

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

全部回复
2014-6-1 16:44:30
我不懂你说的模拟是模拟的什么东西?模拟就只是一个循环而已啊~~
二维码

扫码加我 拉你入群

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

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

2015-1-17 23:30:02
*Avec ces deux méthodes ,vous n'aurez pas besoin de proc iml */
/*1 ère méthode pour calculer la var hs */
data zozo;
input p1 p5;
cards;
run;
%macro insert_percentile;
proc sql;
insert into zozo
values (&p1,&p5);
quit;
%mend insert_percentile;
data toto;
do t = 1 to 500;
rdt= ranuni(-2)*t;
output;
end ;
run;
%macro creation_percentile;
ods listing close;
%do i=0 %to 249;
data tata ;
set toto (firstobs=%eval(1+&i) obs=%eval(250+&i));
run;
proc univariate data= tata;
var rdt;
output out= percentile p1= p1 p5=p5;
run;
data _null_;
set percentile;
call symput ('p1',p1);
call symput ('p5',p5);
call execute ('%insert_percentile');
run;
%end;
%mend creation_percentile ;
%creation_percentile;
ods listing;
*création d'une table temporaire zozo,qui va servir plutard à insérer les
percentiles ;
*macro 'insert_percentile' permettant d'insérer les percentiles estimés dans
la table temporaire zozo avec sql;
*ici j'ai pris une table 'toto' quelconque ressemblant à peu près à la table
que vous allez utilisez,juste pour décrire ce que je fais;
*création de la macro 'creation_percentile' ,qui va utiliser les facilités des
data step: firstobs et obs pour faire une table glissante;
* j'utilise ici 'ods listing close' pour bloquer toute sortie dans ma fenêtre
de résultats,sans cette option on aurait compter 250 icones 'proc univariate'
dans la fenêtre de résultats;
*je prends le soin d'utiliser 'ods listing' à la fin de l'exécution de ma macro
pour débloquer la fenêtre de résultats que j'avais bloqué;
*création de macro variables contenant les percentiles avec 'call symput' dans
le step 'data _null_';
*cérise sur le gateau je fais tourner une procédure sas dans une étape data
grace à la commande 'call execute' ;
/*2ème méthode plus subtile ,plus short, et plus fast que la précédente , car
je code en sql/macro*/
data zozo;
input p1 p5;
cards;
run;
data toto;
do t = 1 to 500;
rdt= ranuni(-2)*t;
output;
end ;
run;
%macro creation_percentile;
ods listing close;
%do i=0 %to 249;
data tata ;
set toto (firstobs=%eval(1+&i) obs=%eval(250+&i));
run;
proc univariate data= tata;
var rdt;
output out= percentile p1= p1 p5=p5;
run;
proc sql;
select p1,p5 into :p1,:p5 from percentile ;
insert into zozo
values (&p1,&p5);
quit;
%end;
%mend creation_percentile ;
%creation_percentile;
ods listing;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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