Вычисление режима выборки данных из непрерывного распределения

12

Каковы наилучшие методы для подбора «режима» данных, взятых из непрерывного распределения?

Поскольку этот режим технически не определен (верно?) Для непрерывного распространения, я действительно спрашиваю: «Как вы находите наиболее распространенное значение»?

Если вы предполагаете, что родительский дистрибутив является гауссовским, вы можете скопировать данные и найти, скажем, режим - это местоположение бина с наибольшим количеством. Тем не менее, как вы определяете размер корзины? Доступны ли надежные реализации? (т. е. устойчив к выбросам). Я использую python/ scipy/ numpy, но я, вероятно, могу перевести Rбез особых затруднений.

keflavich
источник
8
Я не уверен, что этот способ технически определен таким образом, но глобальный режим непрерывного распределения обычно означает точку с наибольшей плотностью.
Макро
1
@Macro - это полезно. Затем вы можете прочитать мой вопрос как: «Каковы лучшие методы определения (пиковой) плотности?»
Кефлавич
1
Может быть, подойдет оценка плотности ядра для ваших данных и оценить режим как пик этого? Это кажется разумным подходом, но я не знаком с литературой по этой проблеме.
Макро
1
Если вы не предполагаете, что родительское распределение является гауссовским, все еще возможно ли скопировать данные и выбрать режим в качестве местоположения бина с наибольшим количеством? Почему или почему нет? На более серьезном замечании, почему бы не найти децили чтобы выборок находились в интервале , и поэтому вполне вероятно, что режим находится в кратчайшем интервале между ? Затем выберите размер корзины, скажем, одну четвертую этого кратчайшего интердецильного интервала. x0=xmin,x1,x2,,x9,x10=xmax10%xi+1ximin1j10xj+1xj
Дилип Сарватэ
2
Какие предположения вы можете сделать относительно родительского дистрибутива, кефлавич? Если они параметрические, лучше всего оценить параметры, а затем оценить режим по этим параметрам. (Например, среднее значение выборки оценивает режим нормального распределения.) Если нет, биннинг может быть плохим методом. Вместо этого можно использовать последовательность оценщиков ядра с различной полушириной, чтобы обеспечить последовательность оценщиков; как правило, если базовое распределение является унимодальным, режимы сглаживания ядра будут казаться сходящимися к уникальному режиму, поскольку полуширины становятся большими, и это может быть вашей оценкой.
whuber

Ответы:

4

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

x <- rgamma(10000, 2, 5)
z <- density(x)
plot(z) # always good to check visually
z$x[z$y==max(z$y)]

возвращает 0,199, что является значением x, которое, по оценкам, имеет наибольшую плотность (оценки плотности сохраняются как "z $ y").

Питер Эллис
источник
3
Единственное, что я хотел бы сделать по-другому, это использовать другую пропускную способность. Пропускная способность по умолчанию для плотности () не особенно хороша. плотность (x, bw = "SJ") лучше. Еще лучше было бы использовать полосу пропускания, предназначенную для оценки режима. См. Sciencedirect.com/science/article/pii/0167715295000240 для некоторого обсуждения.
Роб Хиндман
2

Предположим, вы создали гистограмму размером бина b, а самый большой бин имеет k записей из общей выборки размера n. Тогда средний PDF в этой корзине можно оценить как b * k / n.

Проблема заключается в том, что другая ячейка, в которой меньше элементов, может иметь высокую плотность пятна. Вы можете знать об этом, только если у вас есть разумное предположение о скорости изменения PDF. Если вы это сделаете, то вы можете оценить вероятность того, что второй по величине контейнер фактически содержит режим.

Основная проблема заключается в следующем. Образец обеспечивает хорошее знание CDF по теореме Колмогорова-Смирнова и, таким образом, хорошую оценку медианы и других квантилей. Но знание приближения к функции в L1 не дает приблизительного знания ее производной. Таким образом, ни один образец не дает хорошего знания PDF без дополнительных предположений.

chrishmorris
источник
0

Вот некоторые общие эскизы решений, которые также работают для многомерных распределений:

  • Обучите f-GAN с обратной дивергенцией KL, не давая случайного ввода в генератор (т.е. заставьте его быть детерминированным).

  • Тренируйте f-GAN с обратной дивергенцией KL, перемещайте входное распределение к генератору в направлении дельта-функции Дирака в процессе обучения и добавляйте штраф к градиенту к функции потерь генератора.

  • Обучите (дифференцируемую) порождающую модель, которая может оценить приблизительное значение pdf в любой точке (я полагаю, что, например, VAE, модель на основе потока или модель авторегрессии подойдут). Затем используйте некоторый тип оптимизации (можно использовать некоторую разновидность градиентного подъема, если логический вывод модели дифференцируем), чтобы найти максимум этого приближения.

Стефан Берсье
источник