在一张图表中显示一系列指数衰减分布

机器算法验证 数据可视化
2022-03-22 02:30:55

每周我们都有新客户注册,其中一些人提交支持请求。我想绘制每个客户的支持票数随时间变化的图表。我这样做是通过将客户分成一周的群组,然后将每个分布绘制为 Tufte 箱线图,如图所示。我现在的图表看起来这样:

簇绒图

问题是真实数据的分布,而不是我在这里使用的假数据,类似于只有整数值的指数衰减,因此倾向于“零票”。所以我们有 52 个队列分布,如下所示:

指数衰减

(其中 X 轴是票数,Y 轴是发送这么多票的客户数量),因此很难从箱形图中获得实际分布。一般来说,中位数并不能告诉你很多关于分布的信息。

我怎样才能更好地展示一系列指数衰减分布,以了解形状如何随时间变化?

谢谢,凯文

2个回答

对当前图形制作的一个简单调整是,不是制作箱线图的所有元素(即使是极简的 Tufte 风格),而是制作一个连接箱线图显示的汇总统计数据的折线图(中位数、四分位数、均值、外铰链等)。下面是一个示例,显示了 100 周内 50 次观察的模拟分布的第 90 和第 99 百分位数。

在此处输入图像描述

线条的这种连接使您可以更轻松地在周之间的汇总统计数据之间建立时间连接,并降低绘图的数据墨水比。即使是定量信息的可视化显示中的 Tufte也有一个示例,其中连接显示中的线条可以让人们辨别时间序列中的周期性,这在散点图显示中很难看到(我假设同样的问题会扩展到箱线图显示)。

我相信您应该在行中显示的确切内容会更深入地了解您的数据的性质以及您感兴趣的内容(并且可能会随着数据的性质随着时间的推移而改变)。为了更广泛地了解分布,我相信不同的分位数(包括中位数)可以提供信息。尽管可能需要进行一些实验才能查看信息分位数每周的位置(在此显示中,第 99 个百分位数非常嘈杂)。

像这样的折线图也可以扩展到不同的统计摘要(例如分布的偏斜),尽管我相信第一次运行的分位数是最有用的。此外,如果您对识别异常值感兴趣,您可能需要考虑在这些相同的线图中包含异常值的点(以任何适合您的方式定义)。在网站上的这个问题中,有一个关于偏态数据异常值的有趣讨论,Poisson 分布式数据是否有箱线图变体?,以及标记为的问题我相信会适用。

即使从这一点您可能可以想象在一个绘图上生成大量不同的线,但在一个图形中绘制太多信息是相当容易的。我尝试遵守的一条经验法则是,一个绘图不应包含超过 4-5 个数据元素(这里的数据元素是一条线)。即使这样也经常太多。要尝试解决这个问题,请尝试制作一个一致的模板,其中绘图的轴是一致的,这样您就可以在绘图之间进行准确的比较。或者,如果您的软件允许,制作一系列小的多图(再次对所有图使用相同的轴)。然后,即使您说在一个地块上有外铰链和异常值,在另一个地块上有中位数和四分位数,您也可以辨别这两个地块之间的模式。

编辑:作为@whuber 在这里谈论的平滑的一个示例,它与上面的图相似(由模拟过程以完全相同的方式生成),除了对线条应用了黄土平滑器。

在此处输入图像描述

我不能让自己不绘制原始数据,但我只是使平滑线变粗(并赋予它们颜色)以将它们带到图像的前景,并使原始线条变细和浅灰色,因此它们仅在图像的背景中(因此不会分散注意力)。平滑器允许人们评估可能被系列方差混淆的一般趋势。

Tukey 有其他我没有在这里展示的建议,例如绘制所有观测值的 alpha 外壳(并标记构成顶点的那些观测值)。还有一些值得深思的地方。

您是否考虑过将重点放在 x 轴上的票数与 y 轴上提交这么多票的人数的 2D 图上,并在图上单独显示每个队列?然后,您可以从一个群组切换到另一个群组(如 Rolodex),以使用动画来了解随时间的变化,或者让时间成为 3D 图中的 z 轴。

(编辑:将 y 轴从“队列中的人数”固定为“提交了这么多票的人数”)