时间序列分析是数据分析中最基本、也是最重要的部分,这样说一点也不为过,因为几乎所有的商业分析都离不开时间维度,任何一个商业数据集,如果没有时间维度,其分析价值就大打折扣。
既然时间序列分析如此重要,有没有什么可以快速掌握的方法呢?当然有,只需要记住一句话:时间序列分析的核心是找到趋势性(长期发展规律)和季节性(周期变化的规律)。从具体的分析方法来说,则需要将时间拆解成不同的颗粒度进行分析。
接下来,我们将基于观远 BI 平台探索实现方法。一睹为快吧~
将时间颗粒度设置为“年度”
使用观远 BI 进行操作,在页面中新建卡片,选择可视化图表。
可视化类型选择“多线图”,将【订单日期(年)】拖入“维度”区域,将【销售额】拖入“数值”区域,将【利润】拖入“叠加图形数值”区域并选为“次轴”。
从图上看销售额和利润在最近几年都在持续增长,看上去总体势头还是不错的,这是我们从这个图表中得到的关于趋势性的解读。
但是如果我们稍微仔细一点观察,从这个乐观的结论之中能够发现一点瑕疵:看上去利润的增长曲线与销售额的增长曲线形态并不相同,具体说是在最近一年,利润增长比较“平”,这表明利润增长有点放缓,但销售额的增长却仍然很高耸。
抓住这一点可疑之处,我们需要把“整体向好”的定性结论进行进一步量化,需要观察销售额和利润的具体年同比增长值。
在上一张卡片的基础上,点击“数值”区域中的【销售额(求和)】字段,选择高级计算—同比/环比—年环比—增长率—(本期数据-上期数据)/上期数据%。
完成后,对“叠加图形数值”中的【利润(求和)】字段做同样操作。即可得出两个字段的年同比值,如下图。
从这个图中显然销售额和利润的同比增速差距显著,确切地说,2019 年和 2020 年利润还在勉强跟随者销售额的高增长节奏。但在 2021 年,销售额达到了超过 32% 的高速增长,而利润的同比增长却仅有大约 9%。
这表明什么呢?作为数据分析师,从数据中解读出业务才是工作的核心,因此这个数据需要业务方向的解释。想到了什么?对了,增收不增利!这表明公司的业务在高速发展过程中实际上已经隐隐表现出了一些忧患之处。
为了进一步验证我们的想法,我们换一个指标来衡量是否真的“增收不增利”,我们选用利润率指标(注意在原始数据集中并没有利润率这个字段,需要我们自己建立),观察最近几年的利润率变化。
创建一个计算字段,命名为【利润率】,字段公式:sum(利润)/sum(销售额)。
将【订单日期(年)】拖入“维度”区域,将【利润率】拖入“数值”区域。
终于,我们从销售额、利润双双增长的“形势大好”中,发现我们的利润率在最近一年跌到了历史最低,这提醒我们在销售额飞速增长的同时,关注盈利能力是整个公司需要引起重视的另一个战略方面。
将时间颗粒度设置为“季度”
年度上的季节性规律并非不存在,但往往需要相当长的时间跨度才能显现。
相比之下,将时间颗粒度展开到季度层次,发现季节性规律就要容易得到,这一方面是因为数据点的增多,另一方面也是因为客观上很多企业的经营情况也的的确确都会带有明显的季节性特征。
我们仍然使用刚才的数据集,将时间粒度展开到季度层面。
使用“单线图”可视化类型,将【订单日期(季度)】拖入“维度”区域,将【销售额】拖入“数值”区域。
在这个图中曲线上下起伏展现了一种数据的美感,而在这美感的背后,则是业务上明确的季节性特征,经过观察,我们可以得到两点洞察:
A. 每年第一季度销售额都是最低的,而每年第四季度销售额都是最高的;
B. 每年第一季度相比前一年第四季度来说,销售额都会大幅度下滑。
这个规律符合很多公司的业务实际:每年的第四季度要“冲业绩”,而每年的第一季度则要放松一下养精蓄锐。
如果从季度颗粒度层面上是否可以分析长期趋势?这取决于数据的具体形态,有的数据比较容易观察,有的则不太明显,但我们可以借助一些辅助工具来进行长期趋势的观察,比如我们在这里使用平均线(趋势线更佳)。
在右下方的图表属性中,展开“辅助线”板块,选择“添加”,字段使用【销售额】,聚合方式使用“平均值”。
▼
其实就算不加辅助线,我们也大概能看出“波动中增长”的大概走势,只不过有了参考线,这个特征更明确一些。
将时间颗粒度设为“月份”
在进行实际的数据观察之前,我们需要先澄清一下“月份”的概念。
实际上月份有两种,一种叫做“年月”,类似于“2021年1月”这种;而另一种就是单纯的“月份”,类似于“1月”这种。为了区别,我们在后续的分析中还是明确使用年月或者月份。
我们先将时间序列展开到年月级别。
仍然使用可视化类型中的“单线图”,将【订单日期(月)】拖入“维度”区域,将【销售额】拖入“数值”区域。
显然,这个曲线图虽然有更多的起伏跌宕和数据美感,但并不利于我们观察,无论是季节性规律还是长期趋势性走势,从这张图上都不太容易得到一目了然的结论。
当然,如果借助于趋势分析工具和预测工具,这张图还是能比较好地展示整体走势和季节性规律的,甚至能用来进行预测,不过本文基于基本的可视化图表分析工具撰写,暂时不涉及这些进阶的分析方法。
所以,我们需要转换一下思路,将这个曲线折叠一下,观察最近这些年的销售中是否存在季节性规律。我们使用多线图来对比各个月份的销售情况。
我们先创建出单独代表月份的字段,通过创建计算字段,编写公式。
接下来使用可视化类型“多线图”,将【月份】拖入“维度”区域,【订单日期(年)】拖入“对比”区域,【销售额】拖入“数值”区域。并使用【月份】进行排序,排序依据选择“聚合方式”—“无处理”。
▼
这样一来,规律几乎立刻呈现出来:
A. 每年的第一季度(1月、2月、3月)销售情况都乏善可陈。
B. 而在每年的七月份,竟然也是一个传统的低迷月份。
这与很多企业的实际业务也很接近,除了年度冲业绩,上半年也是要冲业绩的,尤其是第一季度那么差,第二季度需要冲一把,然后在第三节度的开始,需要休息放松一下,或者去半年度的 QBR 了。
将时间颗粒度设置为“星期”
与月份类似,“星期”的概念也需要澄清一下。实际很多时间序列分析中都有“周次”,类似“2021年第2周”;或者星期,类似“星期一”这种。
在实际的业务分析中,这两个概念各有用处,一般周次用来追踪整体的销售业绩达成情况,以及同环比情况,而星期则更多用来分析规律性特征。我们后续也将区别这两个概念的使用,但在本文中,我们只分析“星期”的季节性规律特征。
我们绘制星期的销售额图表如下。
使用可视化类型中的“多线图”,将【订单日期(星期)】拖入“维度”区域,将【月份】拖入“对比”区域,将【销售额】拖入“数值”区域。使用【订单日期(星期)】进行排序,依据选择“聚合方式”—“无处理”。
▼
请注意,这里有 12 根线条,每根线条表示一个月份,在过去的几年中,每个月份都有好几个周一、周二......如果在星期几上呈现明显的特征规律,按说是可以观察到的。
图表果然没有令我们失望,我们发现星期一和星期二实际上销售额整体比较低的两天,其他日子不太好判别,我们将多线图切换成堆积面积图来展现,如下图。
显然,堆积面积图明确告诉我们每周一、周二是销售“淡季”,周三至周六是“旺季”。这也提醒我们的门店周六日需要工作,而周一周二则可以倒休。
将颗粒度设置为“日期”
如果不是带有时分秒的时间戳格式,那么对于时间维度的分析,“日期”就是最细颗粒度了。
通常情况下,细到每天的数据并不太适合观察长期走势或者季节性规律,而一般销售类的数据在日期层面上也经常会呈现比较大的起伏变化,因此那些日环比之类的分析也不太具有实际意义。当然,如果是价格、产量这种预期比较平稳的指标,日环比的变化,甚至微小的变化都可能对经营产生较大的影响,仍然是需要密切关注的。
本次使用的数据是销售数据,我们先来看一下把数据直接展开到日期层级的可视化效果。
使用可视化类型中的“单线图”,将【订单日期】拖入“维度”区域,将【销售额】拖入“数值”区域。
怎么样?可视化效果很差,基本上无法进行趋势性和季节性的观察。但是也有它的用处:发现异常值。有一些天的数据显著突出,值得关注,我们需要指导那些天究竟发生了什么,是什么原因导致了数据异常。
我们先启用缩略轴将时间窗口聚焦在较小的范围内,如图:
展开右侧图表属性中的“坐标轴”,将“缩略图”选项勾选为显示。
▼
在这个时间区间内,我们发现 2021 年 12 月 15 日的销售额奇高。所以,我们直接启用快捷菜单上的数据解释来帮我们分析数据异常的原因。
通常情况下,如果发现某一天的数据异常,会过滤该天的数据,然后在其他维度上展开这一天的数据,例如这一天各产品的销售额、各地区的销售额等,究竟这一天的异常是由于某个产品造成的,亦或是某个地区造成的,就可以通过这一系列的分析来得到结论。
但这个过程十分繁琐,需要把数据集中每个维度与目标指标组合一遍。而数据解释则可以用算法代替我们进行人工的组合与观察,直接告诉我们这个数据异常是由哪些维度造成的。
点击图表上方的“数据解释”按键,打开数据解释配置对话框。
在分析方式中,勾选“成分分析”和“对比分析”两项内容,并在对比分析中,选择字段【订单日期】,对比项选择“固定”——“2018-01-01”,如下图。
完成编辑后,回到仪表板,点击卡片中的“2021-12-15”日期点,选择“解释”按键。
我们看一下数据解释给出的结论:
右侧的窗格中给出了对于这一天销售额的成分分析,某扶手椅、某个订单、云南省......这几个维度就是造成销售额奇高的原因,我们再展开订单 ID 的分析,得到一个瀑布图,告诉我们构成这个销售总额的最重要的几笔订单。
当然,如果图省事,我们可以直接使用系统提供的概要报告作为分析结论。
点击数据解释中的“查看报告概述”:
时间序列分析的方法和应用场景非常丰富,本文仅作为入门,帮大家快速发现数据中的趋势性和季节性特征,希望对大家有用。同时,也希望大家有机会继续深入学习研究时间序列分析的高阶应用场景。