Создать N-мерное нормальное распределение из одиночных (в Python)

Есть ли общее решение для этого? Вы должны умножить их, но это трудно реализовать.

Для двумерного случая вы можете использовать внешнее произведение двух векторов, представляющих единичные нормальные распределения.

2 ответа

Общее решение включает в себя разложение Холецкого матрицы дисперсии / ковариации. Разложение Холецкого доступно в Python через numpy.

Я нашел возможное решение и проверил в 2-м случае. Кажется, это хорошо, но я проверю это на следующих случаях:

def normal_nd(*priors):
    # Trivial case
    if len(priors) == 1:
        return priors

    # General case
    shape = []
    for item in priors:
        shape.append(len(item))
    n = np.ones(shape)

    for idx, _ in np.ndenumerate(n):
        for ax, element in enumerate(idx):
            n[idx] *= priors[ax][element]

    return n

2D сюжет

Изменить: я проверял это в общих случаях тоже, кажется, это правильное решение!:)

Другие вопросы по тегам