首页 > 解决方案 > 时间序列数据的协整/GPH 检验

问题描述

我对 R 和统计很陌生。我想用 GPH 检验来检验两个时间序列的协整。为此,我使用包LongMemoryTS和函数 gph(): gph(X, m, l = 1)。作为输出,我得到参数 d 的值,但我不知道如何确定 t 值或如何生成它。

这里是包中函数的链接:https ://rdrr.io/cran/LongMemoryTS/man/gph.html

这是我第一次尝试作为代码片段:

lr.reg.IP_AT_EN <- lm(IP_AT~IP_DE)
error.IP_AT_EN <- residuals(lr.reg.IP_AT_DE)
T <- length(error.IP_AT_EN)
d.IP_AT_DE <- gph(X=error.IP_AT_DE, m=T^0.4)

非常感谢您的帮助!

标签: rtime-series

解决方案


为了获得临界值,引导似乎是一种很好的方法,请参见此处http://repec.org/sce2004/up.4249.1077649371.pdf。还有使用理论误差方差的方法(见论文第 3 页)。我不完全确定这是否正确,但您至少可以使用以下代码获得统计信息:

library(xts)
library(LongMemoryTS)

set.seed(123)
# generate some data
dat_ts <- xts(matrix(rnorm(200), ncol = 2), order.by = seq.Date(Sys.Date()-100, length.out = 100, by = 'days'))
              
reg1 <- lm(dat_ts[, 1]~dat_ts[, 2])
error_reg1 <- residuals(reg1)
nT <- length(error_reg1) # bad idea to name it T!

res1 <- gph(X=error_reg1, m=nT^0.4)
res1 

t_stat <- (res1-0)/((pi^2)/6)^0.5
p_value <- pt(q = t_stat, df = 1, lower.tail = TRUE)
p_value
[1] 0.3831716

推荐阅读