使用 ADF 测试绘制定义的函数



我有两个时间序列TS[,1]TS[,2]。并试图 通过改变bTS[,1] - b*TS[,2]找到ADF测试的最低P值,可以使TS[,1] - b*TS[,2]静止。

所以我一直在绘制p.valueb图,但似乎语法问题阻止了我进行更多工作。当我像pvalfun(1)一样计算点时,它给了我如下答案。但是当我尝试绘制pvalfun(定义如下)时,它会给我返回错误消息,如下所示。不知道为什么绘制pvalfun不起作用。

下面是我的代码和错误消息。

library(tseries)
sprd <- TS[,1] - beta*TS[,2]
ht <- adf.test(sprd, alternative='stationary', k=0)
pval <- as.numeric(ht$p.value)
pvalfun<-function(b){
sprd <- TS[,1] - b*TS[,2]
ht <- adf.test(sprd, alternative='stationary', k=0)
return(as.numeric(ht$p.value))
}
x<-seq(-1,1,by = 0.01)
plot(pvalfun(x))
Warning message:
In b * TS[, 2] :
longer object length is not a multiple of shorter object length
pvalfun(1)
[1] 0.5090961
pvalfun<-function(b){
sprd = TS%*%rbind(rep(1,length(b)), -b) 
U = apply(sprd, 2, function(c)  { ht <- adf.test(c, alternative='stationary', k=0)
returnc(as.numeric(ht$p.value)) }
return(U)
}

最新更新