时间序列 Python 中的二阶差分方程

Second order difference equation in Python for Time Series

我想模拟 James Hamilton.In 的“时间序列分析”一书中的二阶差分方程,第 13 页有一个例子:

Y[t] = 0.6Y[t-1] + 0.2Y[t-2] + w[t]

其中 w[t] 是随机标准正态误差。

我的努力在代码中below.But我有两个问题:

1) 正确吗?

2) range(n) 是如何变化的?例如 1:n 或 2:n 或 (0,n-1) 和 (0,n-2) ? 我无法完全理解这些范围如何影响 for 循环。

有什么帮助吗?

import numpy as np
np.random.seed(123)
n = 1000
phi1 = 0.6
phi2 = 0.2
y = w = np.random.normal(size=n)
for t in range(n):
    y[t] = phi1* y[t-1] +phi2* y[t-2] + w[t]

乍一看,您创建的 for 循环从第一个索引开始,当您在 t = 0 时尝试访问 t-2 时,指针会移动到倒数第二个值,我认为这不是是你打算做的,要解决这个问题,请尝试从 2 开始。 如 ==> for t in range(2,n)。 此外,我不太明白你的第二个问题,但据我了解你问数字 T 是如何递增的,顺序是 {1,2,3,...,n}