| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> Yule-Walker方程 完整推导过程以及python代码复现 -> 正文阅读 |
|
[游戏开发]Yule-Walker方程 完整推导过程以及python代码复现 |
介绍代码、数据全部免费,都放在我的gitee仓库里面https://gitee.com/yuanzhoulvpi/time_series,想要使用的可以直接到我这个仓库下载。 本文是继python与时间序列(开篇)的第3篇。在找pacf如何计算的时候,发现现在计算pacf都在用Yule-Walker方法,包括在计算AR§的时候也是这个方程。(不是不用别的方法了)。 我在这里把Yule-Walker方法的公式推导写出来,并且把我写的python代码也整理出来。方便参考。 最新的代码在gitee仓库里面:https://gitee.com/yuanzhoulvpi/time_series/blob/master/%E6%A1%88%E4%BE%8B/03python%E5%A4%8D%E7%8E%B0Yule-Walker%E6%96%B9%E7%A8%8B.ipynb 使用Yule-Walker方法计算AR§计算一个均值为0的离散随机时间序列
{
X
i
}
N
\{X_i\} ^ N
{Xi?}N的AR§参数,怎么做? x i + 1 = ? 1 x i + ? 2 x i ? 1 + ? + ? p x i ? p + 1 + ξ i + 1 (1) x_{i+1}=\phi_{1} x_{i}+\phi_{2} x_{i-1}+\cdots+\phi_{p} x_{i-p+1}+\xi_{i+1} \tag 1 xi+1?=?1?xi?+?2?xi?1?+?+?p?xi?p+1?+ξi+1?(1) 1.转置1.1 p=1p=1的时候,公式变成这样
X
i
+
1
=
?
1
x
i
+
?
i
+
1
X_{i+1} = \phi_1 x_i + \epsilon_{i+1}
Xi+1?=?1?xi?+?i+1? 可以使用最小二乘法求解: 1.2 p=2p=2的时候,公式变成这样
X
i
+
1
=
?
1
x
i
+
?
2
x
i
?
1
+
?
i
+
1
X_{i+1} = \phi_1 x_i +\phi_2 x_{i-1} + \epsilon_{i+1}
Xi+1?=?1?xi?+?2?xi?1?+?i+1? ( x 3 x 4 ? x N ) ? b = ( x 2 x 1 x 3 x 2 ? ? x N ? 1 x N ? 2 ) ? A ( ? 1 ? 2 ) ? Φ . \underbrace{\left(\begin{array}{c} x_{3} \\ x_{4} \\ \vdots \\ x_{N} \end{array}\right)}_{\mathbf{b}}=\underbrace{\left(\begin{array}{cc} x_{2} & x_{1} \\ x_{3} & x_{2} \\ \vdots & \vdots \\ x_{N-1} & x_{N-2} \end{array}\right)}_{\mathbf{A}} \underbrace{\left(\begin{array}{c} \phi_{1} \\ \phi_{2} \end{array}\right)}_{\Phi} . b ??????x3?x4??xN??????????=A ??????x2?x3??xN?1??x1?x2??xN?2??????????Φ (?1??2??)??. 和第一个不一样,这个时候上面的等式写成这样: 接下来,假设时间序列是平稳的,所以说自协方差只和滞后多少项相关。利用这个性质,在这个案例里面可以得到这样的等式:
(
A
T
A
)
?
1
=
1
c
o
2
?
c
1
2
(
c
o
?
c
1
?
c
1
c
o
)
(
A
T
A
)
?
1
=
1
c
o
2
(
1
?
r
1
2
)
(
c
o
?
c
1
?
c
1
c
o
)
(
A
T
A
)
?
1
=
1
c
o
(
1
?
r
1
2
)
(
r
o
?
r
1
?
r
1
r
o
)
\begin{gathered} \left(\mathbf{A}^{T} \mathbf{A}\right)^{-1}=\frac{1}{c_{o}^{2}-c_{1}^{2}}\left(\begin{array}{rr} c_{o} & -c_{1} \\ -c_{1} & c_{o} \end{array}\right) \\ \left(\mathbf{A}^{T} \mathbf{A}\right)^{-1}=\frac{1}{c_{o}^{2}\left(1-r_{1}^{2}\right)}\left(\begin{array}{rr} c_{o} & -c_{1} \\ -c_{1} & c_{o} \end{array}\right) \\ \left(\mathbf{A}^{T} \mathbf{A}\right)^{-1}=\frac{1}{c_{o}\left(1-r_{1}^{2}\right)}\left(\begin{array}{rr} r_{o} & -r_{1} \\ -r_{1} & r_{o} \end{array}\right) \end{gathered}
(ATA)?1=co2??c12?1?(co??c1???c1?co??)(ATA)?1=co2?(1?r12?)1?(co??c1???c1?co??)(ATA)?1=co?(1?r12?)1?(ro??r1???r1?ro??)? 又因为这个时间序列是平稳的,所以: A T b = ( c 1 c 2 ) \mathbf{A}^{T} \mathbf{b}=\left(\begin{array}{l} c_{1} \\ c_{2} \end{array}\right) ATb=(c1?c2??) 结合上面的公式,可以有: 以及 虽然可以按照p=2继续计算p=3的情况,但是那样的话,代数计算会变得很复杂。 2. Yule-Waler公式这是一个AR§公式: 2.1 lag=1(滞后1)在左右两边乘上
x
i
x_{i}
xi?,得 i和j是各自的时间索引。把
{
?
j
}
\{\phi_j\}
{?j?}都拎出来,
x
j
x_j
xj?都写到一起,得到这样的公式: 注意到
?
x
i
ξ
i
+
1
?
=
0
\left\langle x_{i} \xi_{i+1}\right\rangle = 0
?xi?ξi+1??=0 因为截距
ξ
\xi
ξ和当前时间是无关的,因此: 再除以N-1,再利用自协方差的平衡性:
c
?
l
=
c
l
c_{-l} = c_{l}
c?l?=cl?,得: 再除以
c
0
c_0
c0?,得: 2.2 lag=2(滞后2)两边乘以 x i ? 1 x_{i-1} xi?1?, 得到: x i ? 1 x i + 1 = ∑ j = 1 p ( ? j x i ? 1 x i ? j + 1 ) + x i ? 1 ξ i + 1 x_{i-1} x_{i+1}=\sum_{j=1}^{p}\left(\phi_{j} x_{i-1} x_{i-j+1}\right)+x_{i-1} \xi_{i+1} xi?1?xi+1?=j=1∑p?(?j?xi?1?xi?j+1?)+xi?1?ξi+1? 然后: 然后: 然后: 然后: 2.3 lag=k(滞后k)两边乘以 x i ? k ? 1 x_{i-k-1} xi?k?1?, 得到: x i ? k + 1 x i + 1 = ∑ j = 1 p ( ? j x i ? k + 1 x i ? j + 1 ) + x i ? k + 1 ξ i + 1 x_{i-k+1} x_{i+1}=\sum_{j=1}^{p}\left(\phi_{j} x_{i-k+1} x_{i-j+1}\right)+x_{i-k+1} \xi_{i+1} xi?k+1?xi+1?=j=1∑p?(?j?xi?k+1?xi?j+1?)+xi?k+1?ξi+1? 然后: 然后: 然后: 然后: 2.4 lag=p(滞后p)两边乘以 x i ? p ? 1 x_{i-p-1} xi?p?1?, 得到: x i ? p + 1 x i + 1 = ∑ j = 1 p ( ? j x i ? p + 1 x i ? j + 1 ) + x i ? p + 1 ξ i + 1 x_{i-p+1} x_{i+1}=\sum_{j=1}^{p}\left(\phi_{j} x_{i-p+1} x_{i-j+1}\right)+x_{i-p+1} \xi_{i+1} xi?p+1?xi+1?=j=1∑p?(?j?xi?p+1?xi?j+1?)+xi?p+1?ξi+1? 然后: 然后: 然后: 然后: 2.5 将上面的公式放一起有: 又因为
r
0
=
1
r_0 = 1
r0?=1,所以可以写成: 最终可以写成这样 3. Yule-Walker公式求解过程
4. python计算Yule-Walker公式代码如下:
参考资料:
阅读更多 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/28 2:42:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |