全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
9957 7
2015-10-13
悬赏 666 个论坛币 未解决
数据描述:
一共3列,第一列为北美公司代码,GVKEY;
                  第二列为年份,YEAR;(每个公司基本拥有10-15年的连续观测值,少数公司只有2-3年观测值
                  第三列为公司的一个指标,VOL;这个变量是需要进行时间序列分析的变量。

目的:
根据下图的公式(ARIMA (1,1)),计算出VOL的估计值。

输出要求:
共四列,第一列为公司代码,GVKEY;第二列为年份,YEAR;
第三列为每个公司每一年VOL估计值的相对变化

第四列为每个公司每一年VOL估计值与观测值的差别

第五列 第六列 第七列为 θ0 θ1 θ2 三个系数(每个公司的θ都应该是相同的)

注:公司大概有3万多,一共有22万个观测值。
多谢各位大侠出手相助,小女在此奉上666作为感谢,祝大家工作学习一切顺利。大家可以用任何类似结构的面板数据跑程序,只需要给我代码就可以。
多谢

二维码

扫码加我 拉你入群

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

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

全部回复
2015-10-14 22:33:15
之前写过一个arima模型代码
你看看
data jiangxi_popula;
input year renkou;
label renkou="人口数"  year="年份";

cards;
1978 3182.82
1979 3228.98
1980 3270.2
1981 3303.92
1982 3348.35
1983 3394.5
1984 3457.89
1985 3509.8
1986 3575.76
1987 3632.31
1988 3683.88
1989 3746.22
1990 3810.64
1991 3864.64
1992 3913.09
1993 3966.04
1994 4015.45
1995 4062.54
1996 4105.46
1997 4150.33
1998 4191.21
1999 4231.17
2000 4148.54
2001 4185.77
2002 4222.43
2003 4254.23
2004 4283.57
2005 4311.24
2006 4339.13
2007 4368.41
2008 4400.10
2009 4432.16
2010 4462.25
2011 4488.44
2012 4503.93
2013 4522.15
;
run;
data jiangxi_popula_model;
set jiangxi_popula;
where year le 2009;
run;

proc gplot data=jiangxi_popula_model;
/*title "江西人口历年数据";*/
plot renkou*year;
symbol i=spline v=start c=red;
run;
/*检查其平稳性检验不通过  差分*/
proc arima data=jiangxi_popula_model;
identify var=renkou stationarity=(adf=1);
run;
data jiangxi_popula_dif2;
set jiangxi_popula_model;
z=renkou;
difz=dif(z);
difz2=dif(difz);
label  z="人口数据"  difz="人口数据一阶差分"  difz2="人口数据二阶差分";
run;
/*检查其平稳性*/
proc gplot data=jiangxi_popula_dif2;
plot z*year;
plot difz*year;
plot difz2*year;
symbol i=spline v=star ci=red cv=bib;
run;
proc arima data=jiangxi_popula_dif2;
identify var=difz stationarity=(adf=1);
run;
/*人口数据二阶差分的白噪声检验  若检验通过则建立模型  
建立模型例子如下  以下是差分后假设数据通过白噪声检验的建模步骤*/
proc arima data=jiangxi_popula_dif2;
identify var=difz2 stationarity=(adf=1);
run;
/*bic定阶   模型最优识别*/
proc arima data=jiangxi_popula_dif2;
  identify var=difz2  minic perror=(8:11);
run;
/*预测五年的数据*/
proc arima data=jiangxi_popula_dif2;
identify var=z(2) nlag=4;
estimate q=1;
forecast lead=9 out=outvalue id=year;
run;

data forexport;
set outvalue;
fortotal=forecast;
label z="人口";
put fortotal;
run;
/*图形*/
proc gplot data=forexport;
    plot z*year fortotal*year/overlay;
   symbol1 i=spline v=star c=red;
   symbol2 i=spline  v=circle c=green ;
run;

data xx1(keep=year active active_model per );
set xx;
active_model=1000*model;
err=abs(active-active_model);
per=err/active;
format per percent8.2;
run;

data  outvalue_1(keep=year z FORECAST RESIDUAL per);
set  outvalue;
where RESIDUAL ne .;
RESIDUAL=abs(RESIDUAL);
per=RESIDUAL/z;
format  per percent8.2;
run;

二维码

扫码加我 拉你入群

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

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

2015-10-16 09:46:39
luoyexu@126.com 发表于 2015-10-14 22:33
之前写过一个arima模型代码
你看看
data jiangxi_popula;
你好,感谢您的回复!我已经看完了您的代码,但是发现您这里只是对一个变量做了arima,而我需要根据gvkey分组对数据分别进行arima。请问您了解关于sas分组运行的命令吗?
二维码

扫码加我 拉你入群

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

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

2015-10-16 13:38:02
你可以按照longitudinal data analysis来做这个。 然后每一个组的covariance strucuture是 ARMA(1, 1)。
proc mixed;
但如果你要做3万个公司同时一起做。那估计要等很长很长很长时间了吧。所以不是很建议。
二维码

扫码加我 拉你入群

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

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

2015-11-19 10:26:12
Interesting! Thank you!!
二维码

扫码加我 拉你入群

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

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

2015-11-19 10:27:29
Interesting! Thank you!!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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