1、随机游走模型

1.1 基本介绍

随机游走模型是时间序列分析中最基本的概念,是一个著名的非平稳序列。公式如下:

Yt=Yt−1+ut

Y_t = Y_{t-1} + u_t
式中, utu_t是一个随机误差,我们通常假设它服从(0,1)的正态分布。根据公式,我们可以推导得出,随机游走模型的均值 E(Yt)E(Y_t)是一个常量0,不随时间变化,而方差 Var(Yt)=t×Var(u)Var(Y_t)=t\times Var(u),随时间变化,这就说明该随机游走模型是非平稳的。很简单,这里不作推导了。

可以用R来生成一个服从随机游走模型的时间序列,代码如下:
(1)首先参考这篇博客用R生成一组随机数据的方法,具体方法如下:

# 常用随机数字
runif(n,min=0,max=1)           #uniform,均匀分布
rnorm(n,mean=0,sd=1)           #Gaussian(normal),正态分布
rexp(n,rate=1)                 #exponential,指数分布
rlnorm(n,meanlog=0,sdlog=1)    #lognormal,对数正态分布 

(2)然后一列全为0的数组,循环计算出每一个点,得到时间序列。最后对时间序列作平稳性检验。

x <- matrix(0, 1000, 1)
for (i in 1:1000) {x[i+1] <- x[i] + rnorm(1)
}
plot(x, type = "l")
library(tseries)
adf.test(x)


图1 随机游走模型

1.2 衍生模型-AR(1)模型

我们在随机模型的基础上增加一个系数a,来看看时间序列是否平稳。其实这就是AR(1)AR(1)模型,也就是说随机游走模型是AR(1)模型的特例。

Yt=a∗Yt−1+ut

Y_t =a* Y_{t-1} + u_t
(1)当a=0a=0时,时间序列如下图所示

平稳性检验结果如下。p值小于0.05,在0.05的置信水平下,拒绝原假设,选择备择假设:该时间序列平稳。

> adf.test(x)Augmented Dickey-Fuller Testdata:  x
Dickey-Fuller = -9.8862, Lag order = 9, p-value = 0.01
alternative hypothesis: stationary

(2)当a=0.5a=0.5时,时间序列如下图所示

平稳性检验结果如下。p值小于0.05,在0.05的置信水平下,拒绝原假设,选择备择假设:该时间序列平稳。

> adf.test(x)Augmented Dickey-Fuller Testdata:  x
Dickey-Fuller = -9.5753, Lag order = 9, p-value = 0.01
alternative hypothesis: stationary

(3)当a=0.9a=0.9时,时间序列如下图所示

平稳性检验结果如下。p值小于0.05,在0.05的置信水平下,拒绝原假设,选择备择假设:该时间序列平稳。

> adf.test(x)Augmented Dickey-Fuller Testdata:  x
Dickey-Fuller = -6.4184, Lag order = 9, p-value = 0.01
alternative hypothesis: stationary

(4)当a=1.1a=1.1时,时间序列如下图所示

很显然,该时间序列是非平稳序列。

综上所述,对于模型Yt=a∗Yt−1+utY_t =a* Y_{t-1} + u_t而言:
当0<a<10时,该模型是平稳序列。
当a>=1a>= 1时,该模型是非平稳序列。
从公式上来理解就是,

E(Y_t) = a *E(Y_{t-1})

For instance, if X(t – 1 ) = 1, E[X(t)] = 0.5 ( for a = 0.5) . Now, if X moves to any direction from zero, it is pulled back to zero in next step. The only component which can drive it even further is the error term. Error term is equally probable to go in either direction. What happens when the Rho becomes 1? No force can pull the X down in the next step.
具体可以看这篇国外博客

1.3 ADF单位根平稳型检验原理

首先对公式进行变形,把

Yt=a∗Yt−1+ut

Y_t =a* Y_{t-1} + u_t转换为

Yt−Yt−1=(a−1)∗Yt−1+ut

Y_t-Y_{t-1} =(a-1)* Y_{t-1} + u_t
然后对 (a−1)(a-1)进行假设检验,原假设为: a−1=0a-1=0,备择假设为: a−1!=0a-1!=0,如果p值小于0.05,拒绝原假设,就说明该时间序列是平稳的。

2、最小二乘法

2.1 最小二乘法原理

最小二乘法 (Ordinary Least Square,OLS),又称为最小平方法,是一种参数估计方法,通常用于连续变量的回归分析。
下面以一元线性回归模型的最小二乘法进行说明。假设给定了nn个数据对(x1,y1),(x2,y2),,,(xn,yn)(x_1,y_1),(x_2,y_2),,,(x_n,y_n),要求变量X与Y之间的关系。我们假设两个变量之间是线性关系,即变量Y是变量X的线性函数,因此可以得到一元线性回归模型,如下所示:

