楼主: 1006138054
3249 4

sas 循环 [推广有奖]

  • 2关注
  • 0粉丝

高中生

20%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
45 点
帖子
6
精华
0
在线时间
44 小时
注册时间
2012-3-11
最后登录
2016-3-31

楼主
1006138054 发表于 2013-5-3 16:19:05 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
亲们,我最近学习SAS,遇到一个问题,在此请求大家能赐教
问题如下:有一组数据,比如就是:1 2 3 4 5 6 7 8 9 10  
这10个数据,我想通过前5个数据预测第6个数据,利用sas软件可以得到第6个数的预测值和置信区间,然后数据再增加一个(增加的数据是给的第6个原始数据,不是预测的第6个数据哦),就是前6个数据预测第7个数据,同样想得到第7个数的置信区间,以此类推下去、、、就是会得到后5个数据的预测值的置信区间,请问这个该怎么弄?希望强者留下程序、、、灰常感谢!
二维码

扫码加我 拉你入群

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

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

关键词:sas软件 置信区间 数据预测 原始数据 SOSO 软件 置信区间

沙发
ariman911 发表于 2013-5-3 19:03:13
你的信賴區間要如何估計?
要用標準差還是迴歸估計?
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
1006138054 + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

藤椅
1006138054 发表于 2013-5-3 19:57:22
ariman911 发表于 2013-5-3 19:03
你的信賴區間要如何估計?
要用標準差還是迴歸估計?
首先感谢您给我回复!我做的是时间序列数据,建立了一个MA(1)模型,然后在模型的基础上我
forecast lead=5 id=time out=results;
run;
就预测了后5期的预测值了,也给出了95%的置信区间。
我的具体程序如下:
模型绘制时序图、平稳性与随机性检验 、识别
data example;
input status@@;
difx=dif(status);
time=_n_;
cards;
0.97 0.45 1.61 1.26 1.37 1.43 1.32 1.23 0.84 0.89 1.18 1.33 1.21 0.98 0.91 0.61 1.23 0.97 1.10 0.74 0.80 0.81 0.80 0.60 0.59 0.63 0.87 0.36 0.81 0.91 0.77 0.96 0.93 0.95 0.65 0.98 0.70 0.86 1.32 0.88 0.68 0.78 1.25 0.79 1.19 0.69 0.92 0.86 0.86 0.85 0.90 0.54 0.32 1.40 1.14 0.69 0.91 0.68 0.57 0.94 0.35 0.39 0.45 0.99 0.84 0.62 0.85 0.73 0.66 0.76 0.63 0.32 0.17 0.46
;
proc gplot;
plot status*time difx*time;
symbol v=star c=blue i=join;
run;

proc arima;
identify var=status(1,0) minic p=(0:10)q=(0:5);
run;
模型的参数估计
estimate q=1;
run;

estimate q=1 noint;
run;
模型序列的预测
forecast lead=5 id=time out=results;
run;
模型序列的预测图
proc gplot data=results;
plot status*time=1 forecast*time=2 l95*time=3 u95*time=3/overlay;
symbol1 c=black I=none v=star;
symbol2 c=red I=join v=none;
symbol3 c=green I=join v=none l=32;
run;
就是我想得到后面每个数据的预测值的置信区间,虽然实际上呢我也知道这些数据的实际值。你看我给你的程序上已经有了74个数据了,假如说我想利用前70个预测第71个,这个我会。利用前71个预测第72个我也会。这样一个一个很麻烦,因为我的数据太多。有没有可能就是用个循环语句,就是系统会自己每次会往后读取一个数据,然后就能每读取一个就能预测一个。

板凳
playmore 发表于 2013-5-3 20:32:19
1006138054 发表于 2013-5-3 19:57
首先感谢您给我回复!我做的是时间序列数据,建立了一个MA(1)模型,然后在模型的基础上我
forecast lead ...
你在这里也问了啊
如果我给你的宏还可以用的话
就贴出来共享下吧
只不过我一次写完的,也没有测试
你可能要先改改才能用
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
1006138054 + 1 + 1 + 1 热心帮助其他会员
ariman911 + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

报纸
1006138054 发表于 2013-5-3 21:27:09
playmore 发表于 2013-5-3 20:32
你在这里也问了啊
如果我给你的宏还可以用的话
就贴出来共享下吧
我相信您的程序应该没问题,贴出来共享下~~可惜了我这个门外汉只会sas的皮毛、、、、
%macro GetRollArima(SourceTable,TargetTable);
        proc sql noprint;
                select COUNT(*) into :GRA_Num from &SourceTable;
        quit;

        %do GRA_i=1 %to %EVAL(&GRA_Num-5);
                proc arima data=&SourceTable(where=(&GRA_i<=_N_<=%EVAL(&GRA_i+70)));
                        identify var=status(1,0) minic p=(0:10) q=(0:5);
                        estimate q=1 noint;
                        forecast lead=5 id=time out=GRA_Temp;
                quit;

                %if &GRA_i EQ 1 %then %do;
                        data &TargetTable;
                                set GRA_Temp(where=(_N_=71));                /* 把预测值导出至结果表格 */
                        run;
                %end;
                %else %do;
                        data &TargetTable;
                                set &TargetTable GRA_Temp(where=(_N_=71));
                        run;
                %end;
        %end;
%mend;

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

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