我正在尝试使用strucchange包中的'monitor'进行更改点检测,但是我无法获得有用的输出。
我的输入是带时间戳的数据框,我希望将休息作为日期返回,但它们将作为观察编号返回:
cDF1 <- myDF[1:80,]
> cDF1[1:3,]
Year Month Value
2000-10 2000 Oct 1
2001-01 2001 Jan 1
2001-04 2001 Apr 1
me.mefp <- mefp(Value~1, type="ME", rescale=TRUE,
+ data=cDF1, alpha=0.05)
cDF1 <- myDF[1:104,]
> me.mefp <- monitor(me.mefp)
Break detected at observation # 98
在结构手册中,有一些例子可以保留时间戳,但我无法弄清楚它们的格式有什么不同。
如果我将数据帧设置为时间序列,则没有区别。
有人可以帮忙吗?
谢谢!
答案 0 :(得分:1)
mefp
/ monitor
函数只能处理ts
个时间序列。因此,您可以提供data
参数,该参数是(多变量)ts
,data.frame
,其中响应变量是ts
,或者是独立的ts
没有data
参数。在您的情况下,数据似乎是季度的,因为没有回归量(除常数外),独立的时间序列可能是最方便的。
作为一个人为的例子,我模拟了季度时间序列中的100个观察结果:
set.seed(1)
Value <- ts(rnorm(100, mean = rep(0:1, c(70, 30)), sd = 0.5),
start = c(1990, 1), freq = 4)
plot(Value)
然后我选择截至1999年底的数据作为历史时期并初始化监控过程:
val <- window(Value, end = c(1999, 4))
m <- mefp(val ~ 1, type = "ME", rescale = TRUE, alpha = 0.05)
然后数据可以到达,比如直到2009年底:
val <- window(Value, end = c(2009, 4))
m <- monitor(m)
最后到2014年底:
val <- window(Value, end = c(2014, 4))
m <- monitor(m)
## Break detected at observation # 81
plot(m)
这里,最终检测到中断,并以图形方式显示。
P.S。:在您的示例中,似乎数据是正数。如果是这样,采取日志可能(或可能不)有用。