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()
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()
评论
发表评论