如何使adf.test在R中打印更精确的p值

时间:2014-02-26 04:44:38

标签: r precision suppress-warnings p-value

我使用来自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值会很不错。

由于

1 个答案:

答案 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):   协整,误差修正和计量经济分析   非固定数据,牛津大学出版社,牛津。

相关问题
最新问题