楼主: et_fox628
3125 2

[问答] 历史模拟法计算VAR的SAS程序 大神求点拨! [推广有奖]

  • 0关注
  • 0粉丝

初中生

19%

还不是VIP/贵宾

-

威望
0
论坛币
99 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
529 点
帖子
7
精华
0
在线时间
9 小时
注册时间
2014-5-1
最后登录
2015-5-6

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
SAS初学级
历史模拟法的程序老师给的看不懂 。。
二维码

扫码加我 拉你入群

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

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

关键词:历史模拟法 sas程序 VaR 模拟法 看不懂 程序 历史

沙发
intheangel 学生认证  发表于 2014-6-1 16:44:30 |只看作者 |坛友微信交流群
我不懂你说的模拟是模拟的什么东西?模拟就只是一个循环而已啊~~
我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶

使用道具

藤椅
bakoll 发表于 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;

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-10 17:42