Python模拟ARCH过程

该博客通过Python代码模拟了ARCH(1)过程,展示了如何生成具有条件异方差的序列。左上图展示高斯白噪声,右上图呈现ARCH(1)模型的波动聚团效果,而左下图和右下图则说明了不同均值模型下的条件异方差差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模拟ARCH过程可以更加深入了解导致波动聚团现象的原因是什么。

以ARCH(1)模型为例
代码如下:

"""
Created on Thu Oct 18 23:41:00 2022

@author: pingtouge
"""
import math
from matplotlib import pyplot as plt
import random
#解决pyplot中无法显示中文的情况
plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
plt.rcParams["axes.unicode_minus"]=False
Vt = []
Et = []
E_t = 0 
n = 100  #共生成100个服从高斯分布的随机数
Yt1 = []
Yt2 = []
Yt_1 = Yt_2 = 0


for i in range(n):
    V = random.gauss(0, 1.0)   #添加高斯白噪声,这里设置方差为1
    Vt.append(V)
    E_t = V * math.sqrt(1 + 0.8*(E_t)**2)
    Et.append(E_t)
    Yt_1 = 0.2 * Yt_1 + E_t
    Yt_2 = 0.9 * Yt_2 + E_t
    Yt1.append(Yt_1)
    Yt2.append(Yt_2)
# print(Vt)
# print(Et)
# plt.ylim(-8,8)
# plt.plot(Et)
#plot 1:
plt.subplot(2,2,1)
plt.title('白噪声过程'+r"$v_{t}$")
plt.ylim(-8,8)
plt.plot(Vt)

#plot 2:
plt.subplot(2,2,2)
plt.title(r"$\varepsilon _{t} = v_{t}\sqrt{1+0.8\varepsilon_{ t-1}^{2}}$")
plt.ylim(-8,8)
plt.plot(Et)

#plot 3:
plt.subplot(2,2,3)
plt.title(r"$y_{t}= 0.2y_{t-1}+\varepsilon _{t}$")
plt.ylim(-20,20)
plt.plot(Yt1)

#plot 4:
plt.subplot(2,2,4)
plt.title(r"$y_{t}= 0.9y_{t-1}+\varepsilon _{t}$")
plt.ylim(-20,20)
plt.plot(Yt2)

# 解决title重叠情况
plt.tight_layout()
plt.show()


结果如下:
模拟ARCH过程
左上图1展示的是服从高斯分布(0,1)的100个数,右上图1展现的是ARCH(1)的实现过程,vtv_{t}vt是与εt\varepsilon_{t}εt相独立的白噪声。之所以εt\varepsilon_{t}εt呈现如此图像是因为存在条件异方差,与白噪声无关。左下图2与右下图2展示的是均值模型由于系数的不同导致的条件异方差的不同,在40-80之间图像有较大差别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值