2017-01-23 5 views
0

Есть ли способ вычислить матрицу ковариации из эллипса уверенности/неопределенности/ошибки? Я знаю, как это делается наоборот, используя 2x2 covariance matrix для вычисления уверенного эллипса (например, описанного здесь: http://www.visiondummy.com/2014/04/draw-error-ellipse-representing-covariance-matrix/).Преобразование позиции эллипса уверенности в соответствие ковариационной матрице

Возможно ли это, если это необходимо или информация отсутствует?

Мой эллипс доверия описывается длиной обеих осей и углом поворота эллипса.

Мой подход до сих пор: Ось длины соответствуют двум собственным значениям ковариационной матрицы и определение «распространение». Угол эллипса 0 означает, что нет никакой корреляции между x & y. Covariance matrix without correlation

Я создал новую чистую матрицу 2x2 и предположил, что угол равен zero, например. Я использовал первое собственное значение и установил его в var_xx. то же самое со вторым собственным значением и var_yy. Теперь у меня есть диагональная матрица, которая описывает дисперсию, но не вращение (корреляция).

Теперь я использовал матрицу 2D-поворота и угол эллипса для поворота предыдущей созданной матрицы.

Этот подход кажется неправильным, потому что матрица больше не симметрична. К сожалению, ковариационная матрица должна быть симметричной.

Любые идеи?

ответ

0

Кажется, у меня есть правильное и рабочее решение. Раствор, полученный из ответа на другом форуме: https://math.stackexchange.com/a/1119677

Matlab Пример:

% ellipse param 
longAxis = 20; 
shortAxis = 10; 
phi = 0; 

% eigenvalues (this may vary from usecase to usecase) 
eVal1 = longAxis; 
eVal2 = shortAxis; 

% compute eigenvectors 
R = [cosd(phi), -sind(phi); 
    sind(phi), cosd(phi)]; 
eVec1 = R * [eVal1; 0]; 
eVec2 = R * [0; eVal2]; 

% compute covariance matrix 
% derived from: https://math.stackexchange.com/a/1119677 
coVar = eVal1*(eVec1*eVec1')/(eVec1'*eVec1) + eVal2*(eVec2*eVec2')/(eVec2'*eVec2) 
0

спасибо за этот вопрос поднимался в общественных местах, так как мне нужно, чтобы сделать подобное преобразование - преобразование из 2D стандартного отклонения эллипсоида до 2x2 ковариационной матрицы. Есть множество ссылок для другого способа, но единственная ссылка, которую я нашел, ниже, приводит к тому, что вы сделали небольшую ошибку, но ваш вывод принес больше ясности. Сравните здесь http://simbad.u-strasbg.fr/Pages/guide/errell.htx

Мы знаем, что для uncorelated случайных величин ковариационная матрица является диагональной и имеет индивидуальные отклонения в ее диагонального элемента, которые являются квадратами стандартных отклонений (сигма).

[varX1, 0] (so your eigen values should be) eVal1 = longAxis*longAxis; 
[0, varX2]          eVal2 = shortAxis*shortAxis; 

Так как преобразование из собственных u*u^T/u^T*u основы создает новый нормированный базис, ваш набор собственных векторов также может быть установлен как eVec1 = R * [1; 0]; eVec2 = R * [0; 1]; (Длина в собственных значениях).

Если я сделал это правильно перемножения код дает varX1 = longAxis * cos(phi)² + shortAxis * sin(phi)², который отсутствует квадратики

Настройка собственных значений вправо (Var [X] = sigma²) дает правильные результаты

varX1 = majorAxis² * cos(phi)² + minorAxis² * sin(phi)² 
varX2 = majorAxis² * sin(phi)² + minorAxis² * cos(phi)² 
cov12 = (majorAxis² - minorAxis²) * sin(phi)² * cos(phi)² 

в в соответствии с приведенной ссылкой i, и вы можете легко видеть, что некоррелированный случай восстанавливается путем установки phi = 0;

0

Существует простой способ приблизиться к этому для общих преобразований, применяемых к ковариации.

Если у меня есть линейное отображение, A и некоторая ковариация C, я могу вычислить ковариацию после преобразования на C_new = A * C * A^T.

Решение

Так что для вашей проблемы, вы можете вычислить повернута ковариации путем вычисления C = R C R^T

Интуиция

Это имеет смысл, если вы думаете о C как состоящую из Cholesky факторов C = L * L^T, где фактор холески (или любой ваш предпочтительный квадратный корень) говорит нам, как деформировать единичный круг, чтобы получить эллипс неопределенности 1-сигмы.

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

So: L_new = A * L. Затем C_new = (A * L) * (A * L)^T = (A * L) * (L^T * A^T)

И так как мы знаем, что C = L * L^TC_new = A * C * A^T.

Смежные вопросы