Python, Апроксимировать распределение смесью нормальных распределений

Рейтинг: 0Ответов: 1Опубликовано: 28.07.2023

Имеется какое то отличное от нормального распределение плотностей вероятности, задано таблично, 30 точек,иксам ставятся в соответствие вероятности. Необходимо вывести аппроксимирующую это распределение смесь нормальных распределений, то есть получить набор пар мю и сигм в количестве n штук (задает пользователь)

Есть sklearn BayesianGaussianMixture и GaussianMixture, но я не совсем его понял, что туда совать и что выдает fit_predict.

Ответы

▲ 1

Как мне кажется, ваша задача сводиться к задаче Kernel Density Estimation (русский вариант - ядерная оценка плотности) - аппроксимации заданной функции плотности распределения функциями плотности заданного типа (и гауссовой - как частный случай).

Начать можно вот отсюда:

https://www.mvstat.net/tduong/research/seminars/seminar-2001-05/ https://medium.com/analytics-vidhya/density-estimation-mle-map-mom-kde-ecdf-q-q-plot-gan-5161f84d28d7

https://craftappmobile.com/ядерная-оценка-плотности-распределе/ https://learnmachinelearning.fandom.com/ru/wiki/Ядерное_сглаживание_для_оценки_плотности

В Python мне известно четыре реализации (скорее всего есть и другие):

  1. В scikit-learn:

https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KernelDensity.html#sklearn.neighbors.KernelDensity

с официальным описанием:

https://scikit-learn.org/stable/modules/density.html#kernel-density

а вот тут - более развернутое и человеческим языком:

https://stackabuse.com/kernel-density-estimation-in-python-using-scikit-learn/ https://mglerner.github.io/posts/histograms-and-kernel-density-estimation-kde-2.html?p=28 https://jakevdp.github.io/PythonDataScienceHandbook/05.13-kernel-density-estimation.html

2.В statsmodels, в которой чуть больше возможностей:

https://www.statsmodels.org/dev/examples/notebooks/generated/kernel_density.html

  1. В scipy.stats.:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.gaussian_kde.html

  1. Специализированный пакет KDEpy (честно признаюсь - эту возможность лично не пробовал):

https://kdepy.readthedocs.io/en/latest/

Пробуйте.