目录
任务:绘制的自相关图和偏自相关图。
一、SAS
1.代码
//第一步:随机模拟ARMA模型
//开启数据步,将后面产生的序列值存入数据集b中
data b;
//对初始序列赋值,随机模拟之前的序列值均赋值为0,x_1代表x_t-1
x_1=0;
//启动循环命令
//产生循环指针t变量,从-100开始赋值,循环一次自动加一,直到t=1000循环结束
do t=-100 to 1000;
//每次循环产生一个服从标准正态分布的随机数,赋值给e,e代表随机项,12345是任意给的随机数迭代初始值
e=rannor(12345);
//产生随机项后,给序列t时刻的序列值赋值
x=0.8*x_1+e;
//这次循环即将结束,在下一次循环时,这些序列值又会变成延迟一阶的历史信息,所以在本次循环结束前,将本次产生的序列值赋给下一次要用到的延迟一阶序列值
x_1=x;
//随机模拟会有伪随机的问题,且主要出现在开始阶段,所以多产生了100个随机数(t=-11),对于前100个随机模拟值,忽略不要,只输出最后1000个随机模拟结果
if t>0 then output;
//结束本次循环
end;
//再启动一个data步是简化数据集,只保留我们要的序列数据和时间标识
data b;
set b;
keep t x;
run;
//第二步:绘制自相关图和偏自相关图
//计算随机序列的自相关系数和偏自相关系数,并按照指定延迟阶数输出自相关图和偏自相关图
proc arima data=b;
//调用ARIMA程序中的identify语句,对随机模拟序列进行统计性质的识别,将每个程序的识别结果存入指定的数据集
identify var=x nlag=20 outcov=out1;
run;
//identify的默认输出内容已包含自相关图和偏自相关图,但是默认输出格式中包含2倍标准差的阴影部分。有时候输出信息太多,反而不容易看出拖尾和截尾细节
//如果对细节精度要求更高,可以按照自己指定的格式绘制自相关图和偏自相关图
//绘制自相关图和偏自相关图
symbol c=red i=needle v=none;
proc gplot data=out1;
plot corr*lag partcorr * lag;
run;
2.结果
identify命令输出的数据集包括如下8个信息:
(1)延迟阶数、协方差函数、自相关函数
(2)逆自相关系数
(3)偏自相关系数
(4)自相关图
(5)偏自相关图
二、R语言
1.代码
e=rnorm(1000,0,1)
x=filter(e,filter = 0.8,method="recursive")
ts.plot(x)
acf(x)
pacf(x)
2.结果
(1)时序图
(2)自相关图
(3)偏自相关图
三、python
1.代码
from statsmodels.tsa.ar_model import AutoReg
import numpy as np
# 生成N(0,1)随机正态分布(白噪声)
noise = np.random.randn(1000)
wnoise = (noise-np.mean(noise))/np.std(noise)
# 生成AR(1)线性序列 X(t)=0.8X(t-1)+e(t)
X = [20] # 初值
for i in range(1000):
x2 = 0.8*X[i]+wnoise[i]
X.append(x2)
XX=np.array(X)
from statsmodels.graphics.tsaplots import plot_acf,plot_pacf
plot_acf(XX)
plot_pacf(XX)
2.结果
(1)自相关图
(2)偏自相关图
四、MATLAB
1.代码
x=randn(1,1000);
y=linspace(0,1,1000);
for i=1:999
y(i+1)=0.8*y(i)+x(i);
end
n=1:1000;
m=[n,y];
figure
plot(n,y)
figure
autocorr(y)
figure
parcorr(y)
2.结果
(1)时序图
(2)自相关图
(3)偏自相关图
五、STATA
1.代码
save "D:\个人成长\学业\课程\大三下课程\时间序列分析\作业\2\STATAA.dta"
tsset 日期
ac y
pac y
2.结果
(1)自相关图
(2)偏自相关图
六、EVIEWS
个人见解,还请各位读者批评指正!