Matlab学习系列012. 数据预处理1剔除异常值及平滑处理
更新时间:2024-05-16 10:29:01 阅读量: 综合文库 文档下载
- matlab学习教程推荐度:
- 相关推荐
012. 数据预处理(1)——剔除异常值及平滑处理
测量数据在其采集与传输过程中,由于环境干扰或人为因素有可能造成个别数据不切合实际或丢失,这种数据称为异常值。为了恢复数据的客观真实性以便将来得到更好的分析结果,有必要先对原始数据(1)剔除异常值;
另外,无论是人工观测的数据还是由数据采集系统获取的数据,都不可避免叠加上“噪声”干扰(反映在曲线图形上就是一些“毛刺和尖峰”)。为了提高数据的质量,必须对数据进行(2)平滑处理(去噪声干扰);
(一)剔除异常值。
注:若是有空缺值,或导入Matlab数据显示为“NaN”(非数),需要①忽略整条空缺值数据,或者②填上空缺值。
填空缺值的方法,通常有两种:A. 使用样本平均值填充;B. 使用判定树或贝叶斯分类等方法推导最可能的值填充(略)。
一、基本思想:
规定一个置信水平,确定一个置信限度,凡是超过该限度的误差,就认为它是异常值,从而予以剔除。
二、常用方法:拉依达方法、肖维勒方法、一阶差分法。
注意:这些方法都是假设数据依正态分布为前提的。
1. 拉依达方法(非等置信概率)
如果某测量值与平均值之差大于标准偏差的三倍,则予以剔除。
xi?x?3Sx
其中,x?差。
?112S?(x?x)为样本均值,x??为样本的标准偏x?i?ini?1?n?1i?1?nn1?2注:适合大样本数据,建议测量次数≥50次。
代码实例(略)。
2. 肖维勒方法(等置信概率)
在 n 次测量结果中,如果某误差可能出现的次数小于半次时,就予以剔除。
这实质上是规定了置信概率为1-1/2n,根据这一置信概率,可计算出肖维勒系数,也可从表中查出,当要求不很严格时,还可按下列近似公式计算:
?n?1?0.4ln(n)
Tab1. 肖维勒系数表
n 3 4 5 6 7 8 9 10 11 12 ωn 1.38 1.53 1.65 1.73 1.80 1.86 1.92 1.96 2.00 2.03 n 13 14 15 20 30 40 50 100 200 500 ωn 2.07 2.10 2.13 2.24 2.39 2.49 2.58 2.81 3.02 3.20
如果某测量值与平均值之差的绝对值大于标准偏差与肖维勒系数之积,则该测量值被剔除。
xi?x??nSx
例1. 利用肖维勒方法对下列数据的异常值(2.5000)进行剔除: 1.5034 1.5062 1.5034 1.5024 1.4985 2.5000 1.5007 1.5067 1.4993 1.4969 上述数据保存于文件erro.dat
代码:
x=load('error.dat'); n=length(x); subplot(2,1,1); plot(x,'o'); title('原始数据')
axis([0,n+1,min(x)-1,max(x)+1]); w=1+0.4*log(n);
yichang = abs(x-mean(x)) > w*std(x);
% 若用拉依达方法,把w改成3即可,但本组数据将不能成功剔除异常值。
x(yichang)=[];
save errornew.dat x -ASCII subplot(2,1,2); plot(x,'rs');
title('异常值剔除后数据');
axis([0,n+1,min(x)-1,max(x)+1]);
运行结果:x =
1.5034 1.5062 1.5034 1.5024 1.4985 2.5000 1.5007 1.5067 1.4993 1.4969
y =
1.5034 1.5062 1.5034 1.5024 1.4985 1.5007 1.5067 1.4993 1.4969
3. 一阶差分法(预估比较法)
用前两个测量值来预估新的测量值,然后用预估值与实际测量值比较,若大于事先给定的允许差限值,则剔除该测量值。
预估值
?n?xn?1?(xn?1?xn?2) x比较判别:
?n?W xn?x注:该方法的特点是
(1)适合于实时数据采集与处理过程;
(2)精度除了与允许误差限的大小有关外,还与前两点测量值的精确度有关;
(3)若被测物理量的变化规律不是单调递增或单调递减函数,这一方法将在函数的拐点处产生较大的误差,严重时将无法使用。
(二)数据的平滑处理
对于一组测量数据(xi,yi) i=1,…,n,不要直接就想着求出的拟合多项式的线性参数,而是要先平滑处理去掉“噪声”。平滑处理在科学研究中广泛使用,它可以减少测量中统计误差带来的影响,尤其被用于无法利用多次重复测量来得到其平均值的情况和当yi随xi有徒然变化的那些测量段。
1. “(2n+1点)单纯移动平均”平滑滤波
取出以yi为中心的前后各n个数据(yi-n, …,yi-1,yi,…yi+n)求
平均值代替yi,即
yi'n1?yi?1 ?2n?1k??n优点:方法简单,计算方便。
缺点:方法产生误差会造成信号失真;前后各n个数据无法平滑。 适用性:适用于变化缓慢的数据。 注:n越大平滑效果越好,但失真也越大。
例2. “9点单纯移动平均”平滑滤波
代码:
% 建立“n点单纯移动平均”的滤波函数 % 注意函数要单独保存为与函数名同名的.m文件 function Y=smooth_data(y,n)
m=length(y); j=1;
for i=(n-1)/2+1:(m-(n-1)/2) p=i-(n-1)/2; q=i+(n-1)/2;
Y(j)=sum(y(p:q))/n; j=j+1; end end % 主程序 clc clear
t=-15:0.5:15; n=length(t);
Y=5./(1+t.^2); % 原始测试数据
y=Y+(0.5-rand(1,n)); % 给测试数据加上噪声干扰 y1=smooth_data(y,9); % 调用函数作9点滤波处理
plot(1:n,Y,1:n,y,'-o',5:n-4,y1,'-*'); legend('无噪声','含噪声','9点平滑后');
运行结果:
2. “加权移动平均”平滑滤波
加权的基本思想:
作平均的区间内中心处数据的权值最大,愈远离中心处的数据权值越小小。这样就减小了对真实信号本身的平滑作用。
权重系数可以采用最小二乘原理,使平滑后的数据以最小均方差逼近原始数据。即令
min?(yi'?k?yi?k)2
k
通常采用“五点二次平滑” (n=5, k=-2,-1,0,1,2)
?22??(yi?k?A0?A1k?A2k)?0?k??2?22??(yi?k?A0?A1k?A2k)k?0 ?k??2?222??(yi?k?A0?A1k?A2k)k?0?k??2五点二次平滑权重系数表:
归一系数 y-2’ y-1’ y0’ y1’ y2’
'y0?y-2 31 9 -3 -5 3 y-1 9 13 12 6 -5 y0 -3 12 17 12 -3 y1 -5 6 y2 3 -5 35 35 35 35 35 12 -3 13 9 9 31 1??3y?2?12y?1?17y0?12y1?3y2?35
3. 用“smooth函数”平滑滤波
调用格式:
Z = smooth(Y, span, method)
说明:
Z: 平滑后的数据向量
Y: 被平滑的数据向量 span: 平滑点数,缺省为5点
method :平滑方法,缺省为移动平滑,其它还有
‘moving’ —— Moving average (default)单纯移动平均 ‘lowess’ —— Lowess (linear fit)线性加权平滑 ‘loess’ ——Loess (quadratic fit)二次加权平滑 'sgolay' —— Savitzky-Golay 'rlowess' ——Robust Lowess (linear fit) 'rloess' ——Robust Loess (quadratic fit)
例3. 用matlab自带的平滑函数作平滑滤波实例。
代码:
t=-10:0.5:10; n=length(t);
y=5./(1+t.^2); % 原始测试数据
y1=y+0.5*(0.5-rand(1,n)); % 给测试数据加上噪声干扰 % 调用多个滤波函数作滤波处理
y2=smooth(y1,3); y3=smooth(y1,9);
y4=smooth(y1,3,'lowess'); y5=smooth(y1,9,'lowess'); y6=smooth(y1,3,'loess'); y7=smooth(y1,9,'loess'); y8=smooth(y1,3,'rloess'); y9=smooth(y1,9,'rloess'); figure(1); % 第一张图
subplot(3,2,1);
plot(t,y); axis([-10 10 -1 6]); grid on title('无噪声信号');
subplot(3,2,2);
plot(t,y1,'-*'); axis([-10 10 -1 6]); grid on title('含噪声信号');
subplot(3,2,3);
plot(t,y2,'-*'); axis([-10 10 -1 6]); grid on title('3点单纯移动平均');
subplot(3,2,4);
plot(t,y3,'-*'); axis([-10 10 -1 6]); grid on title('9点单纯移动平均');
subplot(3,2,5);
plot(t,y4,'-*'); axis([-10 10 -1 6]); grid on title('3点线性加权平滑');
subplot(3,2,6);
plot(t,y5,'-*'); axis([-10 10 -1 6]); grid on title('9点线性加权平滑'); figure(2); % 第二张图
subplot(3,2,1);
plot(t,y); axis([-10 10 -1 6]); grid on title('无噪声信号');
subplot(3,2,2);
plot(t,y1,'-*'); axis([-10 10 -1 6]); grid on title('含噪声信号');
subplot(3,2,3);
plot(t,y6,'-*'); axis([-10 10 -1 6]); grid on title('3点二次加权平滑');
subplot(3,2,4);
plot(t,y7,'-*'); axis([-10 10 -1 6]); grid on title('9点二次加权平滑');
subplot(3,2,5);
plot(t,y8,'-*'); axis([-10 10 -1 6]); grid on title('3点rloess平滑');
subplot(3,2,6);
plot(t,y9,'-*'); axis([-10 10 -1 6]); grid on title('9点rloess平滑');
运行结果:
正在阅读:
Matlab学习系列012. 数据预处理1剔除异常值及平滑处理05-16
我国VOCs排放控制标准10-07
伊克昭中学20122013学年第二学期03-13
2015年下半年四川省《综合素质》基本能力归纳:阅读理解能力模拟试题01-05
小学生人格心理健康辅导《你是谁——强化角色意识》教案设计04-05
030101制信用证开证申请书 - 图文09-29
《皈依问答》(全)益西彭措堪布04-24
错题集锦(六年级)06-22
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 预处理
- 剔除
- 平滑
- 异常
- 处理
- 系列
- 数据
- Matlab
- 学习
- 012
- 福建省安溪县2012届高三下学期高中毕业班综合能力测试(三
- 陕西省城固县第一中学届高三化学11月月考试题
- 文献综述
- 大学语文(一)题库
- 概率04-05学年第一学期(经,A卷)
- 劳动合同版本1
- 企业年度工作计划范文
- 宏观经济学课后答案(祈春节版)第四章
- 2018-2019版高中历史 第4单元 内忧外患与中华民族的奋起 第15课
- 江苏省2016年下半年注册化工工程师:丙烯的用途试题
- 基于Unity3D的跨平台格斗游戏设计毕业论文
- 一站到底 第七期 0814
- 胜龙大厦施工组织设计
- 医保检查整改报告
- 企业法律风险防范讲座讲义整理版
- 施工测量监理细则
- 出嫁女儿能继承父母的遗产吗
- 典型焊接结构件焊接工艺编制及焊接理论知识试题试题库答案
- 省厅省局规范性文件试题
- 人教版四年级语文上册全册教学反思