贝叶斯MATLAB异常检测代码

贝叶斯MATLAB异常检测代码,第1张

close allclear allX=-6:0.0001:6%设碰做置采样范围及精度 pw1=0.9pw2=0.1%设置此唤先验概率 u1=-2sig1=0.25u2=2sig2=4%设置类条件概率分布参数 y1=(1./sqrt(2*pi*sig1))*gaussmf(X,[sqrt(sig1) u1])%计算类别一(正常细森吵凯胞)的类条件概率...

如果你是要去旦搜掉那些列向量中偏差较大的值的话,你可以先把每列 的整体分布求出来,再去掉离群值,或者此正用boxplot函数画出每列的箱图,离群值范围就能找出来了。

一般在实际中采用 样本点-平均值>3*标准差 来确定异常点,但是在统计学中有专门的理论来研究异模扒历常数据,比如戈罗伯斯检验法 。

你做的咐槐这方面叫做“小波分析对信号奇异性检测”。

小波确实有这方面的应用。建议你直接去图书馆借《MATLAB小波分析(张德丰等编著)》(第二版),第一版有没有我不不知道哈。其中有一节就专门讲如何用小波检测第一类间断点和第二类间断点的,并且有方法将奇异点消磨知除。讲的比较详细。

根据你的问题补充,我觉着你可以用欧几里得距离作为衡量波动的标准,具体程序如下:

data=[...

20000101   1221790   794164   427626

20000102   1282410   833566.4   448843.6

20000103   1241980   807287   434693

20000104   1265880   822822   443058

20000105   1301360   767802   533558

20000106   1298670   727255   571415

20000107   1273770   700573.5   573196.5

20000108   1300620   845403   455217

20000109   1301750   846138   455612

20000110   1318300   856895   461405

20000111   1327550   862908   464642

20000112   1356910   800577   556333 

20000113   1329360   744442   584918 

20000114   1312580   721919   590661 

20000115   1330460   864799   465661

20000116   1416710   855861.4   460848.6

20000117   瞎简消1293410   840717   452693

20000118   1303150   847047.4   456102.6

20000119   1304690   769767   534923

20000120   1301800   729008   572792

]

date=data(:,1)-20000000

data=data(:,2:end)

x1=data(:,1)

x2=data(:,2)

x3=data(:,3)

x1_m=mean(x1)

x2_m=mean(x2)

x3_m=mean(x3)

data_m=repmat([x1_m,x2_m,x3_m],size(data,1),1)

temp=(data-data_m).^2

temp=sum(temp')'

stem(date,temp)

得到的结果如下图:

可以看出波动最大是1月6号和1月16号。你可以自己设个门限,超过门限的都作为奇异值。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12442018.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存