一般来说,百分位数对于理解数据分布非常有用。第五十百分位数是您的数据一半大于它,一半小于它的点。第十百分位数是您的数据 90% 大于它,10% 小于它的点。第九十九百分位数是 1% 大于它,99% 小于它的点。
第五十百分位数,或中位数,通常比平均值更有用,尤其是在您的数据包含异常值时。异常值会显著改变平均值,但对中位数的影响不大。例如,如果您家中有三个房间,其中两个房间是 40℉ (4℃),一个房间是 130℉ (54℃),则平均室温为 70℉ (21℃),这并不能告诉您太多信息。但是,第五十百分位数温度是 40℉ (4℃),这告诉您至少一半的房间处于冰箱温度(另外,您可能应该检查一下暖气!)。
百分位数有时会被避免,因为计算它们比平均值或其他聚合度量需要更多的 CPU 和内存。这是因为百分位数的精确计算需要将完整数据集作为有序列表。Timescale 使用近似算法来计算百分位数,而无需所有数据。这也使它们更兼容连续聚合。默认情况下,TimescaleDB 使用 uddsketch
,但您也可以选择使用 tdigest
。有关这些算法的更多信息,请参阅高级聚合方法文档。
注意
从技术上讲,百分位数将一个组分成 100 个大小相等的片段,而分位数将一个组分成任意数量的片段。因为我们并不总是使用正好 100 个桶,“分位数”在这种情况下是更技术上正确的术语。但是,我们使用“百分位数”这个词,因为它对于这种类型的函数来说是更常用的词。
- 有关百分位数近似如何工作的更多信息,请阅读我们的百分位数近似博客。
- 有关百分位数近似 API 调用的更多信息,请参阅超级函数 API 文档。
关键词
在此页面上发现问题?报告问题 或 在 GitHub 中编辑此页面。