我有两个时间序列TS[,1]
和TS[,2]
。并试图
通过更改TS[,1] - b*TS[,2]
可以使b
无效,找到TS[,1] - b*TS[,2]
中ADF测试的最低P值。
所以我正在制作关于图p.value
与b
的情节,但看似语法问题阻止我继续前进。当我计算像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
答案 0 :(得分:1)
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)
}