时间序列分析系统综述及应用

(本文为原创,转载请注明:https://blog.csdn.net/wht506520189/article/details/104067982)

系统日志分析

1 需求分析

XX系统的日志量非常庞大,每天落地日志将近四亿到五亿条。XX表有二十几个字段。这里选择对每日业务量峰值和业务总量进行分析。

1.1 分析对象

每日业务量峰值、业务总量。

1.2 分析目标

预测下一日业务量峰值、业务总量。

1.3 实施措施

进行时间序列分析。

2 时间序列分析背景调研

2.1 什么是时间序列

在生产和科学研究中,对某一个或一组变量x(t)进行观察测量,将在一系列时刻t1, t2, …, tn (t为自变量且t1<t2<…< tn ) 所得到的离散数字组成序列集合x(t1), x(t2), …, x(tn),我们称之为时间序列,这种有时间意义的序列也称为动态数据。这样的动态数据在自然、经济及社会等领域都是很常见的。如在一定生态条件下,动植物种群数量逐月或逐年的消长过程、某证券交易所每天的收盘指数、每个月的GNP、失业人数或物价指数等等。

时间序列分析是根据系统观测得到的时间序列数据,通过曲线拟合和参数估计来建立数学模型的理论和方法。它一般采用曲线拟合和参数估计方法(如非线性最小二乘法)进行。时间序列分析常用在国民经济宏观控制、区域综合发展规划、企业经营管理、市场潜量预测、气象预报、水文预报、地震前兆预报、农作物病虫灾害预报、环境污染控制、生态平衡、天文学和海洋学等方面。

2.2 时间序列建模的基本步骤

首先,用观测、调查、统计、抽样等方法取得被观测系统时间序列动态数据。

其次,根据动态数据作相关图,进行相关分析,求自相关函数。相关图能显示出变化的趋势和周期,并能发现跳点和拐点。跳点是指与其他数据不一致的观测值。如果跳点是正确的观测值,在建模时应考虑进去,如果是反常现象,则应把跳点调整到期望值。拐点则是指时间序列从上升趋势突然变为下降趋势的点。如果存在拐点,则在建模时必须用不同的模型去分段拟合该时间序列,例如采用门限回归模型。

最后, 辨识合适的随机模型,进行曲线拟合,即用通用随机模型去拟合时间序列的观测数据。对于短的或简单的时间序列,可用趋势模型和季节模型加上误差来进行拟合。对于平稳时间序列,可用通用ARMA模型(自回归滑动平均模型)及其特殊情况的自回归模型、滑动平均模型或组合-ARMA模型等来进行拟合。当观测值多于50个时一般都采用ARMA模型。对于非平稳时间序列则要先将观测到的时间序列进行差分运算,化为平稳时间序列,再用适当模型去拟合这个差分序列。

2.3 时间序列分析目的

①系统描述。根据对系统进行观测得到的时间序列数据,用曲线拟合方法对系统进行客观的描述。

②系统分析。当观测值取自两个以上变量时,可用一个时间序列中的变化去说明另一个时间序列中的变化,从而深入了解给定时间序列产生的机理。

③预测未来。一般用ARMA模型拟合时间序列,预测该时间序列未来值。

④决策和控制。根据时间序列模型可调整输入变量使系统发展过程保持在目标值上,即预测到过程要偏离目标时便可进行必要的控制。

可以这么说,时间序列分析的目的是,试图明白过去并且预测未来。

3 基础知识

3.1 平稳性

如果数据是平稳性的,它要满足以下性质:

  • 序列的平均值不应该是时间的函数。下图中红色的线是不平稳的,因为它的平均值随时间增长。

在这里插入图片描述

  • 序列的方差不应该是时间的函数。这个属性被称为同方差。注意到红色数据随时间的变化很大。
    在这里插入图片描述

  • 第i项和第i+m项的协方差不应该是时间的函数。在下面的图中,你会注意到随时间的推移差距变得越来越近。因此,红色序列的协方差是随时间变化的。

在这里插入图片描述

分析可知,如果一个序列,它的均值和方差是一个常数,则这个序列具有平稳性。但实际上很难达到这个条件,大多数的序列的均值和方差会随着时间有细微的变动,并不严格的是一个常数,这样的序列称之为具有弱平稳性的序列。

为什么要关心数据的平稳性?

一个平稳的时间序列是容易进行预测的,我们可以假设其未来与现在的统计属性是相同的或成比例的。

我们用的大多数时间序列分析模型都是假设协方差平稳。这就意味着这些预测模型的统计描述如均值、方差、协方差等只有在序列平稳时才是有效的,否则无效。

如上所说,金融证券中的大多数时间序列都是不平稳的。因此,有一大部分时间序列分析需要检验我们要预测的序列是否是平定的,如果它不是,我们怎需要找到方法去把它转化成平稳的序列。

3.2 序列相关

实质上,当我们对一个时间序列建模时,我们将该系列分成三个部分:趋势、周期和随机。随机分量称为残差或误差。它仅仅是预测值与观测值的差异。当我们模型的残差彼此相关时是自相关。

3.2.1 自相关

自相关系数可以这么理解:把一列数据按照滞后数拆成两列数据,在对这两列数据做类似相关系数的操作。如下一个例子,

x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 , x 8 , x 9 , x 10 {x_1,x_2,x_3,x_4,x_5,x_6,x_7,x_8,x_9,x_{10}} x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 ,此为原始序列;拆成

{ x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 , x 8 } , { x 3 , x 4 , x 5 , x 6 , x 7 , x 8 , x 9 , x 10 } \{x_1,x_2,x_3,x_4,x_5,x_6,x_7,x_8\} ,\{x_3,x_4,x_5,x_6,x_7,x_8,x_9,x_{10}\} { x1,x2,x3,x4,x5,x6,x7,x8}{ x3,x4,x5,x6,x7,x8,x9,x10}两个序列,这组数据是求滞后数为2的自相关系数,则变成求 { x 1 , x 2 , ⋯   , x 8 } 和 { x 3 , x 4 , ⋯   , x 10 } \{x_1,x_2,\cdots,x_8\} 和 \{x_3,x_4,\cdots,x_{10}\} { x1,x2,,x8}{ x3,x4,,x10}两者的“相关系数”,相关系数打引号是因为这个相关系数的公式和以往的有点不一样。自相关系数的推导公式如下:

ρ = ∑ i = 1 n − h ( x i − μ ) ( x i + h − μ ) ∑ i = 1 n ( x i − μ ) 2 ; \rho=\sum_{i=1}^{n-h} \frac{(x_i-\mu )(x_{i+h} -\mu )}{\sum_{i=1}^{n}(x_i-\mu )^2} ; ρ=i=1nhi=1n(xiμ)2(xiμ)(xi+hμ)

可以这么理解自相关系数, 她就是用来表达一组数据前后数据 (自己和自己) 的相关性的。

3.2.2 偏自相关

滞后 k 偏自相关系数就是指在给定中间 k-1 个随机变量 x t − 1 , x t − 2 , ⋯   , x t − k + 1 x_{t-1},x_{t-2},\cdots,x_{t-k+1} xt1,xt2,,xtk+1的条件下,或者说,提出了中间 k-1 个随机变量的干扰之后, x t − k 对 x t 影 响 的 相 关 度 量 , x_{t-k} 对 x_t 影响的相关度量, xtkxt可以用 Yule-Walker方程求解,如下形式:

( 1 ρ 1 ⋯ ρ k − 1 ρ 1 1 ⋯ ρ k − 2 ⋮ ⋮ ⋮ ρ k − 1 ρ k − 2 ⋯ 1 ) ( ψ 1 ψ 2 ⋮ ψ k ) = ( ρ 1 ρ 2 ⋮ ρ k ) \begin{pmatrix}1 & \rho _1 & \cdots & \rho _{k-1}\\ \rho _1 & 1 &\cdots & \rho _{k-2}\\ \vdots & \vdots & & \vdots\\ \rho _{k-1} &\rho _{k-2} & \cdots & 1\end{pmatrix}\begin{pmatrix}\psi _1\\ \psi_2\\ \vdots\\ \psi_k\end{pmatrix}=\begin{pmatrix}\rho_1\\ \rho_2\\ \vdots\\ \rho_k\end{pmatrix} 1ρ1ρk1ρ11ρk2ρk1ρk21ψ1ψ2ψk=ρ1ρ2ρk

其中, ρ i 就 是 滞 后 为 i 的 自 相 关 系 数 , ψ i 为 滞 后 数 为 i 的 偏 自 相 关 系 数 。 \rho_i 就是滞后为 i 的自相关系数,\psi_i 为滞后数为 i 的偏自相关系数。 ρiiψii

ψ i = D i D \psi _i = \frac{D_i}{D} ψi=DDi

D = ∣ 1 ρ 1 ⋯ ρ k − 1 ρ 1 1 ⋯ ρ k − 2 ⋮ ⋮ ⋮ ρ k − 1 ρ k − 2 ⋯ 1 ∣ , D k = ∣ 1 ρ 1 ⋯ ρ i − 2 ρ 1 ρ i ⋯ ρ k − 1 ρ 1 1 ⋯ ρ i − 3 ρ 2 ρ i − 1 ⋯ ρ k − 2 ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ρ k − 1 ρ k − 2 ⋯ ρ k − i + 1 ρ k ρ k − i − 1 ⋯ 1 ∣ 。 D=\begin{vmatrix}1 & \rho_1 &\cdots &\rho_{k-1} \\ \rho_1 & 1 & \cdots &\rho_{k-2} \\ \vdots & \vdots & & \vdots\\ \rho_{k-1} &\rho_{k-2} &\cdots &1 \end{vmatrix} , D_k=\begin{vmatrix}1 & \rho_1 &\cdots & \rho_{i-2} &\rho_1& \rho_i &\cdots &\rho_{k-1} \\ \rho_1 & 1 & \cdots & \rho_{i-3} &\rho_2& \rho_{i-1} &\cdots &\rho_{k-2} \\ \vdots & \vdots & & \vdots & \vdots & \vdots& &\vdots\\ \rho_{k-1} &\rho_{k-2} &\cdots &\rho_{k-i+1} &\rho_k&\rho_{k-i-1}& \cdots &1\end{vmatrix} 。 D=1ρ1ρk1ρ11ρk2ρk1ρk21,Dk=1ρ1ρk1ρ11ρk2ρi2ρi3ρki+1ρ1ρ2ρkρiρi1ρki1ρk1ρk21

3.3 为什么要关注序列相关性

我们关心的序列相关(自相关)是因为它对我们的模型预测的有效性是至关重要的,是与平稳性密切相关。回想一下,根据定义一个平稳的时间序列的残差是连续不相关的。如果在模型中我们不能解释这一点,我们系数的标准误差的作用会被降低,从而膨胀了T统计量的大小。使得结果中存在太多Type-1误差,使得我们拒绝我们的零假设即使是在它是真的。忽略自相关意味着我们的模型预测将是空谈,我们在的模型中可能得出了有关自变量的影响的不正确的结论。

4 相关算法

4.1 白噪声

白噪声是第一个需要明白的时间序列模型。根据定义,一个白噪声过程的时间序列具有连续不相关的误差,并且那些误差的预期平均值等于零。另一个关于连续不相关误差的描述是独立同分布。这很重要,因为如果我们的TSM(Time Series Model)是得当的,并且成功的捕获了基本过程,那么我们模型的残差将会是独立同分布的,类似于白噪声过程。因此,一部分时间序列分析是在试图拟合时间序列致使残差序列与白噪声不可区分。

下面模拟白噪声的过程。用一个函数,绘制时间序列和分析序列相关。代码如下:

import mpl_toolkits.axisartist.axislines as axislines
import pandas as pd
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
import statsmodels.api as sm
from statsmodels.graphics.api import qqplot

from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

def 
  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值