【问题标题】:No fitted model line for time series segments时间序列段没有拟合模型线
【发布时间】:2016-05-06 08:31:59
【问题描述】:

我使用以下时间序列:

Lines <- "D1,Value
1,20/11/2014 16:00,0.01
2,20/11/2014 17:00,0.01  
3,20/11/2014 19:00,0.01  
4,20/11/2014 22:00,0.20  
5,20/11/2014 23:00,0.03"

library (zoo)
library (strucchange)

z <- read.zoo(text = Lines, tz = "", format = "%d/%m/%Y %H:%M", sep = ",")

bp <- breakpoints(z ~ 1, h = 2)

plot(z)
abline(v = time(z)[bp$breakpoints])

我想为每个段添加拟合模型的图表,并创建一个具有拟合模型的截距和斜率的数据框。 对于每个分段图的拟合模型,我尝试使用以下内容:

lines(z, fitted(bp, breaks = 1), col = 2, lwd = 2)

但是没有线。 对于我尝试使用的数据框:

coef(bp, breaks = 1)

不过,我也需要斜坡。

【问题讨论】:

    标签: r time-series segment


    【解决方案1】:

    似乎断点返回一个"ts" 对象,即使输入是动物园,所以试试这个:

    fit <- zoo(fitted(bp), time(z))
    lines(fit, col = "blue", lty = 2, lwd = 2)
    

    【讨论】:

    • 非常感谢。您能否添加我如何找到每个段的绘制模型斜率?
    • 这两个段是水平的(没有斜率),因为问题中指定的公式是z ~ 1 ..使用答案中的fit,两个级别是levs &lt;- fit[bp$breakpoints + 0:1]和每小时的斜率他们之间是diff(levs) / diff(as.numeric(time(levs)) / 3600)
    • 感谢您发布解决方案。不幸的是,breakpoints() 无法与zoo 正常合作。它可以使用zoo 系列,但本质上将它们视为数字向量并且不存储相应的索引。我曾试图看看我是否可以轻松地将zoo 支持压缩到breakpoints() 中,但这些更改不会是微不足道的,而且可能不会向后兼容。所以直到现在我还没有开始写一个更强大的新breakpoints()...
    • 非常感谢。如果我希望为每个段显示斜率,如果没有斜率 - 它是 0,我该如何更新差异?
    • 没有斜率,即斜率为 0,因为您指定了一个常数模型。
    猜你喜欢
    • 2021-07-04
    • 2013-05-01
    • 2016-08-10
    • 2015-08-09
    • 2020-11-20
    • 2020-06-22
    • 2016-06-21
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多