matlab 检验数组内部的异常值,2019-04-01 3σ准则异常值检测及相关方法

这篇博客介绍了标准差的概念及其在Matlab中的计算方法,包括对行和列的操作。同时,它探讨了3σ原则在异常值检测中的应用,强调在小样本情况下使用该原则可能产生的不准确性,并通过实例展示了如何找出超出3σ范围的数据点。此外,还提到了拉依达准则在正态分布中的应用和概率分布特性。
摘要由CSDN通过智能技术生成

标准差 standard deviation

% Y = std(X,W,DIM)

% W权值,传入0表示正常的计算方法。

% dim=1表示对行进行操作

% dim=2表示对列进行操作

% 默认行操作

% Example:

>> X = [4 -2 1; 9 5 7]

X =

4 -2 1

9 5 7

>> std(X,0,1)

ans =

3.5355 4.9497 4.2426

>> std(X,0,2)

ans =

3

2

>> mean(X)

ans =

6.5000 1.5000 4.0000

>> mean(X,1)

ans =

6.5000 1.5000 4.0000

>> mean(X,2)

ans =

1

7

% 3σ用法

>> abs(X-mean(X))

ans =

2.5000 3.5000 3.0000

2.5000 3.5000 3.0000

>> abs(X-mean(X))>3*std(X)

ans =

2×3 logical 数组

0 0 0

0 0 0

>> abs(X-mean(X))>3*std(X)

ans =

2×3 logical 数组

0 0 0

0 0 0

% 小样本无效

>> X = [4 -2 1; 9 5 1000]

X =

4 -2 1

9 5 1000

>> std(X)

ans =

3.5355 4.9497 706.3997

>> abs(X-mean(X))>3*std(X)

ans =

2×3 logical 数组

0 0 0

0 0 0

% 复制第一行数据,直到复制十遍,才有效

>> X = [4 -2 1;4 -2 1;4 -2 1;4 -2 1;4 -2 1;4 -2 1;4 -2 1;4 -2 1;4 -2 1;4 -2 1;9 -2 1000]

X =

4 -2 1

4 -2 1

4 -2 1

4 -2 1

4 -2 1

4 -2 1

4 -2 1

4 -2 1

4 -2 1

4 -2 1

9 -2 1000

>> std(X)

ans =

1.5076 0 301.2098

>> abs(X-mean(X))>3*std(X)

ans =

11×3 logical 数组

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

1 0 1

% 使用any函数,找出任一变量(列)落在3σ外的样本(行)

>> abs(X-mean(X))>3*std(X)

ans =

11×3 logical 数组

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

1 0 1

>> any(abs(X-mean(X))>3*std(X),2)

ans =

11×1 logical 数组

0

0

0

0

0

0

0

0

0

0

1

>> X(any(abs(X-mean(X))>3*std(X),2),:)

ans =

9 -2 1000

以下分割线内参考百度百科

3σ准则

又称为拉依达准则它是先假设一组检测数据只含有随机误差对其进行计算处理得到标准偏差,按一定概率确定一个区间,认为凡超过这个区间的误差,就不属于随机误差而是粗大误差,含有该误差的数据应予以剔除。且3σ适用于有较多组数据的时候。

这种判别处理原理及方法仅局限于对正态或近似正态分布的样本数据处理,它是以测量次数充分大为前提的,当测量次数较少的情形用准则剔除粗大误差是不够可靠的。因此,在测量次数较少的情况下,最好不要选用准则,而用其他准则。

在正态分布中σ代表标准差,μ代表均值。x=μ即为图像的对称轴

3σ原则为:

(μ-σ,μ+σ),p=0.6827

(μ-2σ,μ+2σ),p=0.9545

(μ-3σ,μ+3σ),p=0.9973

可以认为,Y 的取值几乎全部集中在(μ-3σ,μ+3σ)区间内,超出这个范围的可能性仅占不到0.3%。

4d9a74e07912

image.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab中,我们常常使用"3σ准则"来判断随机误差和异常值。随机误差是一种在数据测量中普遍存在的随机变动,而异常值则是一种与其他数据明显不同的异常情况。 首先,我们需要计算数据的均值和标准差。均值表示数据的集中趋势,标准差表示数据的离散程度。在Matlab中,我们可以使用"mean"函数和"std"函数来计算均值和标准差。 接下来,我们可以使用"3σ准则"来判断异常值。根据"3σ准则",在正态分布的假设下,大约有68%的数据位于均值加减一个标准差的范围内,约有95%的数据位于均值加减两个标准差的范围内,约有99.7%的数据位于均值加减三个标准差的范围内。 因此,我们可以将均值减去三倍的标准差,得到一个下限值,将均值加上三倍的标准差,得到一个上限值。在这个范围之外的数据可以被视为异常值。 在Matlab中,我们可以使用以下代码来实现随机误差和异常值的分离: 1. 计算数据的均值和标准差: ``` data = [1, 2, 3, 4, 5, 10, 15, 20, 25]; % 示例数据 mean_val = mean(data); std_val = std(data); ``` 2. 计算上限和下限值: ``` lower_limit = mean_val - 3 * std_val; upper_limit = mean_val + 3 * std_val; ``` 3. 根据上限和下限值来判断异常值: ``` outliers = data(data < lower_limit | data > upper_limit); ``` 通过以上步骤,我们可以得到异常值的集合"outliers",其中包含了数据中超出"3σ准则"范围的异常值。注意,这只是一种常用方法,对于特定数据集,根据实际情况可能需要调整"3σ准则"的阈值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值