我在QlikSense中遇到了一个问题,试图在已经按源分组的数据集上计算一些统计指标(百分位数,四分位数,StdDev,中位数等)。
我的意思是我的数据集类似于以下内容,其中我具有“周”和“客户年龄”的每种组合的总购买次数:
我想显示“客户年龄”的中位数,由于数据集的结构,我不能使用分形或中位数内置函数,因为它们会得出不同的结果。
让我们假设要计算这三个星期的平均年龄,以便我想知道完成我的50%购买的人的年龄。
为了让您更好地理解这个问题,我向您展示直方图:
在这种情况下,我想要获得的中位数是24-26岁,因为总人口的50%都在该范围内。
我在这里找到了有用的参考,但是在QlikSense中编写此公式时遇到了麻烦
https://mba-lectures.com/statistics/descriptive-statistics/603/relationship-between-quartiles-decile ...
非常感谢。
[EDIT]:这是我的数据模型视图:
[编辑2]:Here是我的qvf,其数据集与我正在使用的原始数据集更加相似。如您所见,使用您的公式无法得到正确的结果。此外,我想用它来绘制整个星期的中位数趋势,但似乎不可能(即使我使用注释中指出的公式的修改版本)。 / p>
答案 0 :(得分:1)
如果要在这种情况下计算中位数,则需要对中位数进行加权,并基本上检查哪个维值在中间:
Aggr(
If(
(Rangesum(
Above([# Purchases],0,RowNo())
)
/Sum(TOTAL [# Purchases]))>=0.5
and
(Rangesum(
Above([# Purchases],1,RowNo()-1))
/Sum(TOTAL [# Purchases]))<0.5
,[Customer Age])
,[Customer Age])