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) в распределение вероятности/частоты, что значения outlier (первая и последняя пара) находятся вне стандартного отклонения 1. Может ли кто-нибудь помочь мне решить эту проблему.

PS: Я пробовал разные расстояния, такие как расстояния между евреями и махаланоби, но они не работали.

ответ

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-файлы или что-то еще с этими пунктами.

+0

Второй метод ближе к тому, что мне нужно, но если я изменяю хотя бы одно значение переменной Y, это приводит к изменению значений для переменных low_range и high_range, что дает неверный конечный результат. Мне нужен более стабильный метод, с помощью которого, даже при изменении значений в переменной Y, я могу различать листы и выбросы. – mani

+0

Одно стандартное отклонение - это относительное значение, основанное на наборе данных, поэтому вам нужно решить, из каких данных установлены ваши «выбросы». Если вы хотите иметь общий набор данных, из которых определены отклонения, вам нужно сначала определить параметры low_range и high_range и сохранить эти значения, затем вы можете изменить значения y или создать новый вектор значений y, которые как показано выше. Если пространство памяти не вызывает беспокойства, я бы предложил просто сохранить два разных набора y: один, который является полным, чтобы определить диапазон outlier from и другой, который отфильтровывает выбросы – cjtytler

+0

В моем случае память определенно вызывает беспокойство. Как насчет второго и третьего стандартного отклонения? Наверное, они зависят от первого отклонения. Таким образом, эффективно они также зависят от набора данных. Итак, мой вопрос заключается в том, как система может быть обучена и проверена в этом случае? Каков наилучший подход? – mani

Смежные вопросы