1316 0

[问答] 利用proc arima写一个宏程序分析数据,如何在宏中生成表格 [推广有奖]

  • 0关注
  • 0粉丝

高中生

5%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
52 点
帖子
7
精华
0
在线时间
31 小时
注册时间
2013-11-13
最后登录
2014-1-4

楼主
黑猫警长就是我 发表于 2013-12-13 14:34:07 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我现在有一个时间序列数据,是ARMA(2,1)的,生成它的程序如下:
  1. data ARMA_2_1;
  2.    a0 = rannor(12345);
  3.    a1 = rannor(12345);
  4.    z1 = 0.05;
  5.    do i = -100 to 1000;
  6.       a2 = rannor( 12345 );
  7.       z2 = 0.3*z1 + a2 + 0.5*a1 +0.4*a0 ;
  8.       if i > 0 then output;
  9.       a0 = a1;
  10.           a1 = a2;
  11.       z1 = z2;
  12.    end;
  13.    drop  a0 a1 a2 z1;
  14. run;
复制代码
我现在需要利用proc arima在多组参数(p,q)下对这个数据进行分析,获取每一组(p.q)值所对应的AIC值,再生成一组表格,以p为行,q为列,表中是对应的AIC值。我写了一个很烂的宏来完成上述事情,因为这个宏提取每一组参数的AIC值并生成表格做得很麻烦。程序如下:
  1. %macro ARMA_analysis(p_up,q_up);
  2.    ods listing close;
  3.    ods html close;
  4.    %let iii=0;
  5.    %do p_value = 0 %to &p_up;
  6.       %do q_value = 0 %to &q_up;
  7.             proc arima data=ARMA_2_1 ;
  8.            identify var = i;
  9.            estimate p=&p_value q=&q_value
  10.                       outstat = aic&iii;
  11.                               /*将含有AIC的数据提取到aic&iii数据集*/                  
  12.         run;
  13.                 quit;
  14.          /*从aic&iii中单独提出AIC值
  15.                    并加上p,q信息           */
  16.                 data final&iii;
  17.                    set aic&iii;
  18.                    where _STAT_ eq  'AIC';
  19.            p = &p_value;
  20.            q = &q_value;
  21.            drop _STAT_ _TYPE_;
  22.         run;
  23.                 %let iii=%eval(&iii+1);
  24.                 %end;
  25.         %end;
  26.         %let iii=%eval(&iii-1);
  27.     /*合并各组参数对应的AIC值*/
  28.         data final;
  29.            set
  30.               %do jjj = 0 %to &iii;
  31.                      final&jjj
  32.                   %end;       
  33.                 ;
  34.         run;
  35.         ods html;
  36.      /*利用列链表的方式画表格*/
  37.         proc freq data = final;
  38.            weight _VALUE_;
  39.            tables p*q / nopercent nocol norow;
  40.         run;       
  41. %mend  ARMA_analysis;
复制代码
提取aic值这个步骤应该不用单独的data步,而可以用ods把每组的aic值输出到某个数据集,无奈我不会=。=
然后最后生成的表格也很牵强,很丑,有一行total去不掉。
请问各位应该怎么优化?
二维码

扫码加我 拉你入群

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

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

关键词:ARIMA 程序分析 ROC ima 宏程序 程序 如何

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-24 12:04