2010-12-15 3 views
3

У меня большой гауссовский размер со средней M и ковариационной матрицей V. Я хотел бы рассчитать расстояние от точки p до M, учитывая V (I предположим, что это расстояние в стандартных отклонениях от p?).Вычислить расстояние от точки p до габаритного гауссовского (M, V)

Понятно дифференциально, я беру эллипс на одну сигму от М и хотел бы проверить, находится ли внутри этого эллипса.

+0

Попробуйте http://math.stackexchange.com/ – Jacob 2010-12-15 21:31:49

ответ

2

Если V является действительным ковариационная матрица гауссовой, то тогда симметричный положительно определенный и, следовательно, определяет действительное скалярное произведение. Кстати inv(V) также.

Таким образом, при условии, что М и р векторы-столбцы, можно определить расстояние, как:

d1 = sqrt((M-p)'*V*(M-p)); 
d2 = sqrt((M-p)'*inv(V)*(M-p)); 

путь Matlab можно было бы переписать d2 как (вероятно, некоторые ненужные скобки):

d2 = sqrt((M-p)'*(V\(M-p))); 

Приятно то, что когда V - единичная матрица, то d1==d2 и соответствует классическому эвклидову расстоянию. Чтобы найти, вы должны использовать d1 или d2 оставлен в качестве упражнения (извините, часть моей работы учит). Напишите многомерную гауссовскую формулу и сравните ее с 1D-случаем, так как многомерный случай - это только частный случай 1D (или выполнить некоторый численный эксперимент).

NB: в очень больших размерных пространствах или для очень многих точек тестирования вы можете найти умный/быстрый путь от собственных векторов и собственных значений V (то есть главных осей эллипсоида и их соответствующей дисперсии).

Надеюсь, это поможет.

А.

+0

Кажется, это так. Спасибо! – 2010-12-15 22:45:02

0

Может быть, я полностью выключен, но разве это не то же самое, что просто просить о каждом измерении: Я внутри сигмы?

ПСЕВДОКОД:

foreach(dimension d) 
    (M(d) - sigma(d) < p(d) < M(d) + sigma(d)) ? 

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

В MATLAB можно попробовать что-то вроде:

all(M - sigma < p < M + sigma) 

Расстояние до того места, может быть, где я не знаю функцию для евклидова расстояния. Возможно, работа dist:

dist(M, p) 

Потому что M - это просто точка в пространстве и p. Всего 2 вектора. А теперь последний. Вы хотите знать расстояние в виде Сигмы:

% create a distance vector and divide it by sigma 
M - p ./ sigma 

Я думаю, что будет делать трюк.

+0

Это решение не будет работать, так как он не принимает во внимание ковариации (эллипс «наклонный», в некотором смысле). Спасибо хоть! – 2010-12-15 21:51:33

2

Рассмотрим вычисления вероятности точки, учитывая нормальное распределение:

M = [1 -1];    %# mean vector 
V = [.9 .4; .4 .3];  %# covariance matrix 
p = [0.5 -1.5];   %# 2d-point 
prob = mvnpdf(p,M,V); %# probability P(p|mu,cov) 

Функция MVNPDF обеспечивается Statistics Toolbox