时间类别分析工具箱

时间类别分析工具箱

目录

目录

  • 光阴系列分析工具箱——tibbletime
    • tibbletime
      的用途
    • 加载包
    • 数据
    • 教程:tibbletime
      • 起初化三个 tbl_time
        对象
      • 时刻系列函数
  • 光阴类别分析工具箱——timetk
    • timetk 的首要用途
    • 加载包
    • 数据
    • timetk 教程:
      • PART 一:时间系列机器学习
      • PART 2:转换

翻译自《Demo Week: Tidy Time Series Analysis with tibbletime》

初稿链接:www.business-science.io/code-tools/20170%/26/demo_week_tibbletime.html

小心:由于软件包的版本变化,部分代码被改换,文字有删减

翻译自《Demo Week: Time Series Machine Learning with timetk》

永利皇宫 ,初稿链接:www.business-science.io/code-tools/20170%/24/demo_week_timetk.html

岁月体系分析工具箱——tibbletime

永利皇宫 1

时刻连串分析工具箱——timetk

永利皇宫 2

tibbletime 的用途

  1. tidy 时间连串分析的前程:基于 tbl 的新类——tbl_time,为
    tibble 对象加多时间轴,赋予管理时间的才干。
  2. 日子类别函数:为 tbl_time 对象特别规划的1种类函数,举个例子:
    • filter_time():依照日期简便飞速地过滤四个 tbl_time 对象。
    • as_period():转变时间周期(比卯月度变为年度),让用户能将数据聚合到低粒度水平上。
    • time_collapse():当使用 time_collapse 时,tbl_time
      对象中落入同样周期的目录将被修改成一样的日期。
    • rollify():修改3个函数,使其能够在一定时间距离上计算3个或一组值。能够用来总计滚动均值,或别的
      tidyverse 框架下的滚动总计。
    • create_series():根据规则时间系列,用简化标识神速起头化3个包罗
      datetbl_time 对象。

timetk 的首要用途

四个首要用途:

  1. 日子体系机器学习:使用回归算法举办展望;
  2. 结构时间种类索引:基于时间方式提取、探求和扩大时间类别索引;
  3. 改动差别品种的时光体系数据(例如 tblxtszoots
    之间):轻巧已毕不相同类其他岁月体系数据里面包车型客车交互调换。

大家明日将商讨时间种类机器学习和数据类型转变。第叁个议题(提取和结构今后光阴类别)就要时间类别机器学习中涉及,因为那对预测正确性相当首要。

加载包

tibbletime 近来还在外向开荒阶段,能够用常规方法安装,也能够借助
devtools 从 github 上安装新型开拓版。

# Get tibbletime version with latest features
devtools::install_github("business-science/tibbletime")

安装完毕后,加载上边包车型大巴包:

  • tibbletime:成立带时间轴的 tibble 对象,能够选择 tbl_time
    函数。
  • tidyquant:加载 tidyverse 框架,用 tq_get() 获取数据。

# Load libraries
library(tibbletime) # Version: 0.1.1, Future of tidy time series analysis
library(tidyquant)  # Loads tidyverse, tq_get()

加载包

急需加在多少个包:

  • tidyquant:用于获取数据并在后台加载 tidyverse
  • timetk:Murano 中用于拍卖时间体系的工具包

假定还并未设置过,请用上边包车型大巴一声令下安装:

# Install packagesinstall.packagesinstall.packages("tidyquant")

加载包。

# Load librarieslibrary     # Toolkit for working with time series in Rlibrary(tidyquant)  # Loads tidyverse, financial pkgs, used to get data

数据

tq_get() 下载 FANG(Twitter、亚马逊(Amazon)、网飞、谷歌(谷歌(Google)))每一天的股价。

# Stock Prices from Yahoo! Finance
FANG_symbols <- c("FB", "AMZN", "NFLX", "GOOG")

FANG_tbl_d <- FANG_symbols %>%
    tq_get(
        get = "stock.prices",
        from = "2014-01-01",
        to = "2016-12-31") 

