第三章 平稳时间序列

在这里要先知道什么是随机变量

随机变量:设E为一个随机现象,Ω\OmegaΩ是样本空间,即随机现象的所有可能结果,如果说对于每一个ω∈Ω\omega\in\Omegaω∈Ω,总有一个实值函数X(ω)X(\omega)X(ω)与之对应,则称X(ω)X(\omega)X(ω)为E的一个随机变量。
:随机变量通常用大写字母X,Y,Z表示,而随机变量所取得值一般采用小写字母表示。
例如:
单位时间内某电话台收到的呼叫次数就是一个随机变量,所以事件{收到一次呼叫}可表示为{X=1}。

3.1 线性平稳时间序列的基本概念

事物的变化分为两类:
1.确定性变化过程:指事物的变化是由时间唯一确定的,或者说对于给定时间,人们事先能确切地知道事物变化的结果。
2.不确定性变化过程:指对给定时间,事物变化的结果不止一个,事先无法肯定哪个结果一定会发生,即事物变化具有随机性,这样的变化也称随机过程。
时间序列可以看作为随机过程的一次样本实现,任意时刻t的观测值Xt可以看做是随机变量Xt的一次样本实现值。
解释:我们举一个例子来理解上面这段话,设用随机变量X表示一天内一家商店的人数,则X(t)一个随机过程是,因为进入商店的人数是随机的,我们获取了这家商店一天内的人数来进行时间序列建模,我们直接采用的话会造成数据冗余,因为商店人数不是每分每秒都在变化的,所以我们半个小时为采样间隔来收集数据,如果将一天内商店的人数看为总体,则我们收集到的数据就是一个样本。

(一) 随机过程的科学解释

1.从时间变化角度来看:若对于每一个特定的t∈Tt\in Tt∈T(T是一个无穷集合,称为参数集),X(t)是一个随机变量,则称这一组无穷个随机变量{Xt:t∈Tt\in Tt∈T}是一个随机过程。
2.从实验结果来看:若对事物变化的全过程进行一次观测,得到的变化是一个时间t的函数,但对于同一个事物的变化过程独立地重复进行多次观测,所得的结果不同,则称这种变化过程为随机过程。
3.从数学角度来看:设E是随机试验,S是它的样本空间,如果对于每一个e∈Se\in Se∈S,我们总是可以以某种规则确定一时间t的函数X(e,t)t∈Tt\in Tt∈T(T是时间t的变化范围),于是对于所有e∈Se\in Se∈S,得到一组时间t的函数,称这组时间t的函数为随机过程。

随机变量与随机过程的 区别与联系

随机变量(R.V.) 随机过程(S.P.)
单值实函数(常实数) 关于t的函数
与t无关 与t有关
静态(某一时刻) 动态(某一时间过程 )
一个随机变量 一系列随机变量
联系 点和线的关系(随机变量是点,随机过程是线)

(二) 常见的随机过程类型

