在将数据拟合到高斯模型之后,如何检查新数据是否落在模型的方差距离内

时间:2013-11-28 21:10:09

标签: matlab covariance gaussian

如果我们有一个数据集,我们已经适合3D高斯模型。我们现在有均值,协方差矩阵和pdf。如果我有一个新的数据点,我想检查它是否在协方差内(模型内)。出于某些原因,我需要答案与方差有关。我怎样才能在matlab中甚至在逻辑上做到这一点?

2 个答案:

答案 0 :(得分:3)

类似于roybatty编写的内容,但更具体地说:如果要根据标准偏差检查数据点到分布的距离,则存在标准偏差在不同方向上不同的问题。处理此问题的标准方法是计算分布均值和数据点之间的Mahalanobis distance

Mahalanobis distance

如果您从一组数据点x估算分布参数

m = mean(x);
S = cov(x);

然后对于新数据点xn,您可以获得如下的Mahalanobis距离:

DM = sqrt((xn - m)' * inv(S) * (xn - m));

DM是xn与分布m中心的距离,以标准偏差为单位,您可以应用通常的离群值标准,例如: DM> 3。

答案 1 :(得分:1)

Matlab具有协方差函数:cov(x)返回x的方差,其中x是向量。变量x也可以是矩阵,因此在这种情况下,cov(x)返回每列的方差。检查帮助文件以查看这是否是您想要的。

一般来说,当您谈到将数据点的值与统计模型进行比较时,这通常意味着检查数据值是否小于“标准偏差”的某个倍数。为简洁起见,这用希腊字母sigma表示:

sigma = sqrt(variance);

“异常值”数据点通常被定义为数据值> n * sigma,其中n是根据应用程序选择的,例如,如果我们说我们希望所有数据值都在2 * sigma分布内,我们将采用所有数据值< 2 *西格玛。

在你的情况下,听起来你对1-sigma的数据点感兴趣?无论哪种方式,由于您已经有方差,请使用上述关系计算sigma,然后根据此值应用检查。

同样,我不确定这是你想要的,但你描述问题的方式让我觉得这就是你所追求的。谷歌在标准偏差,方差和异常值方面略有不同,看看这个解释是否适合你的应用。