我使用来自tseries包的add.test创建一个简单的协整功能
cointegration <- function(vals)
{
library(tseries)
beta <- coef(lm(vals[,2] ~ vals[,1] + 0, data = vals))[1]
names(beta) <- NULL
res <- adf.test(vals[,2] - beta*vals[,1], alternative = "stationary", k = 0)
return( list(beta = beta, p.value = res$p.value) )
}
显然,adf.test的打印p值下限为0.01。任何值较小的p值都会产生警告信息:
Warning message:
In adf.test(vals[, 2] - beta * vals[, 1], alternative = "stationary", :
p-value smaller than printed p-value
是否可以让adf.test打印出更精确的p值?
我知道另一种方法是取消警告信息:
res <- suppressWarnings(adf.test(vals[,2] - beta*vals[,1],
alternative = "stationary", k = 0))
但是打印更精确的p值会很不错。
由于
答案 0 :(得分:1)
来自?adf.test
的帮助文件:
从表4.2,p中插入p值。 Banerjee等的103 人。 (1993)。如果计算的统计量在临界表之外 值,然后生成警告消息。
所以简短的答案是否定的,你不能得到“更精确”的p值。至少不是直接的。无论如何,报告p<0.01
以外的任何内容通常没有多大意义。
如果你真的想得到“精确”的p值,你应该看下面的参考。我无法访问它,但他们可能会解释他们如何提出他们的“关键值表”,因此可能会扩展它。
一个。 Banerjee,J。J. Dolado,J。W. Galbraith和D. F. Hendry(1993): 协整,误差修正和计量经济分析 非固定数据,牛津大学出版社,牛津。