Horizon Graphs 解读及R实现

2018-12-06  本文已影响0人  HappyF_M

废话不说先上图:

下图展示的是从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

上一篇下一篇

猜你喜欢

热点阅读