全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
7849 7
2009-08-31
悬赏 10 个论坛币 已解决
957  proc sort data=shibor.r_log out=r_log;
958  by date;
959
960  data sma;
961  set r_log;
962
963  data a;
964  set r_log;
965  rsum+r_log;
966
967  data a ;
968  set a;
969  mu=(rsum-lag20(rsum))/20;
970  sum+(r_log-mu)**2;
971
972  data b(keep=date r_log mu sma);
973  merge a a(firstobs=21  rename=(sum=sum_1));
974  sma=(sum_1-sum)/20;
975  sma=sqrt(sma);
976  sma=lag20(sma);
977  mu=lag20(mu);
978
979  data b;
980  set b;
981  where year(date)=2009;
982  run;
983
984  /* 产生1000列标准正态分布的随机数,每列取其第800个观测值 */
985  proc iml;
986  rv=normal(repeat(0,800,1000));
987  /*产生1000列标准正态分布的随机数,每列有800个观测值。这里1000实际上是随机模拟的次数,选择每次模拟的第800个随机数*
987! /
988  rv=t(rv[800, ]);  /*选择矩阵rv的第800列元素组成的行向量,并转置为列向量 */
989  create rv1 from rv[colname='normal']; /*创建SAS数据集rv1,并将列变量设定为normal */
990  append from rv;
WARNING: 当前正处理的加引号的字符串比 262 个字符长。您可能有不平衡的引号。
991  quit;
992
993  /*蒙特卡罗模拟法计算2009年每个交易日的VaR和相应的事后检验结果。2009年每个交易日的VaR分别存储在数据集var_mont5和va
993! r_mont1 中, 事后检验结果存储在数据集bt_mont5和bt_mont1 中*/
994  %macro mont(prob, aa);
995  %do i=1 %to 60;  /* 2009年每个交易日,即数据集b中有60个观测值*/
989  create rv1 from rv[colname='normal']; /*创建SAS数据集rv1,并将列变量设定为normal */
                                       ------------------------------------------------
                                       49
NOTE 49-169: 加引号的字符串后的标识符的含义可能在将来的 SAS 版本中更改。建议在加引号的字符串和标识符之间插入空格。

996
997  data a;
998  set b;
999  if _n_=&I;
1000  call
1000! symput('mu'
               -
               49
1000! , mu); /*创建宏变量mu,其值为相应交易日的收益率均值 */
NOTE 49-169: 加引号的字符串后的标识符的含义可能在将来的 SAS 版本中更改。建议在加引号的字符串和标识符之间插入空格。
1001  call symput('sma', sma);
1002
1003  data r;
1004  set rv1;
1005  r=&mu+&sma*normal;
1006
1007  proc sort data=r;
1008  by r;
1009
1010  data r;
1011  set r;
1012  if _n_= int(1000*&prob);
1013
1014  data a;
WARNING: 当前正处理的加引号的字符串比 262 个字符长。您可能有不平衡的引号。
1015  merge a r;
1016  if r_log <r then flag=1;
1017  else flag = 0;
1018
1019  proc append base=var_mont&aa  data=a; /*数据集var_mont&aa中变量r就是相应交易日的VaR,r_log为当日的对数收益率 */
1020
1021  %end;
1022
1023  data bt_mont&aa; /*事后检验结果数据集 */
1024  set var_mont&aa  nobs=nobs; /*nobs实际不等于60 */
1025  module="mont+&prob";
1026  prob=&prob;
1027  records=nobs; /*2009年的交易日为60天 */
1028  default+flag;
1029  shouldbe= round(records*&prob);
1030  if _n_=nobs ;
1031
1032  %mend mont;
1033  %mont(0.05, 5);
1034  %mont(0.01, 1);
1035  run;

最佳答案

yongyitian 查看完整内容

Please try to remove anything like /* .... */ The log file shows lines 985-991 run well proc iml; rv=normal(repeat(0,800,1000)); rv=t(rv[800, ]); create rv1 from rv[colname='normal']; append from rv; quit; The following is Log file 13 proc iml; NOTE: IML Ready 14 rv=normal(repeat(0,800,1000)); 15 rv=t(rv[800, ]); 16 create rv1 from ...
二维码

扫码加我 拉你入群

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

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

全部回复
2009-8-31 12:14:46
Please try to remove anything like  /* ....  */
The log file shows lines 985-991 run well
     proc iml;
        rv=normal(repeat(0,800,1000));
        rv=t(rv[800, ]);
        create rv1 from rv[colname='normal'];
        append from rv;
     quit;
The following is Log file
13   proc iml;
NOTE: IML Ready
14   rv=normal(repeat(0,800,1000));
15   rv=t(rv[800, ]);
16   create rv1 from rv[colname='normal'];
17   append from rv;
18   quit;
NOTE: Exiting IML.
NOTE: The data set WORK.RV1 has 1000 observations and 1 variables.
NOTE: PROCEDURE IML used (Total process time):
      real time           0.21 seconds
      cpu time            0.21 seconds
二维码

扫码加我 拉你入群

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

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

2009-8-31 12:17:05
好多的warning和notes
二维码

扫码加我 拉你入群

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

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

2009-8-31 13:38:40
看不透!
二维码

扫码加我 拉你入群

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

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

2009-8-31 21:09:36
有些看不懂989 句的create是从哪里来的?为什么你的每个过程或者data 步结束后都没有run;呢?好像再忙也不会如此吧。
二维码

扫码加我 拉你入群

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

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

2009-9-1 21:53:57
晕,看不懂。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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