Найти лежащее в основе нормальное распределение случайных векторов - PullRequest
0 голосов
/ 23 февраля 2020

Я пытаюсь решить проблему реального мира, связанную со статистикой, с помощью Python и ищу информацию о моих идеях: у меня N случайных векторов из m-мерного нормального распределения . У меня нет информации о средних и ковариационной матрице базового распределения, а также то, что это нормальное распределение - только предположение, хотя и очень правдоподобное. Я хочу вычислить приближение среднего вектора и ковариационной матрицы распределения. Число случайных векторов составляет порядка 100–300, размерность нормального распределения составляет где-то 2–5. В идеале время для расчета на стандартном домашнем компьютере не должно превышать 1 минуты.

В настоящее время я думаю о трех подходах и рад всем предложениям о других подходах или предпочтениях между этими тремя:

  1. Пример: Создайте многомерную гистограмму все случайные векторы и соответствуют многомерному нормальному распределению на гистограмме. Проблема с этим подходом: ковариационная матрица имеет много записей, это может быть проблемой для процесса подбора?

  2. Инвертировать накопительную функцию распределения: Сделать многомерным гистограмма как аппроксимация функции плотности случайных векторов. Затем интегрируйте это, чтобы получить многомерную кумулятивную функцию распределения. Для одного измерения это обратимо, и можно использовать функцию cum-dist для распределения случайных чисел, как в исходном распределении. Проблема: для многомерного случая функция cum-dist не обратима (?), И я не знаю, работает ли тогда этот подход?

  3. Байесовский: Использовать байесовскую статистику с некоторым нормальным распределением, как ранее, и обновлять для каждого наблюдения. Результатом всегда должно быть нормальное распределение. Проблема: я думаю, что это вычислительно дорого? Кроме того, я не хочу, чтобы более поздние обновления оказывали большее влияние на итоговый дистрибутив, чем предыдущие.

Кроме того, может быть, есть какая-то библиотека, в которой эта задача уже реализована? Я не нашел именно этого в Numpy или Scipy, может, у кого-то есть идеи, где еще искать?

1 Ответ

1 голос
/ 24 февраля 2020

Если простых оценок, описанных в разделе Оценка параметров статьи в Википедии о многомерном нормальном распределении, достаточно для ваших нужд, вы можете использовать numpy .mean для вычисления среднее значение и numpy .cov для вычисления выборочной ковариационной матрицы.

...