自协方差函数的Matlab实现

自协方差函数的Matlab实现

自协方差函数简介

对于满足均值遍历性和二阶矩遍历性的平稳时间序列一次具体观测值 { x t , t = 1 , 2 , ⋯   , N } \left\{x_{t}, t=1,2, \cdots, N\right\} {xt,t=1,2,,N}, 总体平均可转化为时间平均. 因此, 样本自协方差函数也通常可由下面两种方式计算得到:
{ γ ^ k = 1 N ∑ t = 1 N − k ( x t − μ ^ ) ( x t + k − μ ^ ) , 0 ⩽ k ⩽ N − 1 γ ^ k = γ ^ − k , 1 − N ⩽ k ⩽ − 1 , (1) \begin{cases}\hat{\gamma}_{k}=\frac{1}{N} \sum_{t=1}^{N-k}\left(x_{t}-\hat{\mu}\right)\left(x_{t+k}-\hat{\mu}\right), & 0 \leqslant k \leqslant N-1 \\ \hat{\gamma}_{k}=\hat{\gamma}_{-k}, & 1-N \leqslant k \leqslant-1,\end{cases}\tag{1} {γ^k=N1t=1Nk(xtμ^)(xt+kμ^),γ^k=γ^k,0kN11Nk1,(1)

{ γ ^ k = 1 N − k ∑ t = 1 N − k ( x t − μ ^ ) ( x t + k − μ ^ ) , 0 ⩽ k ⩽ N − 1 γ ^ k = γ ^ − k , 1 − N ⩽ k ⩽ − 1 (2) \begin{cases}\hat{\gamma}_{k}=\frac{1}{N-k} \sum_{t=1}^{N-k}\left(x_{t}-\hat{\mu}\right)\left(x_{t+k}-\hat{\mu}\right), & 0 \leqslant k \leqslant N-1 \\ \hat{\gamma}_{k}=\hat{\gamma}_{-k}, & 1-N \leqslant k \leqslant-1\end{cases}\tag{2} {γ^k=Nk1t=1Nk(xtμ^)(xt+kμ^),γ^k=γ^k,0kN11Nk1(2)
其中, μ ^ \hat{\mu} μ^ 为平稳序列的均值的估计值. 在实际应用中, 样本自协方差函数的计算通常采用第一种形式.

其原因在于, 利用 ( 1 ) (1) (1) 式定义的样本自协方差函数能使得 N N N 阶的样本自协方差矩阵
Γ ^ N = ( γ ^ k − j ) , k , j = 1 , 2 , ⋯   , N \hat{\boldsymbol{\Gamma}}_{N}=\left(\hat{\gamma}_{k-j}\right), k, j=1,2, \cdots, N Γ^N=(γ^kj),k,j=1,2,,N
正定.

为了计算自协方差矩阵(ACM),一种最直接的方式是利用两层循环嵌套结构计算,但此方式过于“原始”,对于长期序列计算速度相对比较慢.

注意到, 只要
y j = x j − μ ^ , j = 1 , 2 , ⋯   , N y_{j}=x_{j}-\hat{\mu}, \quad j=1,2, \cdots, N yj=xjμ^,j=1,2,,N
不全为零, 矩阵
A = ( 0 ⋯ 0 y 1 y 2 ⋯ y N − 1 y N 0 ⋯ y 1 y 2 y 3 ⋯ y N 0 ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ y 1 ⋯ y N − 1 y N 0 ⋯ 0 0 ) N × ( 2 N − 1 ) \boldsymbol{A}=\left(\begin{array}{cccccccc} 0 & \cdots & 0 & y_{1} & y_{2} & \cdots & y_{N-1} & y_{N} \\ 0 & \cdots & y_{1} & y_{2} & y_{3} & \cdots & y_{N} & 0 \\ \vdots & & \vdots & \vdots & \vdots & & \vdots & \vdots \\ y_{1} & \cdots & y_{N-1} & y_{N} & 0 & \cdots & 0 & 0 \end{array}\right)_{N \times(2 N-1)} A=00y10y1yN1y1y2yNy2y30yN1yN0yN00N×(2N1)
是行满秩的. 样本自协方差矩阵可表示为
Γ ^ N = ( γ ^ 0 γ ^ 1 ⋯ γ ^ N − 1 γ ^ 1 γ ^ 0 ⋯ γ ^ N − 2 ⋮ ⋮ ⋮ γ ^ N − 1 γ ^ N − 2 ⋯ γ ^ 0 ) = 1 2 A A T \hat{\boldsymbol{\Gamma}}_{N}=\left(\begin{array}{cccc} \hat{\gamma}_{0} & \hat{\gamma}_{1} & \cdots & \hat{\gamma}_{N-1} \\ \hat{\gamma}_{1} & \hat{\gamma}_{0} & \cdots & \hat{\gamma}_{N-2} \\ \vdots & \vdots & & \vdots \\ \hat{\gamma}_{N-1} & \hat{\gamma}_{N-2} & \cdots & \hat{\gamma}_{0} \end{array}\right)=\frac{1}{2} \boldsymbol{A} \boldsymbol{A}^{\mathrm{T}} Γ^N=γ^0γ^1γ^N1γ^1γ^0γ^N2γ^N1γ^N2γ^0=21AAT

于是,得益于计算机对矩阵并行运算的优化.我们可以采用数组化编程思想,利用矩阵运算,轻松且快速的计算出自协方差矩阵.

上机实验报告

数据集

为了感受不同时间序列的统计性质,选用以下两种数据集分别建模.

  • 洗发水销售数据集:shampoo.csv
  • 上证指数数据集:SH600031.csv

实验过程

洗发水销售数据集

该数据集描述了每月洗发水的销售量

单位是销售计数,有36个观察值.

分布图

程序源代码

filename='shampoo.csv';
data = readmatrix(filename, 'OutputType', 'single');
x=data(1:36,2);
y=x-mean(x);
A=zeros(length(y),2*length(y)-1);
for i=1:length(y)
    A(i,length(y)-i+1:length(y)-i+length(y))=y;
end
ACM=1/length(y).*A*A';

运行结果分析:
每月销售量时序图

自协方差函数

自协方差函数最大值:2.156610448813604e+04

自协方差函数最小值:-6.896521602231956e+03

从图像及数据可以发现:洗发水月销售量具有较明显的子相关性.

股票信息数据集

该数据集描述了上证指数每日的开盘,最高,最低,收盘,成交量,成交额.
取连续365天的开盘价进行建模.

分布图

程序源代码

filename='SH600031.csv';
data = readmatrix(filename, 'OutputType', 'single');
x=data(1:365,3);
y=x-mean(x);
A=zeros(length(y),2*length(y)-1);
for i=1:length(y)
    A(i,length(y)-i+1:length(y)-i+length(y))=y;
end
ACM=1/length(y).*A*A';

运行结果分析:
每日上证指数开盘价时序图

自协方差函数图

自协方差函数最大值:0.031476924974325

自协方差函数最小值:-0.013756630793134

从图像及数据可以发现:股市的开盘价没有明显的自相关性.


从时序图及自协方差函数图都能明显看出以上两个时间序列均为非平稳时间序列.

参考文献

周永道,王会琦,吕王勇.时间序列分析及应用.北京:高等教育出版社,2015.

数据集:

SH600031.csv

shampoo.csv


本人非统计专业,若有不妥之处, 恳请批评指正.

作者:图灵的猫

作者邮箱: turingscat@126.com

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图灵猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值