FANG_tbl_d <- FANG_tbl_d %>%
    group_by(symbol)

FANG_tbl_d

## # A tibble: 3,024 x 8
## # Groups:   symbol [4]
##    symbol       date  open  high   low close   volume adjusted
##     <chr>     <date> <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1     FB 2014-01-02 54.83 55.22 54.19 54.71 43195500    54.71
##  2     FB 2014-01-03 55.02 55.65 54.53 54.56 38246200    54.56
##  3     FB 2014-01-06 54.42 57.26 54.05 57.20 68852600    57.20
##  4     FB 2014-01-07 57.70 58.55 57.22 57.92 77207400    57.92
##  5     FB 2014-01-08 57.60 58.41 57.23 58.23 56682400    58.23
##  6     FB 2014-01-09 58.65 58.96 56.65 57.22 92253300    57.22
##  7     FB 2014-01-10 57.13 58.30 57.06 57.94 42449500    57.94
##  8     FB 2014-01-13 57.91 58.25 55.38 55.91 63010900    55.91
##  9     FB 2014-01-14 56.46 57.78 56.10 57.74 37503600    57.74
## 10     FB 2014-01-15 57.98 58.57 57.27 57.60 33663400    57.60
## # ... with 3,014 more rows

我们布署了二个函数来按股票代码分块绘图,能够在本文中重复使用。无需深究那个代码,只要认知到大家正在开创1个
ggplot2 对象,它通过点名数据框、x、y 和
group(假使存在)等元平素创立依照“symbol”分块的音讯图。

# Setup plotting function that can be reused later
ggplot_facet_by_symbol <- function(data,
                                   mapping)
{
    if (is.null(mapping$group))
    {
        # No groups
        g <- data %>%
            ggplot(
                mapping = mapping) +
            labs(x = quo_name(mapping$x),
                 y = quo_name(mapping$y))
    }
    else
    {
        # Deal with groups
        g <- data %>%
            ggplot(
                mapping = mapping)  +
            labs(x = quo_name(mapping$x),
                 y = quo_name(mapping$y),
                 group = quo_name(mapping$group))
    }

    # Add faceting and theme
    g <- g +
        geom_line() +
        facet_wrap(
            ~ symbol, ncol = 2, scales = "free_y") +
        scale_color_tq() +
        theme_tq()

    return(g)
}

作者们能够选用绘图函数 ggplot_facet_by_symbol
快捷可视化咱们的数据。让大家看一下“除权调节的”股价。

# Plot adjusted vs date
FANG_tbl_d %>%
    ggplot_facet_by_symbol(
        mapping = aes(
            x = date, y = adjusted, color = symbol)) +
    labs(
        title = "FANG Stocks: Adjusted Prices 2014 through 2016")

永利皇宫 3

上图所出示就是我们要拍卖的数额,上面让大家进入 tibbletime 的教程。

数据

大家将动用 tidyquant 中的 tq_get() 函数从 FRED
获取数据——烧酒、葡萄酒和发酵酒发售数据。

# Beer, Wine, Distilled Alcoholic Beverages, in Millions USDbeer_sales_tbl <- tq_get(    "S4248SM144NCEN",    get = "economic.data",    from = "2010-01-01",    to = "2016-12-31")beer_sales_tbl

## # A tibble: 84 x 2##          date price##        <date> <int>##  1 2010-01-01  6558##  2 2010-02-01  7481##  3 2010-03-01  9475##  4 2010-04-01  9424##  5 2010-05-01  9351##  6 2010-06-01 10552##  7 2010-07-01  9077##  8 2010-08-01  9273##  9 2010-09-01  9420## 10 2010-10-01  9413## # ... with 74 more rows

可视化数据是一个好东西,那有助于帮助我们精晓正在利用的是何许数据。可视化对于时间体系分析和展望越来越关键。我们将使用
tidyquant 画图工具:重假设用 geom_ma(ma_fun = SMA,n = 12)
来增多一个周期为 1二的大致移动平均线来打探趋势。大家还足以见到如同同时存在着趋势性(移动平均线以近似线性的情势增加)和季节性(波峰和波谷倾向于在特定月份时有产生)。

