如何衡量跨群组/细分市场的使用数据?

机器算法验证 分布 描述性统计
2022-04-12 17:47:31

Netflix 和 Google 等使用客户使用情况(流式传输的视频数量或进行的唯一搜索数量)作为价值的代表,或用于确定哪个版本的测试是最好的。我很好奇他们将如何衡量这一点,但我不擅长统计。

如果他们将客户群分成均匀的组,则组内的使用量仍将遵循分布。因此,如果一组中有比尔·盖茨(或使用量占主导地位的人),那么仅比较每组的平均使用量可能会产生误导。

我可以使用哪些代理来帮助衡量“该段的使用率高于其他段的使用率”?与 Netflix 或 Google 相比,我试图衡量的分布更有可能具有极端的使用量,后者的使用量受到一天中小时数的限制。

QQ图合适吗?

3个回答

从统计上看,这个问题似乎可以简化为:你如何比较两个分布,看看哪个更大?您对将均值作为对分布的盲目总结的幼稚使用提出质疑是正确的。但是,仍然有很多方法可以解决这个问题。这里有几个选项:

1) 两样本 Kolgomorov-Smirnov 检验。您可以将此视为一种绘制两个经验累积分布的方法,然后搜索分布之间最大垂直偏差最大的点。这样做的好处是不知道您在分布中的确切位置寻找差异。我实际上认为这个页面在解释方面比维基百科页面更好,因为它有更好的图形。

2) 两个样本均来自同一分布的情况与两者均来自不同分布的情况之间的贝叶斯比较。在这里,您可能希望将分布合并为直方图。本文讨论并演示了一种执行此操作的好方法。它将每个直方图建模为来自泊松分布,然后推断它们是否共享相同的速率参数或速率参数是否不同。这由参数捕获,在直方图相同的情况下,其概率质量接近 1,π

从同一分布中绘制的两个直方图

并且在直方图不同的情况下接近于零,

从不同分布绘制的两个直方图

(代码可在线获得。您需要安装ROOT。)

这种方法可能会给出更好的答案,但需要更多的时间来实现。您是否应该使用它或类似的东西取决于获得一个非常准确的答案而不是一个足够好的答案对您来说有多重要。

QQ地块

这可能是一种可视化两种使用分布之间差异的好方法。据我所知,QQ 图更常用于将一种经验分布与理论分布(例如正态分布)进行比较,以证明其使用的合理性。如果你想用两个经验分布做一个 QQ 图,你首先需要估计分位数

QQ 图可能值得花一些时间,但作为一个描述性图(即,你不能轻易地从中得到汇总统计),你要么必须将从它们中学到的东西转换成更容易理解的形式解释,或确保您向其提供数据的任何人都可以解释它们。而且它们并不那么容易解释。所以,底线:是的,它们可以工作,但除非你已经擅长它们,否则我认为使用其他选项会更容易。

快速回答

比较中位数而不是均值,这将对极值的影响更加稳健。

更多细节

比较客户群之间使用分布的最佳方法取决于您通过比较它们想要达到的目标。例如,假设您有以下组:

A: 4, 5, 6
B: 0, 0, 0, 0, 50

对于哪个组的使用率更高,没有一个答案,但这里有一些场景:

意思是

比较 B (10) 的平均值与 A (5) 的平均值是合适的,例如,如果您想知道如果添加 5 个新客户,总使用量的增加是否会更大A(预计增加 25 个)与 B 组的 5 个新客户(预计增加 50 个)。极端值只会导致这些预期的更大差异。

中位数

如果您只想快速说明 A 组中的“典型”客户是否比 B 组中的“典型”客户使用率更高,则将 A (5) 的中位数与 B (0) 的中位数进行比较是合适的. 计算中位数很容易并且给出了很好的结果,并且在大多数情况下将提供与以下更严格的方法几乎相同的结果。

Mann-Whitney U / Wilcoxon rank-sum / AUC ……又名“许多名字的检验统计量”

计算U 统计量是我个人的最爱(尽管名称的泛滥令人困惑)。U 统计量是从 A 组中随机选择的统一客户的使用率大于从 B 组中随机选择的客户的使用率的概率。它在各种情况下都很有用。除了具有直观的含义外,很容易测试这个 U 统计量的值是否显着它可以很好地推广到两个以上的组,名为 Multiclass AUC*。

意义

您可能还想检查组之间的任何差异是否显着。Mann-Whitney U 适用于此,Kolgomorov-Smirnov (KS) 测试也是如此。太常见的 T 检验对您的数据听起来不合理的分布做出假设。

如果像我一样,您无法忍受名为“{Dead statistician} {Letter of alphabet} Test”的测试激增,(并且您有兴趣真正理解统计显着性的概念),您可以选择您的软件并模拟该过程多次,并查看测试统计量的观察值的可能性有多大(引导程序*)。

例如,如果您想查看如果组完全不同,U 统计量的测量值是否不太可能出现,请尝试以下操作:

  1. 将A组和B组的数据合并为一组,4, 5, 6, 0, 0, 0, 0, 50
  2. 从组合列表中随机选择值,并进行替换,以形成与 A 和 B 大小相同的两组,例如A': 0, 4, 4B': 50, 0, 0, 6, 5由于您知道这些A'并且B'只是从同一人群中随机选择的,因此这是组没有不同的“空模型”的一个实例。
  3. 测量这两组的“检验统计量”(这可能是均值的差异、中位数的差异、AUC、KS 值或您想像的任何其他值)并将其写下来。
  4. 重复 2 和 3 多次。
  5. 测量实际组的“测试统计量”,并将其与您刚刚生成的测试统计量分布进行比较。如果它超出范围,则您的检验统计量的实际值不太可能出现在您的空模型中,并且该值具有统计显着性。

注意:我不能在此处放置两个以上的链接,因为我在 Cross Validated 上还没有足够的街头信誉。当我这样做时,我会编辑。

听起来您正在寻找对两种位置测量之间差异的稳健测试。你是对的,使用平均值会带来各种各样的问题,尤其是极端异常值。近几十年的研究表明,依赖于大样本属性的方法比较在许多现实生活中的问题比人们想象的要严重得多。

一个很好的替代方法是比较 20% 的修剪均值。在平均值附近进行至少 0.2 修剪的百分位自举是“获得准确概率覆盖和实现相对较高功效的最有效方法之一”(Wilcox 2012 年第 336 页,社会和行为科学的现代统计,CRC 出版社,彻底推荐)。R中有一些简单的实现。

例如,考虑下面 R 代码中的混合对数正态分布。x1 通常比 x2 大得多,但 x2 被 20 个非常大的值所污染,这些值将平均值从水中吹走。中值或 trimemd 均值可以更好地了解总体位置中心。

> x1 <- exp(rnorm(1000,10,1))
> x2 <- exp(rnorm(1000,8,2))
> x2[sample(1:1000,20)] <- exp(rnorm(20,12,5))
> combined <- melt(data.frame(x1,x2))
Using  as id variables
> tmp <- round(rbind(with(combined, tapply(value, variable, mean)),
+ with(combined, tapply(value, variable, mean, tr=.2)),
+ with(combined, tapply(value, variable, median))))
> row.names(tmp) <- c("Mean", "TrimmedMean", "Median")
> tmp
               x1      x2
Mean        35229 1282017
TrimmedMean 25077    5992
Median      22454    3896
> qplot(value, data=combined, log="x") + facet_wrap(~variable)

在此处输入图像描述