楼主: bluefox2008
7907 7

悬赏,大家来看看这个程序哪里出错了 [推广有奖]

  • 1关注
  • 0粉丝

已卖:1111份资源

博士生

22%

还不是VIP/贵宾

-

威望
0
论坛币
1346 个
通用积分
4.9000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
7052 点
帖子
210
精华
0
在线时间
242 小时
注册时间
2007-11-7
最后登录
2022-12-6

楼主
bluefox2008 发表于 2009-8-31 12:14:45 |AI写论文
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 ...
关键词:哪里出错了 warning normal sas数据集 symput 程序 悬赏

沙发
yongyitian 发表于 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

藤椅
sushe1527 发表于 2009-8-31 12:17:05
好多的warning和notes

板凳
zch611407 发表于 2009-8-31 13:38:40
看不透!

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

地板
westlion2 发表于 2009-9-1 21:53:57
晕,看不懂。

7
udjvk2 发表于 2009-10-12 11:26:27
偶也看不懂,.

8
ren12345 发表于 2012-8-27 16:28:56
刚学,看不懂
实践成就未来

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

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