0

我有以下二维数据集。(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:我尝试过不同的距离,例如欧几里德距离和马氏距离,但没有奏效。

4

1 回答 1

1

我不确定您的最终目标是什么,但我假设您将 x,y 变量格式化为 nx2 矩阵,因此 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或任何东西。

于 2013-12-06T02:33:49.283 回答