У меня проблема с различением полных зашумленных данных или данных, содержащих некоторые выбросы. Фактически, я пытаюсь выполнить своего рода проверку независимости сетки (термин обычно используется в вычислительной гидродинамике для определения размера жадности, когда числовые результаты не зависят от размера сетки/сети) для моего набора данных. Я ввел этот термин только для того, чтобы лучше объяснить мой случай: у меня есть модель, которая выводит набор числовых данных. Изменение размера шага в модели увеличивает размер выходного числового результата (очевидно). Однако выходные результаты содержат зашумленные данные, которые следует удалить перед проверкой независимости сетки (или независимости размера шага). Пример выходных данных модели может быть похож на следующее изображение.

Эти точки выходных данных «независимы» от размера шага, потому что общие данные (после удаления выбросов) следуют линейной зависимости, независимой от шагов. Однако это можно обнаружить после удаления точек-выбросов (если бы не было надежных критериев для проверки линейной зависимости для различных размеров шага; здесь я использую корреляции Пирсона/Спирмена). Удаление выбросов из набора данных, показанного выше, может быть достигнуто с помощью встроенной функции MATLAB stdfilt() или просто:

rmvIdx = (abs(DataPoints- median(DataPoints)) > N*mad(DataPoints));
DataPoints(rmvIdx) = [];

Тем не менее, оба подхода пропускают некоторые точки данных и не могут «полностью» обнаружить выбросы. Поэтому мой первый вопрос: как полностью обнаружить выбросы на изображенном изображении. Я следовал нескольким вариантам, чтобы полностью обнаружить выбросы, например:

% First remove distant outliers with N = 3
 rmvIdx = (abs(DataPoints- median(DataPoints)) > N*mad(DataPoints));
 DataPoints(rmvIdx) = [];
% Remove using local SD
Local_std = stdfilt(DataPoints);
Local_std(abs(Local_std- mode(Local_std)) < 1e-4) = 0;
DataPoints(Local_std) = [];
% Smoothing data as a further step
DataPoints= smooth(DataPoints,0.6);

Приведенный выше подход позволит найти больше выбросов, однако этот «строгий» поиск выбросов может вызвать проблемы с другими наборами данных, такими как:

Как показано, этот набор данных «полностью зашумлен» (по сравнению с предыдущим изображением); однако при использовании вышеупомянутого подхода для обнаружения выбросов он ошибочно обнаружит линейную зависимость (Spearman/Spearman R > 0,9–0,99) для небольших размеров шага (просто потому, что при малых размерах шага зашумленные данные могут быть подавлены подходом, который я выбрал). ). Таким образом, второй вопрос: как обнаружить полностью зашумленные наборы данных, особенно когда я использовал этот «строгий» подход для поиска выбросов? как найти компромисс между этими разными, но очень зависимыми случаями?

ПРИМЕЧАНИЕ. 

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech ,ME,M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

Выбросы — это редкие события, которые не следуют тому же распределению, что и обычный шум в ваших данных. Вы можете думать о данных с низким уровнем шума, а также о некоторых выбросах как о смешанном распределении, таким образом, большую часть времени вы получаете базовый (небольшой) шум, но иногда вы получаете там выброс.

Таким образом, на первой кривой есть выбросы, почти слишком много, чтобы считать их редкими, но я допускаю, что их можно назвать выбросами. Вторая кривая просто сильно искажена большим шумом. Выбросы - это шум. Схемы обнаружения/коррекции выбросов не сработают на второй кривой, так как это все выбросы.

Затем вторая кривая имеет гетероскедастический шум. Шум не имеет одинаковых параметров шума вдоль кривой со стандартным отклонением, которое кажется примерно пропорциональным сигналу. Шум также появляется из-за распределения, которое не является непрерывным. Кажется, что возникают только дискретные уровни.

Я также замечаю, что большинство ваших выбросов, кажется, лежат на нижней стороне этой кривой, но не все. Хорошая схема будет учитывать этот факт.

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

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