2014-02-26 94 views
0

我使用add.test从TSERIES包如何使作为R adf.test打印更精确p值

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具有下界印刷对 - 值为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

请inculde您的数据示例,使您的问题[reproducible](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 – tonytonov

回答

1

?adf.test帮助文件:

的p值从表4.2,第插值。 Banerjee等人103和 al。 (1993)。如果计算的统计量超出关键值 的表格,则会生成警告消息。

所以简短的答案是否定的,你不能得到“更精确”的p值。至少不是直接的。无论如何,通常报告p<0.01以外的任何内容都没有多大意义。

如果你真的想要得到的“精确” P值,你应该看看下面的参考。我无法访问它,但他们可能会解释他们是如何提出他们的“临界值表”的,因此可能会扩展它。

A.班纳吉,J. J. Dolado,J. W.加尔布雷思和D. F.亨得利(1993): 协整,纠错和 非平稳数据的计量分析,牛津大学出版社,牛津大学。