2017-01-23 76 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)² 

在根据提供的参考文献,您可以很容易地看到,通过设置phi = 0可恢复不相关的情况;

0

对于应用于协方差的一般变换,有一种简单的方法可以解决这个问题。

如果我有一些线性映射,A,和一些协方差C,我可以通过C_new = A * C * A^T计算转换后的协方差。

解决方案

因此,对于你的问题,你可以通过计算C = R C R^T

直觉

这是有道理的,如果你认为的C作为一个正在由乔莱斯基因素C = L * L^T,在计算旋转协方差cholesky因子(或任何你喜欢的平方根)告诉我们如何变形单位圆以得到1-sigma不确定性椭圆。

当我们改变一个分布(你正在通过变换协方差来尝试做什么)时,我们想要改变单位圆是变形的。我们可以通过转换L.

所以: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