yi=β0+β1∗xi+e

y_i=\beta_0+\beta_1*x_i+e
式中, ee称为残差(residual),即拟合值与实际值的差值,从几何的角度来理解,就是所有散点与拟合直线的欧式距离。
最小二乘法:要找到一组β1\beta_1与 β2\beta_2使残差的平方和最小,即:

S(β1,β2)=(yi−y^i)2=(yi−β0−β1∗xi)2

S(\beta_1,\beta_2)=(y_i-\hat y_i)^2=(y_i-\beta_0-\beta_1*x_i)^2
得到的函数 S(β1,β2)S(\beta_1,\beta_2)是一个关于 β1\beta_1、 β2\beta_2的二元二次函数。
进一步,如果在 n+1n+1维空间中有 mm个数据点,数据点为(x1,x2,...,xn,y)(x_1,x_2,...,x_n,y),就可以多元线性函数来拟合因变量 YY与自变量X1,X2,...,XnX_1,X_2,...,X_n之间的关系。具体见 维基百科-最小二乘法
拟合函数为:

yi=∑j=1nβjxij,(i=1,2,3,...,m)

y_i=\sum_{j=1}^n \beta_jx_{ij}, (i=1,2,3,...,m)
目标函数为:

S(β1,β2,...,βn)=∑i=1m(yi−y^i)2=∑i=1m(yi−∑j=1nXijβj)2

S(\beta_1,\beta_2,...,\beta_n)=\sum_{i=1}^m(y_i-\hat y_i)^2=\sum_{i=1}^m (y_i-\sum_{j=1}^nX_{ij}\beta_j)^2
同样可以用矩阵的形式来推导出向量 β^\hat \beta的值
拟合函数为:

y^=Xβ

\hat y=X\beta
目标函数为

S(β)=||y−Xβ||2

S(\beta)=||y-X\beta||^2
要使误差 S(β)S(\beta)最小, β^\hat \beta要满足正规方程(normal equation),即向量 x1,x2,...,xmx_1,x_2,...,x_m与误差向量 y1−x1β^,y2−x2β^,...,ym−xmβ^y_1-x_1\hat \beta,y_2-x_2\hat \beta,...,y_m-x_m\hat \beta垂直。具体推导过程见 掰开揉碎推导Normal Equation-知乎专栏

XT(y−Xβ^)=0

X^T(y-X\hat \beta)=0
转换一下就是:

(XTX)β^=XTy

(X^TX)\hat \beta=X^Ty
其中, XTXX^TX是矩阵X的格拉姆矩阵(Gramian matrix),具有半正定性。 XTyX^Ty是矩阵X的矩矩阵,如协方差矩阵。
所以参数 β^\hat \beta为:

β^=(XTX)−1XTy

\hat \beta = (X^TX)^{-1}X^Ty

2.2 R语言实现最小二乘法

用R语言实现最小二乘法的代码如下:

m <- 4
n <- 2
input <- matrix(c(1, 6, 2, 5, 3, 7, 4, 10), ncol = n, byrow = T)
k <- rep(1,m)
X <- cbind(k, input[,1])
y <- input[,2]
X.T <- t(X)
betaHat <- solve(X.T%*%X) %*% X.T %*%y
print(betaHat)
plot(input)
abline(betaHat[1], betaHat[2])

2.3引申:求解二次多元函数最优化问题

由于目标函数S(β)S(\beta)是一个二次多元函数的优化问题,因此可以用梯度下降法(Gradient Descent)来求解。

梯度下降法是一种数值求解算法,具有以下特点
(1)需要预先选定Learning rate(步长);
(2)需要多次iteration;
(3)需要Feature Scaling(特征缩放、降维);

最小二乘法中的正规方程(Normal Equation)是一种投影方法,具有简单、方便特点,且不需要Feature Scaling。该方法也有使用限制:当等式数量(样本量)远远大于未知数(维度)的数量时,即m>>nm>>n时,就不能使用Normal Equation。

3、AR过程和MA过程

举个例子来说明AR过程与MA过程

4、概率论与统计学相关知识

平稳时间序列的自协方差函数

r(k)=E[Yt+k−E(Yt+k)][Yt−E(Yt)],0<=k<N

r(k)=E[Y_{t+k}-E(Y_{t+k})][Y_t-E(Y_t)], 0

在概率论和统计学中,数学期望(mean)是试验中每次可能结果的概率乘以其结果的总和,即该变量输出值的平均值:E(Yt)=mean(Yt)E(Y_t)=mean(Y_t)

由于在平稳时间序列的均值和方差在任何时刻不发生变化,所以E(Yt+k)=E(Yt)E(Y_{t+k})=E(Y_t),进而可以把自协方差函数写作:

