2014-02-26 91 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): 協整,糾錯和 非平穩數據的計量分析,牛津大學出版社,牛津大學。