首页 文章

R包`bfast`错误:缺少需要TRUE / FALSE的值

提问于
浏览
0

我正在使用R包 bfast 来检测时间序列中的任何更改点,并遇到以下错误 . 有什么建议吗?非常感谢 .

library(bfast)
Mydata = Nile
bf1 <- bfast01(data = Mydata)

if(is.nan(p0)|| p0 <a2 || p0>(1 - a2)){:缺失值需要TRUE / FALSE时出错

1 回答

  • 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 分量的模型似乎就足够了,因为季节性/自回归效应发生在较小的范围内 . 您需要根据实际数据检查模型的有效性 .

相关问题