Усредняя многовариантные нормальные распределения, расширяйте ковариацию вдоль вектора - PullRequest
0 голосов
/ 05 октября 2018

Если у меня есть две отдельные многомерные нормальные случайные величины:

from scipy.stats import multivariate_normal
import numpy as np

cov0=np.array([
    [1,0,0],
    [0,1,0],
    [0,0,1]
])
mean0 = np.array([1,1,1])
rv3d_0 = multivariate_normal(mean=mean0, cov=cov0)

cov1=np.array([
    [1,0,0],
    [0,1,0],
    [0,0,1]
])
mean1 = np.array([4,4,4])
rv3d_1 = multivariate_normal(mean=mean1, cov=cov1)

Тогда я заинтересован в создании новой случайной величины, которая находится между этими двумя:

mean_avg = (mean0+mean1)/2
cov_avg = (cov0+cov1)/2
rv3d_avg = multivariate_normal(mean=mean_avg, cov=cov_avg)

# I can then plot the points generated by:
rv3d_0.rvs(1000)
rv3d_1.rvs(1000)
rv3d_avg.rvs(1000)

Однако при поискев сгенерированных точках ковариация предсказуемо совпадает с двумя компонентами.Однако я хотел бы, чтобы ковариация была больше вдоль вектора (mean1-mean0) по сравнению с ковариацией вдоль ортогональных векторов.Я думаю, может быть, взятие среднего значения ковариации не является правильной техникой?Любые предложения приветствуются, спасибо!

1 Ответ

0 голосов
/ 05 октября 2018

Это интересная проблема.Посмотрите на это следующим образом: у вас есть некоторые конкретные направления для ковариационных компонентов, а именно среднее значение 1 - среднее значение 0 - это одно направление, а плоскость, ортогональная среднему значению 1 - среднее значение 0, содержит другие.В этих направлениях вы хотите указать величину отклонения, а именно это что-то (скажем, FOO) в ортогональной плоскости и намного больше (скажем, в 100 раз FOO) в направлении mean1 - mean0.

Выможно найти основу для ортогональной плоскости с помощью алгоритма Грамма-Шмидта или чего-то еще.На этом этапе вы можете построить ковариационную матрицу: пусть S = столбцы найденных направлений (а именно, mean1 - среднее плюс основание ортогональной плоскости), и пусть D = диагональная матрица с 100 FOO, FOO, FOO,..., FOO по диагонали.Теперь SDS ^ T (где S ^ T - это транспонированная матрица) - это положительно определенная матрица с желаемыми свойствами.

Возможно, вы сможете избежать Грам-Шмидта, но ваша цель в любом случае будет такой же: укажите свойства, которые вы хотите, а затем создайте матрицу для их удовлетворения.

...