我使用R包bfast
来检测时间序列中的任何变化点,并遇到以下错误。有什么建议吗?非常感谢。
library(bfast)
Mydata = Nile
bf1 <- bfast01(data = Mydata)
if(is.nan(p0)|| p0 <a2 || p0>(1 - a2)){:缺失值需要TRUE / FALSE时出错
似乎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
分量的模型似乎就足够了,因为季节性/自回归效应发生在较小的范围内。您需要根据实际数据检查模型的有效性。