美文网首页
Horizon Graphs 解读及R实现

Horizon Graphs 解读及R实现

作者: HappyF_M | 来源:发表于2018-12-06 10:27 被阅读0次

    废话不说先上图:

    下图展示的是从2005.10.3-2006.9.29一年间50只股票的每日价格变动图。每一行代表一只股票的价格变动。

    2005.10.3-2006.9.29一年间50只股票的每日价格变动

    下图是美国四个主要宏观经济指标的变化图,分别是国民失业率、制造商新订单、消费者信心指数和新房屋销售额。

    美国四个主要宏观经济指标时间变化图

    是不是感觉很美,承载着许多信息解读却无从下手。不急,数据可视化的魅力就在于此,了解它,你就会发现在数据分析的路上又打开一扇窗户。

    这些图被称作水平线图(horizon graph),在做多重时间序列分析(包括股票、产品销售、宏观经济研究等)时,需要考虑指标的时序性,相比较于Granger因果检验动态回归,水平线图监测到的领先指标的速度远远快于用统计方法揭示的结果,同时还极大减少了显示多重时间序列所需要的空间。除此之外,它们还有以下作用[3]:

    1. 找出时间序列中的异常行为和主要的模式

    2. 可以单独看每一组项目的变化趋势

    3. 任意项目间对比解释

    关于水平线图的解读,网上没有找到太多的相关信息。Stephen Few曾撰写过一篇文章,基于上面展示的50只股票股价走势图,对水平线图的产出做了一个简要的概述。下面是对它的简单称述,让大家能够在看图说话时心中有数。

    1. 先做单一项目的时间序列,并确定一个中心值或定位原点划水平基准线贯穿整个时间序列。

    2. 利用颜色的变化来让模式和异常行为显现出来。上升和下降分别用不同的颜色充填。同时,利用颜色的深浅表明上升或下降的幅度(通常来说,颜色越深变化幅度越大),并且将连续的颜色渐变离散化,根据项目的多少来确定离散色带多少(项目多,色带相对少),这样可以更快的区分出极值,关于离散色带取多少,Heer、Kong和Aggrawala(2009)曾有专门研究,附件可参考。

    3. 将值的上升和下降显示在水平参考线的一边。这样虽然让下降趋势不直观,但是可以让更多的项目可以在垂向上对比。显然这个trade-off是否值得是可以依据实际情况来判断的。

    4. 进一步将色带在更小的范围展示,达到最大化节约空间的目的。

    整个过程可以如下图(援引自参考文献[1]):

    源自 Heer、Kong和Aggrawala(2009)  的文献

    实现

    R有两个包可以实现该功能,分别是latticeExtra的horizonplot()或是ggTimeSeries的ggplot_horizon()。其中,horizonplot()是需要time series的panel data,ggTimeSeries的input时data.frame

    R实现方法

    当然,在科学上网的过程中,也发现某前端大神做出了d3版的水平线图 d3实现horizon graphs,功力目前有限,希望有朝一日能进阶。

    参考资料:

    [1]http://vis.berkeley.edu/papers/horizon/

    [2]https://stackoverflow.com/questions/38022609/create-horizon-plot

    [3]Stephen Few (2008). Time on the Horizon. Visual Business Intelligence Newsletter, June/July 2008

    如有问题,欢迎随时交流。

    微信:shxpdfl

    相关文章

      网友评论

          本文标题:Horizon Graphs 解读及R实现

          本文链接:https://www.haomeiwen.com/subject/cdyncqtx.html