对于问题"Ellipse around the data in MATLAB",在answer given by Amro中,他说了以下内容:
“如果你想要椭圆来表示 具体的标准水平 偏差,正确的做法是 通过缩放协方差矩阵“
以及缩放它的代码为
STD = 2; %# 2 standard deviations
conf = 2*normcdf(STD)-1; %# covers around 95% of population
scale = chi2inv(conf,2); %# inverse chi-squared with dof=#dimensions
Cov = cov(X0) * scale;
[V D] = eig(Cov);
我不明白上面代码段的前3行。如何通过chi2inv(conf,2)
计算比例,以及将它与共变矩阵相乘的基本原理是什么?
其他问题:
我还发现,如果我用1.5 STD(即86%的瓷砖)进行缩放,椭圆可以覆盖所有的点,我的点集在几乎所有情况下都会聚集在一起。另一方面,如果我用3个STD(即99%的瓷砖)对其进行缩放,则椭圆太大。那么我怎样才能选择STD来紧紧覆盖丛生点呢?
以下是一个例子:
内椭圆对应1.5 STD,外对应2.5 STD。为什么1.5 STD紧紧覆盖了丛生的白点?是否有任何方法或理由来定义它?
答案 0 :(得分:12)
在数据点周围显示椭圆的目的是显示置信区间,换句话说,"有多少数据在与标准差的某一标准偏差范围内#34;
在上面的代码中,他选择显示一个覆盖95%数据点的椭圆。对于正态分布,约67%的数据是1 s.d.远离平均值,在2 s内可达~95%。和3 s内的~99% (数字不在我的头顶,但你可以通过计算曲线下的面积轻松验证这一点)。因此,值STD=2;
您会发现conf
约为0.95
。
数据点与数据质心的距离类似(xi^2+yi^2)^0.5
,忽略系数。随机变量的平方和遵循卡方分布,因此得到相应的95百分位数,他使用倒数卡方函数,d.o.f。 2,因为有两个变量。
最后,乘以缩放常数背后的基本原理是,对于具有特征值A
的方阵a1,...,an
,矩阵kA
的特征值,其中{{1}标量只是k
。特征值给出椭圆的长轴/短轴的相应长度,因此将椭圆或特征值缩放到95%图块相当于将协方差矩阵与比例因子相乘。
修改强>
程,虽然您可能已经知道这一点,但我建议您也阅读this answer关于随机性的问题。考虑具有零均值,单位方差的高斯随机变量。这些随机变量的集合的PDF看起来像这样
现在,如果我要采用两个这样的随机变量集合,将它们分开并将它们相加以形成一个新的随机变量的单个集合,它的分布看起来像这样
这是具有2个自由度的卡方分布(因为我们添加了两个集合)。
上述代码中椭圆的等式可写为ka1,...,kan
,其中x^2/a^2 +y^2/b^2=k
,x
是两个随机变量,y
和{{1}是主轴/副轴,a
是我们需要弄清楚的一些比例常数。正如您所看到的,上面可以解释为平方并添加两个高斯随机变量集合,我们只是在上面看到它的分布是什么样的。因此,我们可以说b
是一个随机变量,是2个自由度的卡方分布。
现在需要做的就是找到k
的值,使得95%的数据都在其中。就像1s.d,2s.d,3s.d。我们熟悉高斯人的百分位数,对于具有2个自由度的卡方的95%瓦片大约是6.18。这就是Amro从k
函数中获得的。他本可以写得k
,但它本来就是一样的。它只是用chi2inv
s.d。进行讨论。远离平均值是直观的。
只是为了说明,这里是上面卡方分布的PDF,95%的面积<1。一些scale=chi2inv(0.95,2)
以红色阴影显示。这n
是~6.18。
希望这会有所帮助。