1.R语言函数ur.kpss()
用R自带的google股价变化数据goog为例(可以通过导入fpp2包之后直接使用goog这个数组变量)。
1.1 对goog进行KPSS检验
R代码为
library(urca)
summary(ur.kpss(goog))
输出结果如下:
这个结果怎么解释?没找到官方的太严格的资料。我根据一些参考资料中做了一些推断,仅供参考。
(1)比较显然地,检验的结果是用 Value of test-statistic:10.7223,来和下面最下面的4个显著性水平(significance level,10pct表示10%,5pct表示5%)和对应的临界值(critical values)来比较。
(2)KPSS原假设H0是——序列是平稳的,KPSS检验是单边检验。
假设检验的显著性水平的含义是
P(拒绝H0 | H0为真)=α
而拒绝H0是指发生 Value of test-statistic>Critical value【这个地方是我猜的或者推断的】。显著性水平的含义亦即
P( Value of test-statistic> Critical value | H0为真)=Critical value for a sigificance level
(3)本次检验中Value of test-statistic=10.7223>0.739,也就是在“序列为平稳序列这个假设前提下,概率0.01的小概率事件发生了”。所以原假设为假。于是得出结论:原序列是非平稳序列。
1.2 对diff(goog)进行KPSS检验
我们都知道,差分是把非平稳序列转化为平稳序列的一种方法。对goog数据做一阶差分操作,重新进行检验,
summary(ur.kpss(diff(goog)))
运行结果如下:
显然地,Value of test-statistic 越小越好,小于最左边的 critical values。检验结果没有得出拒绝原假设的检验结果,所以不能拒绝原假设。
1.3 其他情况
如果 Value of test-statistic落在不同的临界点之间,可以根据假设检验的原理来得出结论。其他的检验方法一般都用5%的临界点作为判断标准。
图片输出中的 Test is of type:mu with 7 lags的计算方法可能是trunc(3·sqrt(n)/13),其中n是数组或者时间序列的长度,本例中length(goog)=1000。所以trunc(3·sqrt(1000)/13)=7。