tidyverts软件包

library(tidyverse)
library(tsibble)
library(lubridate)
library(feasts)
#有一套新的进行整洁的时间序列分析的软件包, 为tidyverts软件包。
#tsibble提供了数据基础设施,用于整理时态数据和争用工具。 一个tsibble是一个时间序列对象,比ts,xts等现有类更容易使用。
#使用as_tsibble()可以轻松地将现有ts对象转换为tsibble对象
USAccDeaths %>%
  as_tsibble()
#这将创建一个Index列,其中包含时间或日期索引。 这些在tsibbles中始终是显式的,并且可以采用丰富的时间和日期类来处理任何类型的时态数据。 第二列是测量变量。 请注意标题中的[1M] ,表示这是月度数据。
#从csv文件创建tsibbles也很容易,首先使用readr::read_csv()然后使用as_tsibble()函数读取它们。
tourism %>%
  filter(Purpose=='Holiday') %>%
  group_by(State) %>%
  summarise(Trips=sum(Trips))

#这里我们有一些名为Keys的附加列。 键和索引的每个唯一组合应该有一行。 不是索引或关键变量的列是测量变量。有三个键( Region , State和Purpose )和一个Measurement( Trips )
tourism %>%
  mutate(Year=year(Quarter)) %>%
  index_by(Year) %>%
  group_by(Region,State,Purpose) %>%
  summarise(Trips=sum(Trips)) %>%
  ungroup()

#Date和Time变量将索引拆分为两个组件,表示日期和一小时。 这使得生成一些有趣的图很容易。 
pedestrian %>%
  mutate(
    Day = lubridate::wday(Date, label = TRUE),
    Weekend = (Day %in% c("Sun", "Sat"))
  ) %>%
  ggplot(aes(x = Time, y = Count, group = Date)) +
  geom_line(aes(col = Weekend)) +
  facet_grid(Sensor ~ .)

#orecast包是为ts对象构建的,而feasts包为tsibbles对象构建
holidays <- tourism %>%
  filter(Purpose == "Holiday") %>%
  group_by(State) %>%
  summarise(Trips = sum(Trips))
#时序图
holidays %>%
  autoplot(Trips)
#季节
holidays %>%
  gg_season(Trips)
#子系列图可以很容易地显示随时间变化的季节性变化
holidays %>%
  gg_subseries(Trips)
#ACF通常用于评估时间序列中的动态信息。
holidays %>%
  ACF(Trips)%>%
  autoplot()
#该滞后图显示了滞后观察(垂直轴)与当前观察的散点图,其中点由当前季度着色。 这些滞后图的相关性构成了ACF。 在这个例子中,很明显Q1对塔斯马尼亚来说是一个强大的季度,并且季节性在滞后4和8处引起正相关,而在滞后2和6处呈现负相关。
holidays %>%
  filter(State=="Tasmania") %>%
  gg_lag(Trips, geom="point")
#使用gg_tsdisplay()创建的复合图。 这与预测包中相应的ggtsdisplay()函数略有不同,默认情况下在右下方的面板中显示PACF。 我认为季节图对于探索性数据分析来说更具信息性,因此这是新功能中默认显示的内容。
holidays %>%
  filter(State=="Tasmania") %>%
  gg_tsdisplay(Trips)
#分解
#stats包为一个季节周期的单个时间序列的STL分解提供stl()函数。 预测包使用mstl()对此进行了扩展,以允许多个季节性时段
holidays %>%
  STL(Trips) %>%
  autoplot()
#半小时电力数据的STL分解
tsibbledata::vic_elec %>%
  filter(yearmonth(Date) >= yearmonth("2014 Oct")) %>%
  STL(Demand ~ trend(window=77) + season(window="periodic")) %>%
  autoplot()
#每小时的季节性在很大程度上毫无意义 - 我们预计电力需求不会在一小时内产生周期性影响 - 并且每日季节性在很大程度上取决于其上方的每周季节性。 这两个组成部分的混淆使得很难解释每日季节性。 因此,我们可以删除每小时和每日组件,而只是模拟每周季节性。
tsibbledata::vic_elec %>%
  filter(yearmonth(Date) >= yearmonth("2014 Oct")) %>%
  STL(
    Demand ~ trend(window=77) +
      season("week", window="periodic")
  ) %>%
  autoplot()

评论

此博客中的热门博文

V2ray websocket(ws)+tls+nginx分流

Rstudio 使用代理