时间序列学习(1):平稳性、自相关性

本文介绍了时间序列分析的基础知识,包括基本统计概念如协方差和相关系数,以及时间序列的定义。重点讨论了平稳性和自相关性,解释了弱平稳时间序列的条件,并通过实例展示了日收益率的自相关性分析,揭示了沪深300指数日收益的弱相关性特点。相关图的绘制有助于理解时间序列内部不同时间间隔的关联程度。

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


做量化始终逃不掉对时间序列的分析。这个系列笔记是作为小白的我对时间序列分析基础知识的整理。不到之处,多多包涵。

1、基本统计概念

在一切开始之间得先回顾一下统计中的一些基本概念,这将有助于后续介绍时间序列。

协方差

X , Y X,Y X,Y是两个随机变量(分布未知), X , Y X,Y X,Y的总体协方差为:

C o v ( X , Y ) = E [ ( X − μ X ) ( Y − μ Y ) ] Cov(X,Y)=E[(X-\mu_X)(Y-\mu_Y)] Cov(X,Y)=E[(XμX)(YμY)]

其中, μ X , μ Y \mu_X,\mu_Y μX,μY X , Y X,Y X,Y的均值。

基于样本计算协方差:

1 n − 1 ∑ i = 1 n ( X i − X ˉ ) ( Y i − Y ˉ ) \frac{1}{n-1}\sum^n_{i=1}(X_i-\bar{X})(Y_i-\bar{Y}) n11i=1n(XiXˉ)(YiYˉ)

相关系数

X , Y X,Y X,Y是两个随机变量, X , Y X,Y X,Y的总体相关系数为:

ρ ( X , Y ) = E [ ( X − μ X ) ( Y − μ Y ) ] σ X σ Y \rho(X,Y)=\frac{E[(X-\mu_X)(Y-\mu_Y)]}{\sigma_X\sigma_Y} ρ(X,Y)=σXσYE[(XμX)(YμY)]

σ X , σ Y \sigma_X,\sigma_Y σX,σY分别为 X , Y X,Y X,Y的总体标准差。

注意

  • ρ ( X , Y ) \rho(X,Y) ρ(X,Y)取值为1:正相关;0:不相关;-1:负相关;
  • ρ ( X , Y ) \rho(X,Y) ρ(X,Y)只能描述 X , Y X,Y X,Y的线性相关性,不能描述非线性相关性。

基于样本计算相关系数:

ρ ^ ( X , Y ) = ∑ i = 1 n ( X i − X ˉ ) ( Y i − Y ˉ ) ∑ i = 1 n ( X i − X ˉ ) 2 ( Y i − Y ˉ ) 2 \hat{\rho}(X,Y)=\frac{\sum^n_{i=1}(X_i-\bar{X})(Y_i-\bar{Y})}{\sqrt{\sum^n_{i=1} (X_i-\bar{X})^2(Y_i-\bar{Y})^2}} ρ^(X,Y)=i=1n(XiXˉ)2(YiYˉ)2 i=1n(XiXˉ)(YiYˉ)

其中, X ˉ , Y ˉ \bar{X},\bar{Y} Xˉ,Yˉ X , Y X,Y X,Y的样本均值;分母的 n − 1 n-1 n1使得样本协方差为总体协方差的无偏估计。

2、啥是时间序列

从统计角度来讲,时间序列就是随机过程(离散的情形叫随机序列)。因为是在时间轴上的随机变量集合 { r t } \{r_t\} {rt},又叫时间序列。

注意,每一个时间点上是一个随机变量,有自己的分布。

我们平时看到的在时间轴上的曲线图,是给定时间段以及每个时间点的随机变量得到一个观测值后的数值序列。这个数值序列是千万种可能中的一种而已。

下图是沪深300自2018年1月1日至2019年12月13日的走势图。它每个时间点是指数的点数。这个走势图是某个时间序列的一个观测(因为历史只有一个,我们也只能观测到一种现实)。

