上一篇文章已经将差分方程的相关理论推导说明,本节将用代码将某些结论可视化。
一、一阶差分方程
1、递归法求解差分方程
给定y在t=-1期的值,以及w在t=0,1,2,...时期的值,则通过递归可以求出各时期的y值,代码如下
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
A = [0.5,1,2] #设定Φ分别小于、等于、大于1
t = 1000 #给定总的时期为1000
for i,a in enumerate(A):
y = [0] #给定y在t=-1期的值
print(f'动态模拟Φ={a}:')
print('y-1=',y[-1])
for j in range(0,t+1):
w = np.random.randn() #这里w是一个随机变量
y_ = a*y[-1] + w #由上一期计算当期
y.append(y_) #将当期加载y列表的最后
print(f'y{j}=',y[-1]) #将动态模拟过程打印出来
#这个条件判断是为了输出好看一点
if i == 1:
num = f'51{i+2}'
#plt.subplot(int(num))
elif i == 2:
num = f'51{i+3}'
else:
num = f'51{i+1}'
plt.subplot(int(num))
plt.plot(range(-1,t+1),y,'-') #将y的整个变化过程可视化
plt.title(f'y(t) = {a}*y(t-1)+w(t)')
动态模拟过程结果如下
变化趋势可视化:
从图形中可以看到,Φ<1时,y围绕均值0波动,波动的幅度(方差)也基本没有改变,所以可以判断该时间序列是平稳的;Φ=1时,数据表现出明显的随机游走特征,有明显的符号集群现象,即前一期为‘+’,则后一期有很大概率也为‘+’;前一期为‘-’,则后一期很大概率也为‘-’,这是一个明显的单位根过程; Φ>1时