有没有办法从置信/不确定性/误差椭圆计算协方差矩阵?我知道它是如何完成的,使用 2x2 covariance matrix
来计算置信椭圆(例如:此处描述:http://www.visiondummy.com/2014/04/draw-error-ellipse-representing-covariance-matrix/) .
这是否可能或缺少必要的信息?
我的置信椭圆由两个轴的长度和椭圆旋转的角度来描述 .
My approach so far: 轴长度对应于协方差矩阵的两个特征值并定义"spread" . 椭圆角为0表示x和y之间没有相关性 . Covariance matrix without correlation
我创建了一个新的空白2x2矩阵,并假设角度是 zero
,例如我使用了第一个特征值并将其设置为 var_xx
. 与第二个特征值和 var_yy
相同 . 现在我有一个对角矩阵,它描述了方差,但没有旋转(相关) .
现在我使用2D旋转矩阵和椭圆角来旋转先前创建的矩阵 .
这种方法似乎是错误的,因为矩阵不再是对称的 . 不幸的是,协方差矩阵必须是对称的 .
有任何想法吗?
3 回答
似乎我有一个正确和有效的解决方案 . 该解决方案来自另一个论坛的答案:https://math.stackexchange.com/a/1119677
Matlab Example:
感谢公开提出这个问题,因为我需要进行类似的转换 - 从2d标准偏差椭球转换为2x2协方差矩阵 . 对于另一种方式,有很多参考资料,但我发现的唯一参考是在下面,这使我得出结论,你犯了一个小错误,但你的推导带来了更多的清晰度 . 在这里比较http://simbad.u-strasbg.fr/Pages/guide/errell.htx
我们知道,对于非核心随机值,协方差矩阵是对角线的,并且在其对角线元素中具有单独的方差,它们是平方标准偏差(西格玛) .
由于从特征基础的转换
u*u^T / u^T*u
创建了一个新的归一化基础,因此您的特征向量集也可以设置为eVec1 = R * [1; 0]; eVec2 = R * [0; 1];
(长度在特征值中) .如果我这样做,那么乘以你的代码会得到
varX1 = longAxis * cos(phi)² + shortAxis * sin(phi)²
,这会丢失正方形正确设置特征值(Var [X] =sigma²)可得到正确的结果
根据我提供的参考文献,你可以很容易地看到通过设置phi = 0来恢复不相关的情况;
对于应用于协方差的一般变换,有一种简单的方法可以解决这个问题 .
如果我有一些线性映射,
A
和一些协方差C
,我可以通过C_new = A * C * A^T
计算转换后的协方差 .解决方案
因此,对于您的问题,您可以通过计算
C = R C R^T
来计算旋转的协方差直觉
如果你认为
C
是由胆怯的因素组成的,这是有意义的,其中cholesky因子(或你喜欢的任何平方根)告诉我们如何使单位圆变形以获得1-sigma不确定性椭圆 .当我们转换分布(你通过改变协方差你试图做的事情)时,我们想要改变单位圆变形 . 我们可以通过改造L.
所以:
L_new = A * L
. 那么C_new = (A * L) * (A * L)^T = (A * L) * (L^T * A^T)
因为我们知道
C = L * L^T
C_new = A * C * A^T
.