# 基于聚宽接口
prices = get_price('000300.XSHG', start_date='2018-01-01', end_date='2019-12-13', frequency='daily', fields='close')
fig = plt.figure(figsize=(10, 6))
ax = fig.add_axes([0.2, 0.2, 1.2, 1.2])

ax.plot(prices, color="blue", linewidth=1.5, linestyle="-", label=r'hs300')
plt.legend(loc='upper right', frameon=False)

在这里插入图片描述

光看上图,我们看不出这个时间序列有啥规律可循。2018年年初到年底,有很明显的下降趋势(我们都知道为什么);2019年至今又是一个上涨加盘整的趋势。不管怎么样,对于指数点数来说,我们看不出什么周期性和规律性。

3、平稳性

研究者们觉得,对不那么上蹿下跳的时间序列进行分析应该更加靠谱。如果存在这样的时间序列,那么分析它们也许也能做出一定的预测。研究者们称这类时间序列为平稳时间序列。

要使得时间序列平稳,那么一个较为宽松的条件就是使它们的统计特征保持不变。下面是时间序列弱平稳性的要求:

时间序列 r t {r_t} rt弱平稳的,那么:

  • 均值平稳性:对于任意的 t t t,有 E [ r t ] = μ E[r_t]=\mu E[rt]=μ,其中 μ \mu μ为常数;
  • 二阶平稳性: 对于任意的 t t t及间隔 k k k r t r_t rt r t − k r_{t-k} rtk的协方差 σ ( r t , r t − k ) = γ k \sigma(r_t,r_{t-k})=\gamma_k σ(rt,rtk)=γk仅依赖 k k k σ ( r t , r t ) = γ 0 \sigma(r_t,r_t)=\gamma_0 σ(rt,rt)=γ0不随时间变化,是方差平稳的。

均值平稳性说的是序列在某个固定值上下波动;二阶平稳性说的是,两个子序列波动的相关性。如果时间间隔为0,就是单个时间点自身,它与自己肯定是相关的,其方差(或者波动的幅度)必须是固定的。如果时间间隔为k,那么这相距k的两个时间点的波动相关性只与k有关。

更为严格的,如果任意两个时间段内的子序列中的随机变量的联合概率分布是一样的,那么这类时间序列是严平稳的。这个条件比较难以达到。我们平时要求时间序列达到弱平稳的就够用了。

第2节的指数走势图看上去不那么“平稳”,那么我们看看它的日收益曲线如何(见下图)。

import pandas as pd

returns = {'return':{}}
for i in range(len(prices)):
    current_price = prices.iloc[i,0]
    if i == 0:
        current_return = 0
    else:
        last_price = prices.iloc[i-1,0]
        current_return = (current_price-last_price)/last_price
    date = list(prices.index)[i]
    returns['return'][date] = current_return
return_df = pd.DataFrame(returns, columns=['return'], index=list(prices.index))

fig = plt.figure(figsize=(10, 6))
ax = fig.add_axes([0.2, 0.2, 1.2, 1.2])
ax.plot(return_df, color="blue", linewidth=1.5, linestyle="-", label=r'hs300-daily-returns')
plt.legend(loc='upper right', frameon=False)

在这里插入图片描述

日收益曲线看上去比指数走势图要“平稳”一些,表现在:
(1)序列看上去都在某个值(均值,貌似是0)上下波动;
(2)序列似乎有个波动范围(方差),上图的单日波动都在6%以下(毕竟,个股单日涨跌停最大是10%)。

上述日收益曲线究竟是不是平稳还需要严格的检验,这个后面再说。

4、自相关性

上一节谈到了相关性:两个时间点的波动相关性用它们的协方差来衡量。但是,对于不同的标的,由于价格相差很大,算出来的协方差也差别很大,看不出究竟谁更相关,谁更不相关。

所以,一个简单的处理就是将协方差归一化到[-1,-1]的范围内。这样对于任意的时间序列相关性度量,都可以用统一的标准。

于是,结合第1节的相关系数,很自然地给出了下面的时间序列相关系数的算法:

