我正在尝试确定时间序列回归中的结构性断裂点。我正在使用CHOW测试和CUSUM测试,但得到了两个不同的答案,但我不知道为什么。
我知道我设置的范围会影响结果,因此CUSUM测试的答案实际上不是周期73,而是90 + 73 =163。但是,这仍然与下面的CUSUM测试结果不匹配是409。我试图更改边界,但区别仍然存在。
#To load the data
install.packages("quantmod")
library(quantmod)
construc <- new.env();
getSymbols('DAUTONSA',src='FRED', env = construc);
data <- construc$DAUTONSA;
#Setting up Chow Test
fitted.values <- fitted(opt.model)
ARBreak <- matrix(fitted.values)
CTest <- ARBreak[1:626]
for (i in 90:535){
#Left
yp1<-ARBreak[2:(i-1)];
yp1lag<-ARBreak[1:(i-2)];
Left<-lm(yp1~yp1lag);
LeftRSS<-sum(Left$residuals^{2});
#Right
yp2<-ARBreak[(i+2):626];
yp2lag<-ARBreak[(i+1):625];
Right<-lm(yp2~yp2lag);
RightRSS<-sum(Right$residuals^{2});
#Total
yptot<-ARBreak[2:626];
yptotlag<-ARBreak[1:625];
tot<-lm(yptot~yptotlag);
totRSS<-sum(tot$residuals^{2});
#Chow Test
Numer<-(totRSS-(RightRSS+LeftRSS))/14;
Denomer<-(RightRSS+LeftRSS)/(626-14);
CTest[i]<-Numer/Denomer;
}
which.max(CTest); #73 so 90 + 73 = 163
#CUSUM test
RegMat <- data.frame(cbind(yp1,yp1lag))
Model <- lm(yp1~yp1lag, data = RegMat)
F_values <- Fstats(Model, from = 0.15, data = RegMat )
plot(F_values$Fstats)
breakpoint <- breakpoints(F_values) # Only one breakpoint found
lines(breakpoints(F_values))
print(breakpoint) #breakpoint is at 409 --> 90 + 409 = 499?
每种测试的实际结果都不同(Chow测试得出的答案为73 + 90 = 163,而CUSUM测试得出的答案为409 + 90 = 499),但是我认为我应该为两者找到相同的答案。