r(k)=∑t=1n−k[Yt+k−mean(Yt+k)][Yt−mean(Yt)],0<=k<N

r(k)=\sum_{t=1}^{n-k} [Y_{t+k}-mean(Y_{t+k})][Y_t-mean(Y_t)],0

平稳时间序列的自相关函数ACF

ACF(k)=r(k)var(Yt)×var(Yt+k)−−−−−−−−−−−−−−−√,0<=k<N

ACF(k)=\frac {r(k)}{\sqrt {var(Y_t) \times var(Y_{t+k})}},0

方差(variance)是用来衡量随机变量或一组数据时离散程度的度量,即用来度量随机变量和其数学期望(即均值)之间的偏离程度。
var(X)=D(X)=E[X−E(X)]2var(X)=D(X)=E[X-E(X)]^2
该公式的含义是:每一时刻“X值与其均值的差”平方后得到一个数值,再将每个时刻的该数值求平均。【标准差后面还有开方】

协方差(covariance)用于衡量两个变量在变化过程中是同方向变化,还是反方向变化(根据正负来判断,同向为正,反向为负),程度如何(根据数值大小来判断)?
cov(X,Y)=E[X−E(X)][Y−E(Y)]cov(X,Y)=E[X-E(X)][Y-E(Y)]
该公式的含义是:每个时刻“X值与其均值的差”乘以“Y值与其均值的差”得到一个乘积,在对每个时刻该乘积求和并求出均值。

相关系数(correlation)看作剔除了两个变量量纲影响、标准化后的特殊协方差。
因为变量X与变量Y的量纲可能不同,比如X=sin(t)X=sin(t)Y=10000sin(t)Y=10000sin(t),变量X在0到1之间波动,Y在0到10000之间波动,两者幅度不同,但是变化过程具有极高的相似度。但是计算出来的协方差约为1.5,很小不足以反映两个变量之间的相关程度。所以要通过除以标准差的方式来剔除变化幅度的影响。
α(X,Y)=cov(X,Y)var(X)var(Y)√\alpha (X,Y)=\frac{cov(X,Y)}{\sqrt {var(X)var(Y)}}

具体的理解可以参考知乎上的GRAYLAMB的回答:如何通俗易懂地解释「协方差」与「相关系数」的概念?

平稳时间序列的偏自相关函数PACF

对于一个平稳AR(p)模型,求出滞后k自相关系数p(k)p(k)时,实际上得到并不是YtY_t与Yt+kY_{t+k}之间单纯的相关关系。因为YtY_t同时还会受到中间k−1k-1个随机变量Yt+1、Yt+2、……、Yt+k−1Y_{t+1}、Y_{t+2}、……、Y_{t+k-1}的影响,而这k-1个随机变量又都和Yt+kY_{t+k}具有相关关系,所以自相关系数p(k)p(k)里实际掺杂了其他变量对YtY_t与Yt+kY_{t+k}的影响。

对于平稳时间序列YtY_t,所谓滞后k偏自相关系数指在给定中间k−1k-1个随机变量Yt+1、Yt+2、……、Yt+k−1Y_{t+1}、Y_{t+2}、……、Y_{t+k-1}的条件下,或者说,在剔除了中间k−1k-1个随机变量Yt+1、Yt+2、……、Yt+k−1Y_{t+1}、Y_{t+2}、……、Y_{t+k-1}的干扰之后,Yt+kY_{t+k}对YtY_t影响的相关程度。

其公式如下:

p[Yt,Yt+k|Yt+1、Yt+2、……、Yt+k−1]=r(Yt+k−Pt,k(Yt+k),Yt−Pt,k(Yt))

p[Y_t,Y_{t+k}|Y_{t+1}、Y_{t+2}、……、Y_{t+k-1}]=r(Y_{t+k}-P_{t,k}(Y_{t+k}),Y_t-P_{t,k}(Y_t))
式中, Pt,k(Yt)P_{t,k}(Y_t)是指 YtY_t在由 Yt+1、Yt+2、……、Yt+k−1Y_{t+1}、Y_{t+2}、……、Y_{t+k-1}构成的空间中的投影。

