Qliksense: вычисление медианы сгруппированных данных - PullRequest
1 голос
/ 28 марта 2019

Я столкнулся с проблемой в QlikSense, пытаясь вычислить некоторые статистические показатели (Percentiles, Quartiles, StdDev, Median и т. Д.) Для набора данных, который уже сгруппирован по источнику.

Я имею в виду, что мой набор данных похож на следующий, в котором для каждой комбинации «Неделя» и «Возраст покупателя» я имею общее количество покупок: Dataset

Я хочу показать медиану возраста клиентов, и из-за структуры набора данных я не могу использовать встроенные функции с дробными или срединными значениями, так как они получат что-то другое.

Давайте предположим, что я хочу рассчитать средний возраст людей за все 3 недели, чтобы я хотел знать, сколько лет людей, которые совершили 50% моих покупок.

Чтобы вы лучше поняли вопрос, я покажу вам гистограмму:

Histogram

В данном случае медиана, которую я хочу получить, составляет 24–26 лет, поскольку 50% от общей численности населения подпадают под этот диапазон.

Я нашел здесь полезную ссылку, но у меня проблемы с написанием этой формулы в QlikSense

https://mba -lectures.com / статистик / описательная-статистика / 603 / отношений между ними-квартилями-децилем ...

Заранее большое спасибо.

[РЕДАКТИРОВАТЬ]: Это мой вид модели данных:

DMV

[EDIT 2]: Здесь - это мой qvf с набором данных, более похожим на исходный, который я использую. Как видите, я не могу получить правильный результат, используя вашу формулу. Кроме того, я хотел бы использовать его для построения графика медианы по неделям, но это не представляется возможным (даже если я использую модифицированную версию формулы, которую я указал в комментариях).

1 Ответ

1 голос
/ 29 марта 2019

Если вы хотите рассчитать медиану в таком сценарии, вам нужно взвесить медиану и в основном проверить, какое значение измерения находится посередине:

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])
...