1.纯随机过程:若随机过程X(t)是由一个不相关的随机变量的序列构成,则称其为纯随机过程。
2.白噪声:期望,方差均为常数的纯随机过程
正态白噪声:零均值的白噪声
3.独立增量随机过程:任意两相邻时刻的随机变量之差是相互独立的。即X(t2)-X(t1),X(t3)-X(t2),…,X(tn)-X(tn-1)相互独立。
4.二阶矩过程:若随机过程{Xt:t∈Tt\in Tt∈T}对每一个t∈Tt\in Tt∈T,Xt的均值,方差都存在(即一阶矩和二阶矩都存在)。
5.正态过程:若随机过程{Xt:t∈Tt\in Tt∈T}的任意有限分布都是正态分布,则称其为正态随机过程。
6.平稳过程:
1.平稳过程的特性:
- 均值与方差均为常数,并可用样本均值和样本方差分别进行估计
- Xt的均值(数学期望)不随时间而改变,即对于任何t,E(Xt)=μE(X_t)=\muE(Xt​)=μ(μ\muμ为一个常数)
- Xt和Xt+k之间的协方差只与k有关,与t无关(该协方差称为滞后k的自协方差);**滞后k的自相关系数**即为γk\gamma_kγk​;且
Var(Xt)2=γ0;ρk=γkγ0;ρ0=1Var(X_t)^2=\gamma_0;\rho_k=\frac{\gamma_k}{\gamma_0};\rho_0=1Var(Xt​)2=γ0​;ρk​=γ0​γk​​;ρ0​=1
1.严平稳过程:所有统计特性都不随时间的平移而改变的随机过程,即n维随机向量(X(t1),X(t2),…,X(tN))与n维随机向量(X(t1+c),X(t2+c),…,X(tN+c))具有相同的分布函数。
2.宽平稳过程:随机过程{Xt:t∈Tt\in Tt∈T}的均值和协方差都存在,并且满足下式,即:
E(Xt)=aE(X_t)=aE(Xt​)=a
E(Xt+τ−a)E(Xt−a)=R(τ)E(X_{t+\tau}-a)E(X_t -a)=R(\tau)E(Xt+τ​−a)E(Xt​−a)=R(τ)
其中a为常数,R(τR(\tauR(τ)为X(t)的协方差函数。
3.严平稳过程与宽平稳过程的关系:宽平稳对时间推移的不变性表现在一,二阶矩上,严平稳对时间推移的不变性表现在概率分布上,一般来说,严平稳比宽平稳更稳。

  • 严平稳↛\nrightarrow↛是宽平稳,宽平稳↚\nleftarrow↚是严平稳
  • 二阶矩有限的严平稳过程是宽平稳过程
  • 白噪声序列是宽平稳过程
  • 正态过程,严平稳过程⇔\Leftrightarrow⇔宽平稳过程
  • 白噪声是一个二阶矩过程,白噪声是一个宽平稳过程
  • 正态过程是一个二阶矩过程,宽平稳过程是一个二阶矩过程
  • 独立增量随机过程中由增量构成的随机过程是纯随机过程
    7.非平稳过程:不具有平稳性的随机过程。

(三)自相关与自回归

自相关:时间序列前后数据间的依存关系。
自回归:时间序列中Xt对其前项作出的回归方程,如Xt=φ1Xt−1+atX_t=\varphi_1 X_{t-1}+a_tXt​=φ1​Xt−1​+at​
自回归与普通回归之间的区别:自回归是对自身前期值的回归,是一种动态相关,普通回归是静态相关

3.2 一阶自回归模型

在本章及后面章节中,若不特别声明,讨论的都是零均值,平稳时间序列。

:拿到一个时间序列数据,首先就是检验其平稳性和是否零均值。

(一)一阶自回归模型AR(1)

如果时间序列Xt(t=1,2,…)之间有一定的依存性,最简单的关系就是后一时刻的行为主要与其前一时刻的行为有关,而与其前一时刻以前的行为无直接关系,即已知Xt-1Xt主要与Xt-1相关。用记忆性来说就是最短的记忆,即一期记忆,也就是一阶动态性。描述这种关系的数学模型就是一阶自回归模型。

  • 模型:Xt=φ1Xt−1+atX_t=\varphi_1 X_{t-1}+a_tXt​=φ1​Xt−1​+at​
    其中Xt为零均值平稳时间序列,φ1\varphi_1φ1​为Xt对Xt-1的依赖程度,at为随机扰动。
  • 模型假设
    1.Xt只与Xt-1有直接关系,与Xt-j(j=2,3,…)无直接关系;
    2.at是白噪声,且atNID(0,$\sigma_a^2$)即at服从均值为零的正态分布,且at与Xt-j独立,cov(at,Xt-j~)=0
  • 模型结构:模型分为φ1Xt−1与at\varphi_1 X_{t-1}与a_tφ1​Xt−1​与at​两部分,这两部分相互独立
  • AR(1)与普通一元线性回归方程的区别

(二)相关序列的独立化过程

相关序列的独立化过程就是如何使相关序列转化为独立序列

由于时间序列序列Xt是一个相关序列,但很多统计方法都是以资料独立为基础的,所以我们需要将时间序列Xt转化为独立序列,就是对AR(1)模型的变形,即
at=Xt−φ1Xt−1a_t=X_t-\varphi_1 X_{t-1}at​=Xt​−φ1​Xt−1​

(三)随机游动

随机游动是AR(1)模型的一个特例,是**φ1\varphi_1φ1​=1时AR(1)模型**,即
KaTeX parse error: Can't use function '$' in math mode at position 17: …_t- X_{t-1}=a_t$̲或\nabla X_t=a_t$$
其中符号∇\nabla∇表示差分算子,差分就是Xt与其前一期的差,从统计上讲,差分结果所得到的序列就是逐期增长量。
随机游动的特性:

  1. 系统具有极强的一期记忆性,即惯性。也就是说系统在t-1和t时刻的响应,除随机扰动外,完全一致。差异完全是由扰动引起的。
  2. 在时刻t-1时,系统的一步超前预测就是系统在t-1时的响应Xt-1,即Xt−11^=Xt−1\widehat{X_{t-1}^1}=X_{t-1}Xt−11​​=Xt−1​
  3. 系统行为是一系列独立随机变量的和,即
    Xt=∑j=0∞at−jX_t=\sum_{j=0}^{\infty}a_{t-j}Xt​=j=0∑∞​at−j​

3.3 一般自回归模型

(一) AR(2)模型

AR(1)模型Xt=φ1Xt−1+atX_t=\varphi_1 X_{t-1}+a_tXt​=φ1​Xt−1​+at​中Xt与Xt-1有关,如果自回归系统中Xt不仅与Xt-1有关,而且与Xt-2有关,那么at与Xt-2有依赖性,at与Xt-2不独立(也就是相关),则假设:
Xt=φ1Xt−1+at′X_t=\varphi_1 X_{t-1}+a_t^{\prime}Xt​=φ1​Xt−1​+at′​
at′=φ2Xt−2+ata_t^{\prime}=\varphi_2 X_{t-2}+a_tat′​=φ2​Xt−2​+at​
Xt=φ1Xt−1+φ2Xt−2+atX_t=\varphi_1 X_{t-1}+\varphi_2 X_{t-2}+a_tXt​=φ1​Xt−1​+φ2​Xt−2​+at​

  • 模型:Xt=φ1Xt−1+φ2Xt−2+atX_t=\varphi_1 X_{t-1}+\varphi_2 X_{t-2}+a_tXt​=φ1​Xt−1​+φ2​Xt−2​+at​
  • 模型假设:
    1.Xt与Xt-1,Xt-2有直接相关关系,与Xt-j(j=3,4,…)无直接相关关系;
    2.at是白噪声,且at~NID(0,σa2\sigma_a^2σa2​)即at服从均值为零的正态分布,且at与Xt-j独立,cov(at,Xt-j)=0
  • 模型结构:模型分为φ1Xt−1\varphi_1 X_{t-1}φ1​Xt−1​,φ2Xt−2\varphi_2 X_{t-2}φ2​Xt−2​和ata_tat​共三部分,前两部分与at相互独立
  • 独立化:at=Xt−φ1Xt−1−φ2Xt−2a_t=X_t-\varphi_1 X_{t-1}-\varphi_2 X_{t-2}at​=Xt​−φ1​Xt−1​−φ2​Xt−2​

(二)一般自回归模型:AR(n)模型

如果AR(2)中at不再是白噪声序列,且Xt不仅与Xt-1,Xt-2有关,还与Xt-j(j=3,4,…,p)有关,就可以得到一般自回归模型AR§,表达式为:
Xt=φ1Xt−1+φ2Xt−2+...+φpXt−p+atX_t=\varphi_1 X_{t-1}+\varphi_2 X_{t-2}+...+\varphi_p X_{t-p}+a_tXt​=φ1​Xt−1​+φ2​Xt−2​+...+φp​Xt−p​+at​
同样,当p=n时,有

  • 模型:Xt=φ1Xt−1+φ2Xt−2+...+φnXt−n+atX_t=\varphi_1 X_{t-1}+\varphi_2 X_{t-2}+...+\varphi_n X_{t-n}+a_tXt​=φ1​Xt−1​+φ2​Xt−2​+...+φn​Xt−n​+at​
  • 模型假设
    1. Xt与Xt-1,Xt-2…Xt-n有直接相关关系,与Xt-j(j=n+1,n+2,…)没有直接相关关系;
    2. at是白噪声,且at~NID(0,σa2\sigma_a^2σa2​)即at服从均值为零的正态分布,且at与Xt-j独立,cov(at,Xt-j)=0
  • 模型结构:模型分为φ1Xt−1\varphi_1 X_{t-1}φ1​Xt−1​,φ2Xt−2\varphi_2 X_{t-2}φ2​Xt−2​,…,φnXt−n\varphi_n X_{t-n}φn​Xt−n​和ata_tat​共n+1部分,前n部分与at相互独立
  • 独立化:at=Xt−φ1Xt−1−φ2Xt−2−...−φnXt−na_t=X_t-\varphi_1 X_{t-1}-\varphi_2 X_{t-2}-...-\varphi_n X_{t-n}at​=Xt​−φ1​Xt−1​−φ2​Xt−2​−...−φn​Xt−n​

3.4 移动平均模型

(一) 一阶移动平均模型:MA(1)模型

  • 模型:Xt=at−θ1at−1X_t=a_t -\theta_1 a_{t-1}Xt​=at​−θ1​at−1​

  • 模型假设
    1.Xt只与at-1有直接关系,与at-j(j=2,3,…)没有直接关系;
    2.at是白噪声,且at~NID(0,σa2\sigma_a^2σa2​)即at服从均值为零的正态分布,且at与Xt-j独立,cov(at,Xt-j)=0

  • 模型结构:模型分为θ1at−1与at\theta_1 a_{t-1}与a_tθ1​at−1​与at​两部分,这两部分相互独立;

  • 均值,方差与协方差
    E(Xt)=0,Var(Xt)=(1+θ12)σa2Var(X_t)=(1+\theta_1^2)\sigma_a^2Var(Xt​)=(1+θ12​)σa2​

    Xt序列的协方差公式推导
    当h=1(-1)时,以h=1为例
    此时协方差Cov(Xt,Xt+1)=E(xt−E(Xt))(xt+1−E(Xt+1))Cov(X_t,X_{t+1})=E(x_t - E(X_t))(x_{t+1} - E(X_{t+1}))Cov(Xt​,Xt+1​)=E(xt​−E(Xt​))(xt+1​−E(Xt+1​))
    因为E(Xt)=0,所以Cov(Xt,Xt+1)=E(xt−0)(xt+1−0)=E(Xt)(Xt+1)Cov(X_t,X_{t+1})=E(x_t -0)(x_{t+1} - 0)=E(X_t)(X_{t+1})Cov(Xt​,Xt+1​)=E(xt​−0)(xt+1​−0)=E(Xt​)(Xt+1​)
    将Xt=at−θ1at−1X_t=a_t -\theta_1 a_{t-1}Xt​=at​−θ1​at−1​代入E(Xt)(Xt+1)E(X_t)(X_{t+1})E(Xt​)(Xt+1​)可得:
    Cov(Xt,Xt+1)=E(at−θ1at−1)(at+1−θ1at)=E(atat+1−θ1at−1at+1−θ1at2+θ1at−1θ1at)Cov(X_t,X_{t+1})=E(a_t -\theta_1 a_{t-1})(a_{t+1} -\theta_1 a_t)=E(a_t a_{t+1}-\theta_1 a_{t-1} a_{t+1}-\theta_1 a_t^2+ \theta_1 a_{t-1}\theta_1 a_t)Cov(Xt​,Xt+1​)=E(at​−θ1​at−1​)(at+1​−θ1​at​)=E(at​at+1​−θ1​at−1​at+1​−θ1​at2​+θ1​at−1​θ1​at​)
    上式可化简为:Cov(Xt,Xt+1)=E(atat+1)−E(θ1at−1at+1)−E(θ1at2)+E(θ1at−1θ1at)Cov(X_t,X_{t+1})=E(a_t a_{t+1})-E(\theta_1 a_{t-1} a_{t+1})-E(\theta_1 a_t^2)+ E(\theta_1 a_{t-1}\theta_1 a_t)Cov(Xt​,Xt+1​)=E(at​at+1​)−E(θ1​at−1​at+1​)−E(θ1​at2​)+E(θ1​at−1​θ1​at​)
    因为at~NID(0,σa2\sigma_a^2σa2​),对at+1,at-1同样适用,且Var(X)=E(X)2−[E(X)]2Var(X)=E(X)^2-[E(X)]^2Var(X)=E(X)2−[E(X)]2,
    所以Cov(Xt,Xt+1)=−E(θ1at2)=−θ1E(at2)=−θ1σa2Cov(X_t,X_{t+1})=-E(\theta_1 a_t^2)=-\theta_1E(a_t^2)=-\theta_1\sigma_a^2Cov(Xt​,Xt+1​)=−E(θ1​at2​)=−θ1​E(at2​)=−θ1​σa2​

(二) 一般移动平均模型:MA(q)模型

在MA系统中,Xt仅与at-1,at-2,…,at-q有关,而与at-j(j=q+1,q+2,…,)无关,at是白噪声(相关性质看一阶自回归方程AP(1)),则:
Xt=at−θ1at−1−θ2at−2−...−θqat−qX_t=a_t -\theta_1 a_{t-1}-\theta_2 a_{t-2}-...-\theta_q a_{t-q}Xt​=at​−θ1​at−1​−θ2​at−2​−...−θq​at−q​
Var(Xt)=(1+θ12+θ22+...+θq2)σa2Var(X_t)=(1+\theta_1^2+\theta_2^2+...+\theta_q^2)\sigma_a^2Var(Xt​)=(1+θ12​+θ22​+...+θq2​)σa2​

3.5 自回归移动平均模型

AR系统:系统在t时刻的响应Xt与其以前时刻的响应(Xt-j,j=1,2,…)有关,而与其以前时刻进入系统的扰动(at-j,j=1,2,…)无关。
MA系统:系统在t时刻的响应Xt与其以前时刻进入系统的扰动(at-j,j=1,2,…)有关,而与其以前时刻的响应(Xt-j,j=1,2,…)无关。
ARMA系统:系统在t时刻的响应Xt不仅与其以前时刻的响应(Xt-j,j=1,2,…)有关,还与其以前时刻进入系统的扰动(at-j,j=1,2,…)有关。

(一)ARMA模型

自回归移动平均模型
Xt=φ1Xt−1+φ2Xt−2+...+φpXt−p+at−θ1at−1−θ2at−2−...−θqat−qX_t=\varphi_1 X_{t-1}+\varphi_2 X_{t-2}+...+\varphi_p X_{t-p}+a_t -\theta_1 a_{t-1}-\theta_2 a_{t-2}-...-\theta_q a_{t-q}Xt​=φ1​Xt−1​+φ2​Xt−2​+...+φp​Xt−p​+at​−θ1​at−1​−θ2​at−2​−...−θq​at−q​
简称为ARMA(p,q)过程
AR模型与MA模型都是ARMA模型的特殊形式。
:ARMA(p,q)模型中的p与q分别是AR模型与MA模型中各自的阶数。

(二)ARMA(2,1)模型

模型:Xt−φ1Xt−1−φ2Xt−2=at−θ1at−1X_t-\varphi_1 X_{t-1}-\varphi_2 X_{t-2}=a_t -\theta_1 a_{t-1}Xt​−φ1​Xt−1​−φ2​Xt−2​=at​−θ1​at−1​
模型假设:
1. Xt只与Xt-1,Xt-2,at-1有直接关系,与at-j(j=2,3,…),Xt-j(j=3,4,…)没有直接关系;
2. at是白噪声,且atNID(0,$\sigma_a^2$)即at服从均值为零的正态分布,且at与Xt-j独立,cov(at,Xt-j~)=0
模型结构:模型分为Xt-1,Xt-2,at-1与at共四部分
独立化过程:at=Xt−φ1Xt−1−φ2Xt−2+θ1at−1a_t=X_t-\varphi_1 X_{t-1}-\varphi_2 X_{t-2}+\theta_1 a_{t-1}at​=Xt​−φ1​Xt−1​−φ2​Xt−2​+θ1​at−1​

第三章 平稳时间序列模型相关推荐

  1. 第二章平稳时间序列模型——ACF和PACF和样本ACF/PACF

    自相关函数/自相关曲线ACF   AR(1)模型的ACF: 模型为: 当其满足平稳的必要条件|a1|<1时(所以说,自相关系数是在平稳条件下求得的):          y(t)和y(t-s)的 ...

  2. Matlab龚珀兹曲线模型预测,第三章 趋势曲线模型预测法.ppt

    第三章 趋势外推模型预测法 第一节 直线模型预测法 第二节 多项式曲线模型预测法 第三节 指数曲线模型预测法 第四节 修正指数曲线模型预测法 第五节 成长曲线预测模型 应用趋势延伸法有两个假设前提: ...

  3. 数据挖掘算法之时间序列算法(平稳时间序列模型,AR(p),MA(q),(平稳时间序列模型,AR(p),MA(q),ARMA(p,q)模型和非平稳时间序列模型,ARIMA(p,d,q)模型)学习笔记梳理

    时间序列算法 一.时间序列的预处理 二.平稳时间序列模型 (一).自回归模型AR( p ) (二).移动平均模型MA(q) (三).自回归移动平均模型ARMA(p,q) 三.非平稳时间序列模型 四.确 ...

  4. Java并发编程 - 第三章 Java内存模型

    前言: Java 线程之间的通信对程序员完全透明,内存可见性问题很容易困扰 Java 程序员,本章将揭开 Java 内存模型神秘的面纱. 一.Java 内存模型的基础 1.1 并发编程模型的两个关键问 ...

  5. CUDA编程第三章: CUDA执行模型

    前言: 本章内容: 通过配置文件驱动的方法优化内核 理解线程束执行的本质 增大GPU的并行性 掌握网格和线程块的启发式配置 学习多种CUDA的性能指标和事件 了解动态并行与嵌套执行 通过上一章的练习, ...

  6. CUDA C编程权威指南 第三章 CUDA执行模型

    基础 每个GPU有多个SM(streaming multiprocessor) 当启动一个grid时,它的block会被分配给多个SM上执行,一个block一旦被调度到一个SM上,则这个block只会 ...

  7. 【Pytorch Lighting】第 5 章:时间序列模型

  8. 时间序列模型 (三):指数平滑法

    时间序列的其它博文系列: 时间序列模型 (一):模型概述 时间序列模型 (二):移动平均法 时间序列模型 (三):指数平滑法 时间序列模型 (四):差分指数平滑法. 自适应滤波法v 时间序列模型 (五 ...

  9. 数学建模传染病模型_数学建模| 时间序列模型

    1 数学建模 时间序列模型 1.与实践有关系的一组数据,叫做时间序列: 2.得到时间序列的数据后,要构建模型,其中平稳时间序列的模型,是本节课重点介绍的: 3.y=at+季节性+周期性 一.     ...

  10. 时间序列模型 (二):移动平均法

    时间序列的其它博文系列: 时间序列模型 (一):模型概述 时间序列模型 (二):移动平均法 时间序列模型 (三):指数平滑法 时间序列模型 (四):差分指数平滑法. 自适应滤波法v 时间序列模型 (五 ...

最新文章

  1. pythonfopen_Python之文件读写详解
  2. Codeforces Round #521 (Div. 3)
  3. $get服务器上的json文件,Web前端:$.getJSON获取json数据失败
  4. 卸载mysql 安装_MySQL萌新第一季 第二话
  5. loj#10050-The XOR Largest Pair【Trie(字典树)】
  6. r roc函数_画ROC曲线的R包总结
  7. Ajax.Net之数据类型
  8. Chrome DevTools
  9. keli不支持中文,显示中文乱码
  10. MIUI12.5安装ca证书提示失败
  11. Node.js 实现远程桌面监控
  12. dell 服务器 非官方网站,教你如何在非官方渠道购买DELL电脑。
  13. MM 库存盘点全总结
  14. Supervised Sequence Labelling with Recurrent Neural Networks 笔记 -LSTM
  15. 【电力电子】【2014.08】电力电子系统公用接口的三相功率因数校正设计
  16. 手把手教你电机FOC控制【二】
  17. 编写一个能将给定非负整数列表中的数字排列成最大数字的函数。例如,给定[50,2,1,9],最大数字为95021。
  18. 解密区块链最强心脏 迅雷链共识算法详解
  19. php 文章分句,php 英文分句/分段落
  20. [Python从零到壹] 五十四.图像增强及运算篇之局部直方图均衡化和自动色彩均衡化处理

热门文章

  1. php用按钮导出到excel,PHP导出Excel,PHP输入Excel
  2. 最新最全 VSCODE 插件推荐(2022版)
  3. Java基础~Java ASCII码的转换
  4. 上位机软件需求说明书100元
  5. 网站优化快速排名软件大全
  6. python手机版做小游戏代码大全-用Python设计一个经典小游戏
  7. ndroid分辨率 dpi 屏幕尺寸 对比图
  8. 物联网工程导论笔记一:RFID及二维码技术
  9. python植物大战僵尸代码
  10. 敏感词过滤算法Aho-Corasick