R 寓言包中的不规则时间序列
在tsibble软件包和fable软件包中,我想我在哪里读到过,我们可以处理不规则的时间序列。 我找不到任何关于如何做的例子。我有几个问题:R 寓言包中的不规则时间序列,r,tsibble,fable,tidyverts,R,Tsibble,Fable,Tidyverts,在tsibble软件包和fable软件包中,我想我在哪里读到过,我们可以处理不规则的时间序列。 我找不到任何关于如何做的例子。我有几个问题: 在建模之前,我是否必须将不规则的时间序列转换为规则的时间序列? (到目前为止,我所知道的是,我们需要将不规则时间序列转换为规则时间序列。如果不是这样,请告诉我。如果不是,那么哪些模型不需要规则时间序列?) tidyverts/tsibble/fable/fabletools中有哪些工具和模型可以处理不规则的时间序列 是否有任何问题/链接可供我查看工作示例?
DF <- structure(list(station = c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
2L), Time = structure(c(1L, 2L, 3L, 5L, 7L, 1L, 2L, 4L, 6L, 8L
), .Label = c("01-01-1974", "01-02-1974", "01-03-1974", "01-04-1974",
"01-05-1974", "01-06-1974", "01-07-1974", "01-08-1974"), class = "factor"),
WaterTemp = c(5, 5, 8.6000004, 8.1333332, 12.7999999, 5,
5, 8.6000004, 8.1333332, 12.7999999)), .Names = c("station",
"Time", "WaterTemp"), class = "data.frame", row.names = c(NA,
-10L))
DF在{fable}
中提供的大多数模型要求观察结果是规则的,并且许多模型也要求数据中没有空白。支持不规则数据的示例模型是fable::TSLM()
上述示例数据通常被视为“常规”数据,但存在缺口。这是因为数据的公共间隔为1个月
,但数据中缺少一些月。以下是如何生成此数据的TSIBLE:
DF站时间水温
#>1 1974年1月1日5.000000
#>2 1 1974年2月5日000000
#>311974年3月8日600000
#>411974年5月8日133333
#>511974年7月12日800000
#>621974年1月500万
#>7.2 1974年2月500万
#>821974年4月8.600000
#>921974年6月8日133333
#>1021974年8月12日800000
#创建“常规”TSIBLE(带间隙)
如图所示(DF,key=“station”,index=“Time”)
#>#一个气泡:10 x 3[1M]
#>#键:站[2]
#>站时水温
#>
#>1 1974年1月5日
#>2 1 1974年2月5日
#>3.1 1974年3月8日60
#>411974年5月8日13
#>5.1 1974年7月12.8日
#>6.2 1974年1月5日
#>7.2 1974年2月5日
#>821974年4月8日60
#>9.2 1974年6月8.13日
#>1021974年8月12日8
要填补此数据集的空白(类似于中所示),可以使用tsibble::fill_gaps()
函数。这使得数据与支持缺失值但不支持数据间隙的模型兼容,例如fable::ARIMA()
#创建一个“常规”tsible(带间隙),然后完成间隙
如图所示(DF,key=“station”,index=“Time”)%>%
填补空白()
#>#一个气泡:15 x 3[1M]
#>#键:站[2]
#>站时水温
#>
#>1 1974年1月5日
#>2 1 1974年2月5日
#>3.1 1974年3月8日60
#>1974年4月4日
#>511974年5月8日13
#>6.1 1974年6月娜
#>7.1 1974年7月12.8日
#>8.2 1974年1月5日
#>9.2 1974年2月5日
#>1974年3月10日至2日
#>11 2 1974年4月8日60
#>12.2 1974年5月26日
#>13.2 1974年6月8.13日
#>14.2 1974年7月NA
#>15.2 1974年8月12.8日
可以使用regular=FALSE
创建不规则时间序列。如果正在处理事件数据,这通常很有用。在这种情况下,您很少希望填补空白,因为有太多的空白
#创建一个“不规则”的TSIBLE(没有间隙的概念)
as_tsible(DF,key=“station”,index=“Time”,regular=FALSE)
#>#一个气泡:10 x 3[!]
#>#键:站[2]
#>站时水温
#>
#>1 1974年1月5日
#>2 1 1974年2月5日
#>3.1 1974年3月8日60
#>411974年5月8日13
#>5.1 1974年7月12.8日
#>6.2 1974年1月5日
#>7.2 1974年2月5日
#>821974年4月8日60
#>9.2 1974年6月8.13日
#>1021974年8月12日8
由(v0.3.0)于2021-02-09创建。感谢您提供到目前为止的信息。我的数据是不规则的,传感器在一天中的不同时间以不规则的间隔读取数据。我无法发布这些数据,也没有找到一个好的示例数据集发布在这里。我确实使用了regular=FALSE
,但是没有一个模型有效。。你是对的,除了每天读几本书之外,你每小时都在填补这篇文章的空白。我浏览了你的博客,真的很有帮助。非常感谢你的出色工作。请您添加一些示例,说明如何优雅地将预测合并回原始数据集。绘制它们很好,但也需要它们作为表格。通过使用hilo
将我的fbl\u ts转换为tbl\u ts
,我可以得到它,因为dplyr::select
在fbl\u ts
上没有按预期工作。但我相信有一种优雅的方法可以做到。对于不规则的传感器数据,设置regular=FALSE
是合适的。然而,这限制了适用于此类数据的模型。目前,fable::TSLM()
是唯一可以处理不规则数据的fable模型。您还可以考虑一些方法来适当地使数据正常化(聚合、更一致的数据收集、近似等)来使用其他时间序列模型。您的第二条评论听起来像是一个不同的问题,您可以为此打开一个新的堆栈溢出问题。