绘制时间序列数据以呈现“平均值”的首选方法?

机器算法验证 时间序列 数据可视化
2022-03-30 20:58:25

我有来自网站负载测试的数据,其中有数千个数据点分布在大约 30 分钟内(这些值是网站的响应时间,以毫秒为单位)。这些值分布在 30 分钟范围内,但不是以恒定速率(即,某些点之间可能存在几毫秒,其他点可能处于相同的时间戳等)。

我想直观地呈现这些数据并绘制图表,但我不确定这样做的最佳方法 - 围绕任何类型的平均值或趋势线概念存在大量差异。

关于如何绘制这种类型的数据的方法,是否有任何公认的最佳实践?我担心选择一种糟糕的方法来平均/平滑数据并歪曲数据 - 例如低估一些异常值。

我玩过一个折线图,x 轴上是时间戳,y 轴上是同一分钟内的样本平均值。我还想考虑绘制数据的移动平均值,但我不确定我是否应该在相同的 N 分钟或最后 N 点的窗口中平均数据点。

我想确保我所做的任何选择看起来都是对数据的严格表示,而不是太业余。

更新:下面是我迄今为止制作的样本,图表上的每个点都被视为同一分钟内所有样本的平均值/中位数(即在 11:12:00.000 和 11:12:59.999 内) . 我将每分钟的样本数作为条形图包含在图像的后半部分,以便能够显示折线图中的任何单个点是否由于样本量小而看起来像异常值,尽管从美学上讲我认为条形图图表对于它提供的信息量来说占用了太多的空间。

2个回答

我建议添加一个或两个您目前正在做的事情的例子,这样我们就可以更好地了解您正在处理的事情。

您关心的是一个重要问题:您如何在时间序列数据中传达“整体”模式,同时又不通过仅显示平均值来误导观众?我处理这种情况的一种方法是绘制平均线或中线以及周围的分位数带。例如,

在此处输入图像描述

在这里,时间序列数据来自基于引导程序的模拟,因此每个时间点都有数百个值。实际数据绘制在黑线中,彩色条带显示模拟值的可变性。此特定图可能不是最好的示例,但您可以看到某些点的可变性比其他点大得多,您还可以根据系列中的位置评估可变性如何偏斜高于/低于实际值。

更新:鉴于您的更新,这里有一些额外的问题和想法......从这个可视化中做出了什么决定(如果有的话)?例如,您是否正在寻找响应时间非常慢(可能高于特定阈值)的特定时间点?如果是这样,最好将所有点简单地绘制为散点图,然后绘制显示平均值的时间序列线,以及描绘您关注的边界的一些线。如果您在某些时间点有大量观察(太杂乱),或者如果您的时间测量不够粗略(在这种情况下,您可以将响应数据合并到一天中的分钟范围内),则此建议不合适。但是可视化推荐肯定会受到它所支持的决策的影响。在我的例子中,

您是否考虑过数据本身的散点图? 这是我非常喜欢的一种方法它让观众对趋势的存在和重要性做出自己的结论,并且不会隐藏可变性或异常值。如果你有严重的过度绘图(听起来你可能会这样),那么 Alpha 混合这些点会有所帮助。您还可以叠加您喜欢的任何趋势,并在知道数据仍然存在并为自己说话时感到欣慰。