ρ k = C o v ( r t , r t − k ) σ r t σ r t − k = C o v ( r t , r t − k ) σ r t σ r t = γ k γ 0 \rho_k=\frac{Cov(r_t,r_{t-k})}{\sigma_{r_t}\sigma_{r_{t-k}}}=\frac{Cov(r_t,r_{t-k})}{\sigma_{r_t}\sigma_{r_t}}=\frac{\gamma_k}{\gamma_0} ρk=σrtσrtkCov(rt,rtk)=σrtσrtCov(rt,rtk)=γ0γk

一些性质:

  • k = 0 , ρ 0 = 1 k=0,\rho_0=1 k=0,ρ0=1;
  • ρ k = ρ − k \rho_k=\rho_{-k} ρk=ρk;
  • − 1 ≤ ρ k ≤ 1 -1\le\rho_k\le1 1ρk1.

上面这个相关系数又自相关系数,是因为它衡量的是同一个时间序列内的两个不同的时间段的相关性。我们当然可以研究两个不同时间序列同一时间段的相关性(比如不同到期合约的价差分析),其相关系数同样采用上面的式子给出。

当然,我们只能通过样本计算相关系数。下面是基于样本计算自相关系数的公式:

ζ k = c k c 0 ; c k = 1 n ∑ t = 1 n − k ( r t − r ˉ ) ( r t + k − r ˉ ) \zeta_k=\frac{c_k}{c_0}; c_k=\frac{1}{n}\sum_{t=1}^{n-k}(r_t-\bar{r})(r_{t+k}-\bar{r}) ζk=c0ck;ck=n1t=1nk(rtrˉ)(rt+krˉ)

其中 c k c_k ck为样本自协方差, ζ k \zeta_k ζk为样本自相关系数。

5、相关图

上面给出的相关系数(或者自相关系数)只与时间间隔有关。因此,我们可以把不同时间间隔的相关系数算出来并且绘制在图中。这个图就是相关图。

我们用statsmodels来绘制相关图。statsmodels是大部分用python的朋友做时间序列分析首选的工具包。下面绘制的相关图是上面沪深300自2018年1月1日至2019年12月13日的日收益率的相关图。

import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf

fig = plt.figure(figsize=(10, 6))
ax = fig.add_axes([0.2, 0.2, 1.2, 1.2])
plot_acf(return_df, ax)
plt.show()

在这里插入图片描述

可以看到,当时间间隔为0的时候,相关系数为1,很显然,每个点和自己都是完全相关的。当时间间隔大于1,相关系数便只是在0附近波动,说明不同时间点的单日收益相关性不大。

图中浅蓝色区域是95%的置信区间,如果相关系数在置信区间内,我们可以认为这个间隔下的子序列是不相关的。图中有个别间隔的序列相关系数超过置信区间,说明子序列还不是完全不相关的。不过大致上,我们可以认为沪深300的单日收益和其它交易日关联度不大。

