我正在使用R包bfast
来检测时间序列中的任何更改点,并遇到以下错误。有什么建议吗?非常感谢。
library(bfast)
Mydata = Nile
bf1 <- bfast01(data = Mydata)
if(is.nan(p0)|| p0&lt; a2 || p0&gt;(1 - a2)){: 缺少需要TRUE / FALSE的值
答案 0 :(得分:3)
似乎bfast01
试图从其他函数参数中猜测模型。我对bfast
不太熟悉,但这似乎会导致Nile
数据出错。
如果我们明确指定模型,
fit <- bfast01(Nile, formula = response ~ trend);
不会出现错误,而bfast01
会在索引28处获得更改点。
fit$breakpoints;
#[1] 28
此结果与使用changepoint
的类似变更点分析的结果一致:
changepoint::cpt.mean(Nile, class = FALSE);
# cpt conf.value
# 28 1
请注意,对于bfast
变更点分析,仅涉及trend
分量的模型似乎就足够了,因为季节性/自回归效应会以较小的比例发生。您需要根据实际数据检查模型的有效性。