robustcov
稳健的多元协方差和均值估计
语法
描述
例子
使用距离-距离图检测异常值
使用高斯联结从二元分布生成随机数据点。
rng默认的Rho = [1,0.05;0.05,1];U =共生(“高斯”ρ,50);
修改5个随机选择的观测值为异常值。
噪声= randperm(50,5);U(噪声,1)= U(噪声,1)*5;
使用三种可用的方法计算稳健协方差矩阵:Fast-MCD,正交Gnanadesikan-Kettenring (OGK)和Olive-Hawkins。
[Sfmcd, Mfmcd, dfmcd, Outfmcd] = robustcov(u);[Sogk, Mogk, dogk, Outogk] = robustcov(u,“方法”,“ogk”);[Soh, Moh, doh, Outoh] = robustcov(u,“方法”,“olivehawkins”);
使用马氏测量计算样本数据的经典距离值。
D_classical = pdist2(u, mean(u),“泰姬陵”);P = size(u,2);Chi2quantile =√(chi2inv(0.975,p));
为每个稳健的协方差计算方法创建DD图。
Tiledlayout (2,2) nexttile plot(d_classical, dfmcd,“o”) line([chi2quantile, chi2quantile], [0,30],“颜色”,“r”) line([0,6], [chi2quantile, chi2quantile],“颜色”,“r”)举行在情节(d_classical (Outfmcd) dfmcd (Outfmcd),' r + ')包含(“Mahalanobis距离”) ylabel (“健壮的距离”)标题(“DD绘图,FMCD方法”)举行从Nexttile plot(d_classical, dogk,“o”) line([chi2quantile, chi2quantile], [0,30],“颜色”,“r”) line([0,6], [chi2quantile, chi2quantile],“颜色”,“r”)举行在情节(d_classical (Outogk) dogk (Outogk),' r + ')包含(“Mahalanobis距离”) ylabel (“健壮的距离”)标题(“DD绘图,OGK方法”)举行从Nexttile plot(d_classical, doh,“o”) line([chi2quantile, chi2quantile], [0,30],“颜色”,“r”) line([0,6], [chi2quantile, chi2quantile],“颜色”,“r”)举行在情节(d_classical (Outoh),哎(Outoh),' r + ')包含(“Mahalanobis距离”) ylabel (“健壮的距离”)标题(DD图,奥利弗-霍金斯法)举行从
在DD图中,数据点倾向于聚集在一条穿过原点的直线上。远离这条线的点通常被认为是离群点。在前面的每个图中,红色的“+”符号表示数据点robustcov
认为是异常值。
多元正态分布的数据评估
这个例子展示了如何使用robustcov
评估样本数据的多元正态分布或其他椭圆轮廓(EC)分布。
从多元正态分布生成随机样本数据。计算稳健协方差估计(使用Olive-Hawkins方法)和经典协方差估计的马氏距离。
rng (“默认”) x1 = mvnrnd(0(1,3),眼(3),200);[~, ~, d1] = robustcov(x1,“方法”,“olivehawkins”);D_classical1 = pdist2(x1,mean(x1),“mahalanobis”);
从椭圆轮廓(EC)分布生成随机样本数据。计算稳健协方差估计(使用Olive-Hawkins方法)和经典协方差估计的马氏距离。
Mu1 = [0 0 0];Sig1 =眼(3);Mu2 = [0 0 0];Sig2 = 25*眼(3);X2 = [mvnrnd(mu1,sig1 120);mvnrnd(mu2,sig2,80)];[~, ~, d2] = robustcov(x2,“方法”,“olivehawkins”);D_classical2 = pdist2(x2, mean(x2),“mahalanobis”);
从多元对数正态分布生成随机样本数据,该分布既不是多元正态分布,也不是椭圆分布。计算稳健协方差估计(使用Olive-Hawkins方法)和经典协方差估计的马氏距离。
X3 = exp(x1);[~, ~, d3] = robustcov(x3,“方法”,“olivehawkins”);D_classical3 = pdist2(x3, mean(x3),“mahalanobis”);
为三组样本数据分别创建一个D-D图进行比较。
图subplot(2,2,1) plot(d_classical1,d1,“o”) line([0 4.5], [0, 4.5]) xlabel(“Mahalanobis距离”) ylabel (“健壮的距离”)标题(“DD图,多元正态”) subplot(2,2,2) plot(d_classical2, d2,“o”line([0 18], [0, 18]) xlabel(“Mahalanobis距离”) ylabel (“健壮的距离”)标题(“DD图,椭圆轮廓”) subplot(2,2,3) plot(d_classical3, d3,“o”line([0 18], [0, 18]) xlabel(“Mahalanobis距离”) ylabel (“健壮的距离”)标题(DD图,200对数正态情况)
对于具有多元正态分布的数据(如左上所示),绘制的点遵循从原点延伸的45度直线。对于具有椭圆轮廓分布的数据(如右上方所示),绘制的点遵循直线,但与原点不是45度角。对于对数正态分布(如左下所示),所绘制的点不遵循直线。
在对数正态分布图中很难识别任何模式,因为大多数点都在图的左下角。使用加权DD图来放大这个角,并揭示当存在较大稳健距离时被掩盖的特征。
D3_weighted = d3(d3 <√(chi2inv(0.975,3)));D_classical_weighted = d_classical3(d3 <√(chi2inv(0.975,3)));
在图中添加第四个子图,以显示对数正态分布数据的加权过程的结果。
Subplot (2,2,4) plot(d_classical_weighted, d3_weighted,“o”line([0 3], [0, 3]) xlabel(“Mahalanobis距离”) ylabel (“健壮的距离”)标题(加权DD图,200对数正态情况)
该图上的刻度表明,它表示对数正态数据原始DD图的放大视图。这个视图更清楚地显示了图形缺乏模式,这表明数据既不是多元正态的,也不是椭圆轮廓的。
计算稳健的协方差并绘制离群值
使用高斯联结从二元分布生成随机数据点。
rng默认的Rho = [1,0.05;0.05,1];U =共生(“高斯”ρ,50);
修改5个随机选择的观测值为异常值。
噪声= randperm(50,5);U(噪声,1)= U(噪声,1)*5;
使用散点图可视化二元数据。
图散射(u (: 1), (2):,)
大多数数据点出现在图的左侧。然而,有些数据点似乎更靠右。这些点是可能影响协方差矩阵计算的异常值。
比较经典和稳健的协方差矩阵。
C = cov(u)
c =2×20.5523 0.0000 0.0000 0.0913
Rc = robustcov(u)
rc =2×20.1117 0.0364 0.0364 0.1695
经典和稳健的协方差矩阵不同,因为样本数据中的异常值会影响结果。
确定并绘制数据点robustcov
认为离群值。
[sig,mu,mah,outliers] = robustcov(u);图gscatter (u (: 1), u(:, 2),离群值,“品牌”,“牛”)({传奇“不是离群值”,“离群值”})
robustcov
将图右侧的数据点识别为潜在的异常值,并在计算稳健协方差矩阵时相应地处理它们。
输入参数
x
- - - - - -样本数据
数值矩阵
样本数据用于估计稳健的协方差矩阵,指定为数值矩阵。x
是一个n——- - - - - -p矩阵,其中每行是一个观察值,每列是一个变量。
robustcov
在计算稳健协方差矩阵时删除任何缺少预测值的行。
数据类型:单
|双
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:“方法”、“ogk’,‘NumOGKIterations’,1
将鲁棒估计器指定为正交Gnanadesikan-Kettenring方法,并将正交迭代次数设置为1。
方法
- - - - - -鲁棒估计量
“fmcd”
(默认)|“ogk”
|“olivehawkins”
鲁棒估计器,指定为下列之一。
的名字 | 价值 |
---|---|
“fmcd” |
最小协方差行列式方法 |
“ogk” |
正交Gnanadesikan-Kettenring (OGK)估计 |
“olivehawkins” |
浓度算法技术,一系列快速、一致和高度抗异常值的方法 |
例子:“方法”、“ogk”
OutlierFraction
- - - - - -离群值分数
0.5(默认)|范围为[0,0.5]的数值
异常值分数,指定为逗号分隔的对,由“OutlierFraction”
和范围[0,0.5]中的数值。的值1 -OutlierFraction指定使协方差行列式最小化的观测值的百分比。
算法选择大小的子样本h=上限(n+p+ 1) / 2),在那里n观察的次数和p是维数。OutlierFraction
是否达到最大可能细分的值,并控制子集的大小h协方差行列式最小。然后算法选择h近似等于(1 -OutlierFraction)×n每个子集的观测值。
例子:“OutlierFraction”,0.25
数据类型:单
|双
NumTrials
- - - - - -试验次数
正整数值
试验次数,指定为逗号分隔的对,由“NumTrials”
一个正整数值。
如果“方法”
是“fmcd”
,然后NumTrials
为大小为(p+ 1)从样本数据中提取,作为算法的起始点。p样本数据中的维数。的默认值NumTrials
是500。
如果“方法”
是“olivehawkins”
,然后NumTrials
是要使用的试验拟合或吸引子的数量。的默认值NumTrials
是2。此选项仅对非确定性启动有用。
例子:“NumTrials”,300年
数据类型:单
|双
BiasCorrection
- - - - - -标记应用小样本校正因子
1
(默认)|0
标记应用小样本校正因子,指定为由逗号分隔的对组成“BiasCorrection”
,要么1
或0
.一个1
值表示robustcov
校正小样本协方差估计中的偏差。一个0
值表示robustcov
不应用此更正。
例子:“BiasCorrection”,0
数据类型:逻辑
NumOGKIterations
- - - - - -正交迭代次数
2(默认)|正整数值
正交迭代的次数,指定为由逗号分隔的对组成“NumOGKIterations”
一个正整数值。通常,这个值被设置为1或2,进一步的步骤不太可能改善估计。
例子:“NumIter”,1
数据类型:单
|双
UnivariateEstimator
- - - - - -计算单变量稳健估计的函数
“tauscale”
(默认)|“qn”
函数用于计算单变量稳健估计,指定为逗号分隔的对,由“UnivariateEstimator”
下面是其中之一。
的名字 | 价值 |
---|---|
“tauscale” |
使用Yohai和Zamar的“tau尺度”估计,这是一个截断的标准偏差和加权平均值。 |
“qn” |
使用Croux和Rousseeuw的Qn尺度估计。 |
例子:“UnivariateEstimator”、“qn”
ReweightingMethod
- - - - - -调整权重的方法
“rfch”
(默认)|“rmvn”
在效率步骤中重新加权的方法,指定为逗号分隔的对,由“ReweightingMethod”
下面是其中之一。
的名字 | 价值 |
---|---|
“rfch” |
使用两个重加权步骤。这是一种标准的调整权重的方法,以提高效率。 |
“rmvn” |
重加权多元正态。当干净数据为多元正态时,使用两个重加权步骤可用于估计各种离群值配置下的真实协方差矩阵。 |
例子:“ReweightingMethod”、“rmvn”
NumConcentrationSteps
- - - - - -浓缩步骤数
10(默认)|正整数值
浓度步数,指定为由逗号分隔的对组成“NumConcentrationSteps”
一个正整数值。
例子:“NumConcentrationSteps”,8
数据类型:单
|双
StartMethod
- - - - - -为每个吸引子启动方法
“经典”
(默认)|“medianball”
|“元素”
|函数处理|单元阵列
方法,指定为由逗号分隔的对组成“开始”
下面是其中之一。
的名字 | 价值 |
---|---|
“经典” |
使用经典估计器作为开始。这是DGK吸引子,单独使用,被称为DGK估计器。 |
“medianball” |
用中位球作为起点。中位数球是(地中海(x)、眼睛(p)) .因此,距离样本中值欧氏距离最远的50%的情况被修剪以计算MB起始点。这是MB吸引子,单独使用,被称为MB估计器。 |
“元素” |
吸引子由浓度生成,其中起始点是随机选择的元素起始点:经典估计量应用于随机选择的p + 1个情况的“元素集”。这种“元素”吸引子在计算上是有效的,但存在理论缺陷,因为它是不一致的和零击穿。 |
默认情况下,吸引子的选择如下:如果其中一个吸引子是“medianball”
,然后是距离的欧几里得距离较大的任何吸引子中位数(X)
超过一半的数据(换句话说,在中位数球之外)没有被使用。然后根据MCD准则选择最终吸引子。
你也可以为函数指定一个函数句柄,该函数返回两个输出参数,用于计算初始位置和散射估计。
您还可以指定一个单元格数组,其中包含上表中给出的选项和函数句柄的任何组合。所使用的吸引子的数量等于单元格数组的长度。这个选项允许对算法进行更多的控制,并能够指定自定义数量的吸引子和起始点。
例子:“StartMethod”、“medianball”
输出参数
团体
-稳健的协方差矩阵估计
数字矩阵
稳健的协方差矩阵估计,返回为ap——- - - - - -p数字矩阵。p样本数据中包含的预测器的数量。
μ
-稳健的平均估计
数值数组
稳健的平均估计,以1 × -的形式返回p数值数组。p样本数据中包含的预测器的数量。
mah
-稳健的马氏距离
数值数组
健壮的Mahalanobis距离,返回为1by -n数值数组。robustcov
删除x
包含丢失的数据,所以行数mah
可能比行数小x
.
离群值
-异常值指数
逻辑值数组
在样本数据中作为异常值保留的观察指数x
,返回为1by -n逻辑值数组。一个0
值表示该观测值不是异常值。一个1
值表示该观测值为异常值。
robustcov
删除x
包含丢失的数据,所以行数离群值
可能比行数小x
.
年代
-包含评估信息的结构
结构
结构,包含估算信息,作为结构返回。
更多关于
Mahalanobis距离
马氏距离是样本点和分布之间的度量。
到向量的马氏距离x有均值的分布μ和协方差Σ是
距离表示距离x是来自于标准差数的均值。
robustcov
返回鲁棒马氏距离(mah
)根据在x
有均值的分布μ
和协方差团体
.
算法
最小协方差行列式估计
最小协方差行列式(MCD)是最快速的多元定位和散射估计器,具有一致性和鲁棒性。然而,对MCD的精确评估是不切实际的,因为评估样本数据的所有可能子集在计算上是昂贵的。robustcov
采用FAST-MCD方法实现MCD[3]
FAST-MCD方法选择h在n(n/ 2 <h≤n),其经典协方差矩阵的行列式可能最小。MCD均值是h选择的观察。
MCD协方差是的协方差矩阵h选定的点,乘以一致性因子以获得多元正态分布的一致性,并乘以校正因子以校正小样本量的偏差。
正交化Gnanadesikan-Kettenring估计
使正交化Gnanadesikan-Kettenring(OGK)估计是从Gnanadesikan and Kettering (GK)估计量开始的对散点的正定估计,这是一个可能是非正定的对鲁棒散点矩阵[1].估计使用一种主成分形式,称为成对散射矩阵上的正交迭代,用稳健方差替换其特征值(可能为负)。此过程可以迭代以改进结果,通常经过2或3次迭代才能获得收敛性。
Olive Hawkins估计
奥利文-霍金斯估算使用了奥利文和霍金斯提出的“浓度算法”技术。这是一系列快速、一致且高度抗异常值的方法。该估计是具有四阶矩椭圆轮廓分布协方差的稳健根n一致估计。该估计值是通过首先生成试验估计值或开始,然后从每个试验拟合中使用集中技术来获得吸引子来获得的。
假设(T0jC0j)是一个开始,然后在下一次迭代的经典均值和协方差估计从近似n/ 2情况下(n为观测数),基于前一次迭代的估计,马氏距离最小。这个迭代可以继续进行固定数量的步骤k,最后一步估计,k,作为吸引子。最后的估计值是根据给定的标准选择的。
默认情况下,使用两个吸引子。第一个吸引子是Devlin-Gnanadesikan-Kettering (DGK)吸引子,其中使用的起始点是经典估计量。第二个吸引子是中位数球(MB)吸引子,其中使用的开始是(中位数(x)、眼睛(p))
,即最接近的半组数据中位数(x)
欧几里得距离。如果DGK吸引子的位置估计量在中位数球之外,则使用MB吸引子,否则使用行列式最小的吸引子。最终的平均估计是所选吸引子的平均估计,最终的协方差估计是所选吸引子的协方差估计,乘以一个比例因子,使估计在正态分布上一致。
参考文献
Maronna, R.和Zamar, R. h ..“高维数据集的位置和分散的稳健估计。”技术计量学2002年第50卷。
[2]派森,S.范·埃尔斯特和G.威廉姆斯。LTS和MCD的小样本修正Metrika, 2002年第55卷。
[3] Rousseeuw, P.J.和Van Driessen, K.“最小协方差行列式估计的快速算法。”技术计量学第41卷,1999年。
[4] Olive, D.J.“多元位置和分散的抗估计器。”计算统计与数据分析“,, Vol. 46, pp. 99-102, 2004。
扩展功能
线程环境
使用MATLAB®在后台运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
这个函数完全支持基于线程的环境。金宝app有关更多信息,请参见在线程环境中运行MATLAB函数.
版本历史
在R2016a中引入
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。