<think>好的,我现在需要回答用户关于平稳随机过程、宽平稳随机过程和严平稳随机过程之间的区别的问题。首先,我得回忆一下这三个概念的基本定义,然后比较它们的异同点。 首先,平稳随机过程应该是指广义上的平稳过程,但可能用户在这里想区分的是严平稳和宽平稳。不过有时候平稳过程可能被不同学者用来指代不同的类型,所以需要明确。 严平稳随机过程,也就是严格平稳过程,是指概率分布特性不随时间平移而改变的过程。也就是说,对于任何时间位移τ,过程在时间t1, t2, ..., tn处的联合概率分布与时间t1+τ, t2+τ, ..., tn+τ处的联合分布相同。这要求所有的统计特性都是时不变的,包括各阶矩和联合分布。 而宽平稳随机过程,也叫弱平稳过程,是要求一阶矩(均值)为常数,二阶矩(自相关函数)仅依赖于时间差τ,而不依赖于具体的时间点。也就是说,只要满足这两个条件,就可以称为宽平稳。显然,宽平稳的条件比严平稳要宽松很多,因为它只涉及到一阶和二阶矩,而不考虑更高阶的统计特性。 那么,用户提到的“平稳随机过程”可能有两种情况:有时候它被用来统称严平稳和宽平稳,或者根据上下文可能指其中一种。因此,在解释时需要说明这两种类型,并指出通常在没有特别说明的情况下,可能指的是宽平稳,因为其条件更容易满足,应用更广泛,比如在通信系统和信号处理中常使用宽平稳假设。 接下来需要比较它们的区别。首先,严平稳的条件更严格,需要所有统计特性都不随时间变化,而宽平稳只涉及均值和自相关函数。因此,严平稳一定是宽平稳,但反之不成立,除非过程是高斯的,因为高斯过程的统计特性完全由均值和协方差确定,此时宽平稳也意味着严平稳。 另外,应用上的不同:严平稳在理论分析中更为严格,而宽平稳在工程应用中更常见,因为实际中很难验证所有统计特性是否时不变,而仅需验证均值和相关函数即可。 可能的例子:比如白噪声,如果其均值为零,自相关函数是冲激函数,那么它是宽平稳的。如果进一步其所有高阶矩都符合时不变性,那么它也是严平稳的。但如果是非高斯的白噪声,可能宽平稳但非严平稳。 需要注意,严平稳和宽平稳的关键区别在于统计特性的全面性,而不仅仅是低阶矩。此外,在数学处理上,宽平稳更容易处理,因为它只需要考虑相关函数和均值,而严平稳需要处理整个分布的结构。 总结起来,回答的结构应该是先分别定义三个概念(如果平稳随机过程作为总称的话),或者说明平稳随机过程通常指的是宽平稳,然后详细解释严平稳和宽平稳的区别,包括条件、包含关系、应用场景等,并举例说明它们之间的关系和不同情况下的应用。</think>平稳随机过程、宽平稳随机过程和严平稳随机过程的区别可通过以下对比清晰呈现: --- ### **1. 严平稳随机过程(严格平稳)** - **定义**:对任意时间平移 $\tau$,其任意有限维联合概率分布保持不变。 $$ P(X_{t_1}, X_{t_2}, ..., X_{t_n}) = P(X_{t_1+\tau}, X_{t_2+\tau}, ..., X_{t_n+\tau}) $$ - **特点**: - 所有统计特性(均值、方差、高阶矩)均与时间起点无关。 - 条件极其严格,实际中难以验证。 ### **2. 宽平稳随机过程(弱平稳)** - **定义**:满足以下两条: 1. **均值恒定**:$E[X_t] = \mu$(常数); 2. **自相关函数仅依赖时间差**:$R_X(t_1, t_2) = R_X(\tau)$,其中 $\tau = t_1 - t_2$。 - **特点**: - 仅约束一阶矩(均值)和二阶矩(自相关函数)。 - 实际工程中广泛应用(如通信系统)。 ### **3. 平稳随机过程** - **广义用法**: - 若未明确说明,通常指**宽平稳**(因严平稳验证困难)。 - 部分文献中将严平稳简称为“平稳过程”,需结合上下文判断。 --- ### **关键区别** | **特性** | 严平稳 | 宽平稳 | |-----------------|-------------------------------|-------------------------------| | **条件** | 所有统计特性时不变 | 仅均值、自相关函数时不变 | | **包含关系** | 严平稳 $\Rightarrow$ 宽平稳 | 宽平稳 $\nRightarrow$ 严平稳(除非高斯过程) | | **验证难度** | 极高(需验证所有分布) | 较低(仅需验证一、二阶矩) | | **典型应用** | 理论分析 | 信号处理、通信系统 | --- ### **示例说明** - **严平稳且宽平稳**:高斯白噪声(因高斯过程由均值和协方差唯一确定)。 - **宽平稳但非严平稳**:非高斯过程满足均值和自相关时不变,但高阶矩随时间变化。 --- ### **总结** 严平稳是统计特性的全面时不变,宽平稳是低阶矩的简化版本。实际中宽平稳更实用,而严平稳多用于理论分析。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值