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

Matlab 将数据拟合到高斯模型后,如何检查新数据是否落在模型的方差距离内,matlab,covariance,gaussian,Matlab,Covariance,Gaussian,如果我们有一个数据集,我们已经适合在一个三维高斯模型。现在我们有了平均值、协方差矩阵和pdf。如果我有一个新的数据点,我想检查它是否在协方差范围内(在模型内)。出于某些原因,我需要与方差相关的答案。如何在matlab中甚至逻辑上做到这一点?matlab有一个协方差函数:cov(x)返回x的方差,其中x是一个向量。变量x也可以是矩阵,因此在这种情况下,cov(x)返回每列的方差。检查帮助文件,看看这是否是您想要的 一般来说,当您谈论将数据点的值与统计模型进行比较时,这通常意味着检查数据值是否小于“

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

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

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

sigma = sqrt(variance);
“离群值”数据点通常定义为数据值>n*sigma,其中n是根据应用程序选择的,例如,如果我们说我们希望所有数据值都在2*sigma分布范围内,我们将采用<2*sigma的所有数据值

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


再说一次,我不确定这是你想要的,但你描述问题的方式让我觉得这就是你想要的。用谷歌搜索一下标准偏差、方差和异常值,看看这个解释是否适合你的应用。

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

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

sigma = sqrt(variance);
“离群值”数据点通常定义为数据值>n*sigma,其中n是根据应用程序选择的,例如,如果我们说我们希望所有数据值都在2*sigma分布范围内,我们将采用<2*sigma的所有数据值

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


再说一次,我不确定这是你想要的,但你描述问题的方式让我觉得这就是你想要的。谷歌搜索一下标准差、方差和异常值,看看这个解释是否适合你的应用。

类似于roybatty所写的,但更具体地说:如果你想用标准差检查数据点到分布的距离,问题是,不同方向的标准偏差不同。处理此问题的标准方法是计算分布平均值和数据点之间的距离:

如果您从一组数据点
x
估算分布参数,如下所示

m = mean(x);
S = cov(x);
然后,对于一个新的数据点
xn
,可以获得如下马氏距离:

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

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

类似于roybatty所写的,但更具体地说:如果您想根据标准偏差检查数据点到分布的距离,问题是,不同方向的标准偏差不同。处理此问题的标准方法是计算分布平均值和数据点之间的距离:

如果您从一组数据点
x
估算分布参数,如下所示

m = mean(x);
S = cov(x);
然后,对于一个新的数据点
xn
,可以获得如下马氏距离:

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

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

这正是我所需要的。谢谢大家的帮助。@user1277543:为什么要改变主意?我以为我给了你你所需要的?!是的,你的回答正是我需要的!对不起,不知道发生了什么事!这正是我所需要的。谢谢大家的帮助。@user1277543:为什么要改变主意?我以为我给了你你所需要的?!是的,你的回答正是我需要的!对不起,不知道发生了什么事!