# Plot Beer Salesbeer_sales_tbl %>%    ggplot(aes(date, price)) +    geom_line(col = palette_light +    geom_point(col = palette_light +    geom_ma(ma_fun = SMA, n = 12, size = 1) +    theme_tq() +    scale_x_date(date_breaks = "1 year", date_labels = "%Y") +    labs(title = "Beer Sales: 2007 through 2016")

永利皇宫 4

近来您对我们要分析的日子类别有了直观的感受,那么让我们一连!

教程:tibbletime

本课程将介绍下列函数的用法:

  • filter_time:对时间索引的过滤
  • as_period:退换多少的周期
  • rollify:将自便函数转换来为滚动函数

timetk 教程:

学科分为两局地。首先,大家将安份守己时间系列机器学习的办事流程。其次,大家将介绍数据转变工具。

初阶化三个 tbl_time 对象

在大家利用那个新函数此前,大家要求创建贰个 tbl_time
对象。新类的操作大约与平时的 tibble
对象同样。可是,它会在蹑脚蹑手自动追踪时间音讯。

使用 as_tbl_time() 函数开始化对象。钦定 index = date,这告诉
tbl_time 对象要盯住哪个索引。

# Convert to tbl_time
FANG_tbl_time_d <- FANG_tbl_d %>%
    as_tbl_time(index = date) 

我们得以打印 tbl_time 对象。看起来大约与分组的 tibble
同样。请小心,“Index: date”文告我们“time tibble”已精确开端化。

# Show the tbl_time object we created
FANG_tbl_time_d

## # A time tibble: 3,024 x 8
## # Index:  date
## # Groups: symbol [4]
##    symbol       date  open  high   low close   volume adjusted
##     <chr>     <date> <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1     FB 2014-01-02 54.83 55.22 54.19 54.71 43195500    54.71
##  2     FB 2014-01-03 55.02 55.65 54.53 54.56 38246200    54.56
##  3     FB 2014-01-06 54.42 57.26 54.05 57.20 68852600    57.20
##  4     FB 2014-01-07 57.70 58.55 57.22 57.92 77207400    57.92
##  5     FB 2014-01-08 57.60 58.41 57.23 58.23 56682400    58.23
##  6     FB 2014-01-09 58.65 58.96 56.65 57.22 92253300    57.22
##  7     FB 2014-01-10 57.13 58.30 57.06 57.94 42449500    57.94
##  8     FB 2014-01-13 57.91 58.25 55.38 55.91 63010900    55.91
##  9     FB 2014-01-14 56.46 57.78 56.10 57.74 37503600    57.74
## 10     FB 2014-01-15 57.98 58.57 57.27 57.60 33663400    57.60
## # ... with 3,014 more rows

小编们得以选拔绘图函数 ggplot_facet_by_symbol() 绘制它,大家来看
tbl_time 对象与 tbl 对象的反响同样。

# Plot the tbl_time object
FANG_tbl_time_d %>%
    ggplot_facet_by_symbol(
        mapping = aes(
            x = date, y = adjusted, color = symbol)) +
    labs(
        title = "Working with tbltime: Reacts same as tbl class")

永利皇宫 5

PART 一:时间种类机器学习

时刻类别机器学习是估摸时间体系数据的一种很好的艺术,但在大家初阶在此之前,这里有几个注意点:

  • 重大洞察力:将日子类别具名(时间戳消息按列扩大到特征集)用于实践机器学习。
  • 目标:大家将动用时间种类签名预测今后 1二 个月的小时连串数据。

大家将依据可用于实行时间连串机器学习的做事流程。你将见到多少个 timetk
函数怎么着援救完毕此进程。大家将使用简便的 lm()
线性回归进行机器学习,你将看到选择时间类别具名会使机器学习更加强硬和高精度。其它,你还应有思念使用其余越来越强劲的机器学习算法,举个例子
xgboostglmnet等。

网站地图xml地图