Qliksense:计算分组数据的中位数

时间:2019-03-28 14:51:47

标签: qliksense

我在QlikSense中遇到了一个问题,试图在已经按源分组的数据集上计算一些统计指标(百分位数,四分位数,StdDev,中位数等)。

我的意思是我的数据集类似于以下内容,其中我具有“周”和“客户年龄”的每种组合的总购买次数: Dataset

我想显示“客户年龄”的中位数,由于数据集的结构,我不能使用分形或中位数内置函数,因为它们会得出不同的结果。

让我们假设要计算这三个星期的平均年龄,以便我想知道完成我的50%购买的人的年龄。

为了让您更好地理解这个问题,我向您展示直方图:

Histogram

在这种情况下,我想要获得的中位数是24-26岁,因为总人口的50%都在该范围内。

我在这里找到了有用的参考,但是在QlikSense中编写此公式时遇到了麻烦

https://mba-lectures.com/statistics/descriptive-statistics/603/relationship-between-quartiles-decile ...

非常感谢。

[EDIT]:这是我的数据模型视图:

DMV

[编辑2]:Here是我的qvf,其数据集与我正在使用的原始数据集更加相似。如您所见,使用您的公式无法得到正确的结果。此外,我想用它来绘制整个星期的中位数趋势,但似乎不可能(即使我使用注释中指出的公式的修改版本)。 / p>

1 个答案:

答案 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])