怎么用matlab剔除数据的异常值(3σ准则)
參考:https://blog.csdn.net/weixin_30633405/article/details/95177009
3σ準(zhǔn)則又稱為拉依達(dá)準(zhǔn)則,它是先假設(shè)一組檢測數(shù)據(jù)只含有隨機(jī)誤差,對其進(jìn)行計算處理得到標(biāo)準(zhǔn)偏差,按一定概率確定一個區(qū)間,
認(rèn)為凡超過這個區(qū)間的誤差,就不屬于隨機(jī)誤差而是粗大誤差,含有該誤差的數(shù)據(jù)應(yīng)予以剔除。且3σ適用于有較多組數(shù)據(jù)的時候。
這種判別處理原理及方法僅局限于對正態(tài)或近似正態(tài)分布的樣本數(shù)據(jù)處理,它是以測量次數(shù)充分大為前提的,
當(dāng)測量次數(shù)較少的情形用準(zhǔn)則剔除粗大誤差是不夠可靠的。因此,在測量次數(shù)較少的情況下,最好不要選用準(zhǔn)則,而用其他準(zhǔn)則。
在正態(tài)分布中σ代表標(biāo)準(zhǔn)差,μ代表均值。x=μ即為圖像的對稱軸
3σ原則為
數(shù)值分布在(μ-σ,μ+σ)中的概率為0.6826
數(shù)值分布在(μ-2σ,μ+2σ)中的概率為0.9544
數(shù)值分布在(μ-3σ,μ+3σ)中的概率為0.9974
可以認(rèn)為,Y 的取值幾乎全部集中在(μ-3σ,μ+3σ)區(qū)間內(nèi),超出這個范圍的可能性僅占不到0.3%.
?
我的數(shù)據(jù)是244*119,即有244組樣品,第一列是位置信息,隨后的各個列為變量信息,即每一列為一個變量,剔除每一列中的異常值。
下面的代碼實(shí)現(xiàn)的功能是找出剔除的異常值的位置信息,
for ii = 3:119P=data_jd(:,ii);ave = mean(P);%mean 求解平均值u = std(P);%求解標(biāo)準(zhǔn)差for i = 1:244if(abs(P(i)-ave)>3*u)P(i) = 0;P_ans = P(P==0);len=length(P_ans);if len == []continueelselocation=find(P==0)if len == 1loc(1,ii)=locationelsefor iii=1:lenloc(iii,ii)=location(iii)endendendelsecontinue;endendendans=loc(loc~=0); ans=unique(ans);#刪除重復(fù)的值%% 根據(jù)索引去除異常值 data_jd(ans,:)=[]?
?
總結(jié)
以上是生活随笔為你收集整理的怎么用matlab剔除数据的异常值(3σ准则)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器人学习Robot Learning之
- 下一篇: 毕业设计 单片机音乐播放器设计 - 物联