概率/频率分布中的异常值检测

时间:2013-12-05 23:45:39

标签: matlab probability outliers probability-theory frequency-distribution

我有二维数据集。 (X和Y)都是连续的随机变量。

Z =(X,y)= {(1,7),(2,15),(3,24),(4,25),(5,29),(6,32),(7 ,34),(8,35),(9,27),(10,39)}

我想检测y变量值的异常值。 y变量的正常范围是10-35。因此,在上面的数据集中,第一对和最后一对是异常值,而其他对是正常的巴黎。我想将变量z =(x,y)转换为概率/频率分布,异常值(第一对和最后一对)位于标准偏差1之外。任何人都可以帮助我解决这个问题。

PS:我尝试了不同的距离,如eucledian和mahalanobis距离,但它们没有用。

1 个答案:

答案 0 :(得分:1)

我不确定你的最终目标是什么,但我会假设您在nx2矩阵中格式化x,y变量,所以z = [x,y]其中x:= nx1和y:= nx1向量。

那么你要问的是如何分离y在10-35范围之外的数据点?为此,您可以使用条件语句查找发生的索引:

index = z(:,2) <= 35 & z(:,2) >= 10;  %This gives vector of 0's & 1's length nx1
z_inliers = z(index,:);      %This has a [x,y] matrix of only inlier data points
z_outliers = z(~index,:);    %This has a [x,y] matrix of outlier data points

如果你想根据标准差做这个,那么代替10和35做:

low_range = mean(z(:,2)) - std(z(:,2));
high_range = mean(z(:,2)) + std(z(:,2));
index = y <= high_range & y >= low_range;

然后你可以用这些点来绘制你的pdf或其他任何东西。