我试图根据R中带strucchange
包的自回归模型测试时间序列中的结构变化。
它类似于:
a<-ts(rnorm(150))
b<-breakpoints(a~lag(a,-1))
coeftest(b)
似乎发生的是breakpoints
命令对滞后运算符的误解。
我该怎么办?是否有strucchange
包的替代方案?
由于
答案 0 :(得分:0)
这种误解不是breakpoints()
独有的,lm()
做同样的事情:
lm(a ~ lag(a, -1))
## Call:
## lm(formula = a ~ lag(a, -1))
##
## Coefficients:
## (Intercept) lag(a, -1)
## -1.813e-17 1.000e+00
原因是a
和lag(a, -1)
具有相同的长度(并且只是一个移位的时间索引),因此cbind()
产生两个相同的列(并忽略时间索引)。要产生正确的结果,只需设置一个合适的多变量时间序列并使用:
d <- ts.intersect(a = a, lag = lag(a, -1))
lm(a ~ lag, data = d)
## Call:
## lm(formula = a ~ lag, data = d)
##
## Coefficients:
## (Intercept) lag
## -0.14136 0.06969
同样的方法也适用于breakpoints(a ~ lag, data = d)
。