教程 - Qlik Sense 中的时间序列分解
本教程演示使用 STL 算法并使用三个图表函数分解时间序列。
本教程使用航空公司每月乘客数量的时间序列数据来演示 STL 算法的功能。STL_Trend、STL_Seasonal 和 STL_Residual 图表函数将用于创建可视化效果。有关Qlik Sense中时间序列分解的详细信息,请参阅时间序列分解函数。
创建应用程序
首先创建一个新应用程序并将数据集导入其中。
下载此数据集:
该文件包含有关航空公司每月乘客数量的数据。
执行以下操作:
-
转到 Analytics 活动中心的“创建”页面,然后选择数据集。
-
单击上传数据文件。
-
使用对话框添加 Tutorial - Time series decomposition.csv。
-
选择空间
-
单击上传并分析。这将使用选定空间中的数据创建一个新应用程序。
准备并加载数据
为了 Qlik Sense 正确解释 YearMonth 字段,您可能需要使用数据管理器将该字段识别为日期字段,而不是具有字符串值的字段。通常,此步骤是自动处理的,但在这种情况下,日期以稍微不常见的 YYYY-MM 格式显示。
-
在数据管理器中,选择表并单击 。
-
选中 YearMonth 字段后,单击 并将字段类型设置为日期。
-
在输入格式下,输入 YYYY-MM。
-
在显示格式下,输入 YYYY-MM,然后单击确定。
该字段现在应该显示日历图标。
-
单击加载数据。
现在,您可以开始使用 STL 函数直观地表示数据了。
创建可视化
接下来,您将创建两个折线图来演示 STL_Trend、STL_Seasonal 和 STL_Residual 图表函数的功能。
打开一个新工作表并给它提供一个标题。打开高级选项。
在工作表中添加两个折线图。调整图表的大小并重新定位,以匹配下图。
第一个折线图:趋势和季节分量
执行以下操作:
-
将标题 Seasonal and Trend 添加到第一个折线图中。
-
添加 YearMonth 作为维度,并将其标记为日期。
-
添加以下度量并将其标记为每月乘客:
=Sum(Passengers)
-
在数据下,展开每月乘客度量,然后单击添加趋势线。
-
将类型设置为线性。
您将将此趋势线与趋势分量的平滑输出进行比较。
-
添加以下度量以绘制趋势分量并将其标记为趋势:
=STL_Trend(SUM(Passengers), 12)
-
接下来,添加以下度以绘制季节性分量并将其标记为季节性:
=STL_Seasonal(SUM(Passengers), 12)
-
在外观 > 演示下,将滚动条设置为无。
-
保留默认颜色,或根据您的喜好进行更改。
第二个直线图:残余分量
接下来,配置第二个折线图。该可视化将显示时间序列的剩余分量。
执行以下操作:
-
将折线图拖到工作表上。添加标题 Residual。
-
添加日期作为维度。
-
添加以下度量并将其标记为残余:
=STL_Residual(SUM(Passengers), 12)
-
在外观 > 演示下,将滚动条设置为无。
您的工作绩效在应该看起来像下面的工作表。
解读和解释数据
使用 STL 图表函数,我们可以从时间序列数据中获得许多见解。
趋势分量
趋势分量中的统计信息被去季节化。这使得人们更容易看到随时间推移的一般性、非重复性波动。与每月乘客的直线、线性趋势线相比,STL 趋势分量确实捕捉到了变化的趋势。它显示了一些明显的偏差,同时仍然以可读的方式显示信息。STL 算法中的平滑行为有助于捕捉这一点。
STL 趋势图中可见的航空公司乘客数量下降可以能部分是因为受到 20 世纪 50 年代发生的经济衰退的经济影响。
季节性分量
去趋势季节性分量隔离了整个时间序列中的反复波动,并从该部分分析中删除了一般趋势信息。我们从一个由年-月聚合组成的数据集开始。有了这些数据,我们将数据分为一个月的粒度。通过定义周期值 12,我们将图表设置为在一年(十二个月)周期内模拟季节模式。
在数据中,夏季的航空乘客会出现反复的季节性激增,冬季则会出现下降。这与夏季通常是度假和旅行的热门时间的想法一致。我们还看到,在时间序列的过程中,这些季节性周期的幅度急剧增加。
残余分量
残差分量的图表显示了趋势和季节分解中未捕获的所有信息。残差分量包括统计噪声,但它也可能指示 STL 趋势和季节函数参数的错误设置。通常,如果信号的残余分量中存在周期性振荡,或者显示的信息明显不是随机的,则通常是时间序列中存在当前未在季节或趋势分量中捕获的信息的信号。在这种情况下,您需要重新检查每个函数参数的定义,并可能更改周期性。
更平滑的值
由于我们没有为趋势和季节平滑器指定任何值,因此函数将使用这些参数的默认值。在 Qlik Sense 中,STL 算法中的默认平滑值会产生有效的结果。因此,在大多数情况下,这些参数可以不包含在表达式中。
趋势平滑值使用图表中指定的维度。由于 YearMonth 字段按月份显示数据,因此趋势更平滑的值将是月份数。季节性平滑器将反映定义的周期性。在这种情况下,由于我们将一个时期定义为持续十二个月(一年),因此季节性更平滑的值是年数。这听起来可能令人困惑,但这确实意味着要找到季节性,我们需要跨越多个季节。这个数字在季节上更平滑。
其他有用信息
考虑到季节性周期的振幅随时间增加,更先进的分析方法可以利用对数函数来创建乘法分解。实际上,可以通过将季节性除以趋势分量以在 Qlik Sense 中创建相对振幅的简单度量。这样做后,我们注意到,随着时间的推移,每个周期的夏季峰值相对幅度会增大。然而,冬季低点的振幅不会随时间增加。