怎么用R语言做单位根检验

Python017

怎么用R语言做单位根检验,第1张

R语言做单位根检验的两个方法:

1、用fUnitRoots包中的UnitrootTests()和adfTest()。

2、用tseries包中的adf.test()和pp.test()。

用法都基本类似,可以看一下help的example。

R语言

R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。

R是统计领域广泛使用的诞生于1980年左右的S语言的一个分支。可以认为R是S语言的一种实现。而S语言是由AT&T贝尔实验室开发的一种用来进行数据探索、统计分析和作图的解释型语言。

R语言的功能

R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统数组运算工具(其向量、矩阵运算方面功能尤其强大)完整连贯的统计分析工具优秀的统计制图功能简便而强大的编程语言:可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能。

单位根检验

单位根检验是指检验序列中是否存在单位根,因为存在单位根就是非平稳时间序列了。单位根就是指单位根过程,可以证明,序列中存在单位根过程就不平稳,会使回归分析中存在伪回归。

单位根检验是随机过程的问题。定义随机序列{x_t},t=1,2,…是一单位根过程,若x_t=ρx_t-1+ε,t=1,2…其中ρ=1,{ε}为一平稳序列(白噪声),且E[ε]=0,V(ε)=σ<∞,Cov(ε,ε)=μ<∞这里τ=1,2…。特别地,若{ε}是独立同分布的,且E[ε]=0,V(ε)=σ<∞,则上式就变成一个随机游走序列,因此随机游走序列是一种最简单的单位根过程。

输入为一个vector,我们以a <- seq(1, 250, 1)做为示例数据

利用qqnorm函数直接绘制出了如下正态检验qq图

还可以进一步使用qqline命令在qq图上加上标准直线

注:qqline的默认算法为向量a上四分位数和下四分位数对应两个点的连线

Step 1: 首先我们算出vector中每一个数对应的百分位数

  在向量a中,数字1对应的累积比例(即小于等于数字1的频率)为1/length(a) = 0.04,数字250对应的累积比例为250/length(a) = 100%

  

Step 2: 根据累积比例数计算出正态分布对应的百分位数值

  直接绘制点图即为qqplot图

  

Step 3: 可以查看一下q值发现,最后的q值为Inf

  这是因为百分位100%对应的正态分布数值为无穷大,所以最后得出的图与R自带的qqnorm的稍微有一点点区别,这是因为在内置的qqnorm函数中对累积百分数进行了调整,为了避免inf的出现,使用 t <- (rank(a) -0.5)/length(a) 调整后得出的结果与qqnorm的结果图就完全一致了。

Step 4: 绘制标准直线

  如果是依据标准正态分布做的qq图,则标准直线截距为mean(a),斜率为sd(a)

[图片上传失败...(image-50be7a-1512789490785)]

  如果是依据(mean(a), var(a))正态分布做的qq图,则标准直线为y=x

[图片上传失败...(image-4e2370-1512789490785)]

pp plot横轴为实际累积概率,即上文qq plot中的变量t

纵轴为期望累积的概率,标准直线为 y=x

[图片上传失败...(image-682bd0-1512789490785)]

结果大致呈一条直线则说明大致服从正态分布

快速计算累积百分数的方法:

[图片上传失败...(image-de8e63-1512789490785)]

参考:

https://wenku.baidu.com/view/c661ebb365ce050876321319.html

http://data.library.virginia.edu/understanding-q-q-plots/

http://www.cnblogs.com/xianghang123/archive/2012/08/08/2628623.html

https://d.cosx.org/d/18521-18521

可以查查csape这个函数,我给你一段代码吧:

x=1:7

y=[0

0.9

4.8

24.3

67.6

83.5

92.8

98.5

0]

%

以上是离散点的原始数据

pp=csape(x,y,'second')

%

样条曲线

%

second表示第二边界条件,取值对应y中第一个0和最后的0

x=1:0.1:7

y=ppval(p