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