设为首页 加入收藏

TOP

时间序列分析工具箱——tibbletime(一)
2019-08-15 00:10:04 】 浏览:281
Tags:时间序列 分析 工具箱 tibbletime

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

原文链接:www.business-science.io/code-tools/2017/10/26/demo_week_tibbletime.html

注意:由于软件包的版本变化,部分代码被修改,文字有删减

时间序列分析工具箱——tibbletime

tibbletime 的用途

  1. tidy 时间序列分析的未来:基于 tbl 的新类——tbl_time,为 tibble 对象添加时间轴,赋予处理时间的能力。
  2. 时间序列函数:为 tbl_time 对象专门设计的一系列函数,例如:
    • filter_time():根据日期简便快捷地过滤一个 tbl_time 对象。
    • as_period():转换时间周期(例如月度变为年度),让用户能将数据聚合到低粒度水平上。
    • time_collapse():当使用 time_collapse 时,tbl_time 对象中落入相同周期的索引将被修改成相同的日期。
    • rollify():修改一个函数,使其能够在特定时间区间上计算一个或一组值。可以用来计算滚动均值,或其他 tidyverse 框架下的滚动计算。
    • create_series():根据规则时间序列,用简化标记快速初始化一个带有 datetbl_time 对象。

加载包

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()

数据

tq_get() 下载 FANG(脸书、亚马逊、网飞、谷歌)每天的股票价格。

# 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

我们设计了一个函数来按股票代码分块绘图,可以在本文中重复使用。没有必要深究这些代码,只要认识到我们正在创建一个 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")

上图所显示就是我们要处理的数据,下面让我们进入 tibbletime 的教

首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇R中的空间数据分析 下一篇R语言grid包just参数如何just图形..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目