R语言入门(2)时间序列分析原理相关推荐

  1. R语言mgcv包时间序列分析在空气污染与健康领域的应用(3)---模型自由度选择

    广 义 相 加 模 型 ( generalized additional model,GAM)是对传统广义线性模型的非参数拓展,可有效处理解释变量与效应变量间复杂的非线性关系.GAM 目前已广泛应用于 ...

  2. R语言mgcv包时间序列分析在空气污染与健康领域的应用(1)

    在空气污染与健康研究领域,经常需要用时间序列方法将随时间变化的污染物暴露资料和随时间变化的事件发生数资料联系起来,分析人群健康结局与暴露水平之间的关系. 时间序列分析是根据系统观测得到的时间序列数据, ...

  3. R语言线性回归和时间序列分析北京房价影响因素可视化案例

    原文链接:http://tecdat.cn/?p=21467 目的 房价有关的数据可能反映了中国近年来的变化: 人们得到更多的资源(薪水),期望有更好的房子 人口众多 独生子女政策:如何影响房子的几何 ...

  4. 拓端tecdat|R语言线性回归和时间序列分析北京房价影响因素可视化案例

    最近我们被客户要求撰写关于北京房价影响因素的研究报告,包括一些图形和统计输出. 目的 房价有关的数据可能反映了中国近年来的变化: 人们得到更多的资源(薪水),期望有更好的房子 人口众多 独生子女政策: ...

  5. 【万字长文】R语言入门学习路线与资源汇总

    本篇推文就不介绍为什么需要学R了,你能打开这篇文章,说明你有学习R的想法或者正在学习R的路上. 今天简单介绍下R语言的学习路线以及R学习资源汇总. 下面涉及到的R语言书籍我打包了PDF文件,有需要的在 ...

  6. Mac版R语言入门(一)R语言入门操作

    文章更新于2023年1月29日: 视频教程--微信公众号:R语言数据分析与实践                      bilibili: R语言数据分析与实践 CSDN:ZhenniLi 第一集: ...

  7. <<R语言入门与实践>>读书笔记

    这是一个java小码农的跨界试探,如果你对R感兴趣可以买本R语言入门与实践,因为这里只记录了本人觉得有用的基本知识点.如果你只是看个乐呵,祝你有所收获. 序 数据分析具备三个属性 可再现性 自动化 沟 ...

  8. 01 R语言入门——一些介绍

    01 R语言入门--简介 1.1 学习目标 安装R语言平台 www.r-project.org 熟悉R界面 掌握Help帮助功能 1.2 简介 R语言是从S统计绘图语言演变而来,可看作S的" ...

  9. 视频|分类模型评估:精确率、召回率、ROC曲线、AUC与R语言生存分析时间依赖性ROC实现

    最近我们被客户要求撰写关于分类模型的研究报告,包括一些图形和统计输出. 本文将帮助您回答以下问题: ROC曲线是什么? 曲线下的面积是多少? 二元分类的决策阈值是多少? 分类模型可接受的 AUC值是多 ...

  10. r语言x c(-1 -2),【软件】R语言入门之向量

    "R语言入门开篇,向量(vector)相关知识的介绍" R语言是一款优秀统计学编程语言,本文介绍R语言的几个重要命令,以及R语言中非常重要的一种数据结构-向量(Vector)的相关 ...

最新文章

  1. ceph bluestore 源码分析:ceph-osd内存查看方式及控制源码分析
  2. iOS6和iOS7代码的适配(1)
  3. CodeForces - 1295B Infinite Prefixes(数学)
  4. java tree json,基于jstree使用JSON数据组装成树
  5. 一个 redis 异常访问引发 oom 的案例分析
  6. 【美团校招笔试题】去除字符串首尾空格,中间多个空格只保留一个
  7. 强悍的命令行 —— less(与 more、cat 的区别)
  8. [转载] c++与python 数据类型对应
  9. NOI 题库 6264
  10. Redis分布式锁方案
  11. 力控组态软件 mysql_组态软件国内那家做的好?推荐几个比较一下
  12. hrbusrt 1900 权限问题
  13. 编译报错:无法打开包括文件 No such file or directory
  14. 很多人都不知道的如何通过银行如果最简便识别出联行号
  15. Emulex FC HBA卡FW升级与驱动安装
  16. mysql sphinx_Sphinx的安装和使用(仅学习)
  17. an error occurred while creating opening the c++ browsing database 解决办法
  18. C基础_Python_基本常用语法快速学习
  19. javascript正则迷你书-笔记
  20. Linux系统默认PATH环境变量的设置

热门文章

  1. 台式计算机是移动设备吗,超台式电脑!手机成中国第一大上网终端
  2. win7计算机不能设置双屏怎么回事,win7系统怎么设置双屏显示 win7电脑双屏显示功能使用方法...
  3. mysql运维备份_MySQL运维经验
  4. NetFPGA-SUME开发环境安装
  5. 高性能网站建设进阶指南:Web开发者性能优化最佳实践 pdf扫描版
  6. Context与ContextImpl
  7. Nexmo 短信平台接口 遇到的坑
  8. 微信小游戏开发实战教程13-随机生成形状功能的实现
  9. wp8.1 java_UWP tips (与wp8.1的不同)
  10. android版本兼容API24,Android 7.0 (API 24) 适配