时间序列 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}
我想模拟 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}