Qliksense: вычислить медиану сгруппированных данных

#qliksense

#qliksense

Вопрос:

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

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

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

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

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

Гистограмма

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

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

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

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

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

DMV

[РЕДАКТИРОВАТЬ 2]: Вот мой qvf с набором данных, более похожим на исходный, который я использую. Как вы можете видеть, я не могу получить правильный результат, используя вашу формулу. Кроме того, я хотел бы использовать его для построения графика тенденции медианы по неделям, но, похоже, это невозможно (даже если я использую модифицированную версию формулы, которую я указал в комментариях).

Ответ №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])
  

Комментарии:

1. Спасибо Хьюберту. К сожалению, ваш скрипт, похоже, не работает, возвращая нулевое значение как в таблице, так и в диаграмме ключевых показателей эффективности. Мне это кажется правильным, но не возвращает ожидаемое значение.

2. Привет @FVerg Я поместил свой qvf-файл с примером в свой onedrive 1drv.ms/u/s!Am4ZTQ8qcLwRs35Ms4wM8cEnIBxP

3. Чао Хьюберт. Ваш qvf-файл работает просто великолепно. Если я попытаюсь воспроизвести вашу формулу в наборе данных, который я показал в первом сообщении, я не получу тот же результат. Помещая значения диапазонов в таблицу (с указанием CustomerAge и # Purchases), он возвращает мне 0 для каждой строки. Я думаю, что в этом проблема, но я не понимаю, почему это происходит. Вы знаете почему?

4. Пожалуйста, пришлите скриншот программы просмотра модели данных, чтобы, возможно, я что-нибудь придумал.

5. Выполнено. Если я использую Sum ([# Покупки]) в RangeSums, кажется, это работает, но я все еще не понимаю, почему.