我要测试时间序列是否包含结构性变化。
使用此模拟示例创建了一个序列,该序列在进行30和80次观察后有两个中断。
set.seed(42)
sim_data = data.frame(outcome = c(rnorm(30, 10, 1), rnorm(50, 20, 2), rnorm(20, 45, 1)))
sim_ts = ts(data = sim_data, start = c(2010, 1), frequency = 12)
plot(sim_ts)
我使用strucchange R package来确定断点的数量(如果有的话)并对其建模:
library("strucchange")
break_points = breakpoints(sim_ts ~ 1) #2 breakpoints at 30 and 80
break_factor = breakfactor(break_points, breaks = 2)
break_model = lm(sim_ts ~ break_factor - 1)
...,然后将具有2个结构变化点的拟合模型放在原始时间序列之上:
lines(fitted(break_points, breaks = 2), col = 4)
我感兴趣的是:如何测试具有结构变化的模型是否比简单的线性模型更合适?
simple_lm = lm(sim_ts ~ time(sim_ts))
abline(simple_lm, col='red') #to add the linear line to the plot
模型比较是否只是anova(simple_lm, break_model)
?
我是否需要先进行静态测试?还是模型比较包含了这一点?
答案 0 :(得分:1)
在预测文献中评估良好拟合的“正常”方法是使用损失函数(MSE)。因为您没有进行预测,所以最简单的方法可能只是比较R²。 (如果您关心的是一个很好的选择)
方差分析方法需要假设independence of observervations,所以我不确定是否存在陷阱。即使它在这里似乎可行。