Вопрос или проблема
Я использовал код MATLAB и получил два различных строковых вектора A=1×18 и B=1×350. Мне нужно удалить шумные данные из обоих строковых векторов, используя стандартное отклонение. Но проблема в том, что данные в обоих строковых векторах НЕ нормально распределены. Есть ли способ использовать стандартное отклонение для уменьшения шума в ненормально распределенных данных? Буду признателен за любые рекомендации. Спасибо.
Во-первых, хорошей практикой является поднятие вопросов о валидности здесь, когда вы удаляете выбросы и/или фильтруете данные. Это может сильно повлиять на валидность результатов. Введение можно найти здесь: Когда удалять выбросы при подготовке признаков для алгоритма машинного обучения.
Во-вторых, возможно ли решить проблему небольшого объема данных — можете ли вы собрать больше данных? Переопределить популяцию, чтобы получить больше данных? Использовать другой набор данных, который похож в разработке модели?
Наконец, похоже, что это проблема фильтрации; чтобы начать решение, проверьте документацию MATLAB по фильтрам.
Если результаты будут использоваться где-либо, вероятно, стоит задокументировать все ваши решения и первые два вопроса. При отсутствии большего количества деталей опыт показывает, что существует довольно высокий риск для любых выводов, основанных на этой модели.
Ответ или решение
Чтобы успешно устранить шум из не нормального распределения данных с использованием стандартного отклонения, важно учитывать несколько ключевых аспектов вашего подхода. В данной ситуации у вас есть два вектора: A размером 1×18 и B размером 1×350. Мы рассмотрим, как можно использовать стандартное отклонение для фильтрации шумовых данных, несмотря на то, что ваши данные не подчиняются нормальному распределению.
-
Понимание природы шумовых данных: Перед тем как применять метод стандартного отклонения, необходимо понять, что именно вы считаете "шума". Шум может проявляться как выбросы или как данные, которые значительно отличаются от основной тенденции набора данных. Визуализация данных с помощью диаграмм размаха (box plot) или гистограмм может помочь выявить такие аномалии.
-
Вычисление стандартного отклонения: Стандартное отклонение обычно используется для измерения разброса данных относительно среднего. Однако, при использовании стандартного отклонения для не нормального распределения, следует быть осторожным. Вычислите стандартное отклонение для ваших векторов A и B:
std_A = std(A); std_B = std(B);
-
Определение порога для выбросов: Вместо использования фиксированного порога в три стандартных отклонения (как это делается для нормального распределения), рассмотрите использование более адаптивного метода, который учитывает особенности вашей выборки. Например, можно установить пороговые значеия на основе межквартильного диапазона (IQR):
Q1_A = quantile(A, 0.25); Q3_A = quantile(A, 0.75); IQR_A = Q3_A - Q1_A; lower_bound_A = Q1_A - 1.5 * IQR_A; upper_bound_A = Q3_A + 1.5 * IQR_A; filtered_A = A(A >= lower_bound_A & A <= upper_bound_A);
Подобный подход можно применить и к вектору B.
-
Использование скользящих средних: Если ваши данные являются временными рядами, рассмотрите возможность использования скользящих средних или фильтров. Они могут помочь сгладить данные и устранить случайные вариации.
filtered_A = movmean(A, k); % k - размер окна filtered_B = movmean(B, k);
-
Документация процесса: Важно документировать каждый этап вашей обработки данных, учитывая, каким образом мы изменяем данные, и почему эти шаги оправданы. Это особенно критично, если результаты впоследствии будут использованы для построения моделей машинного обучения или статистического анализа. Такой подход повысит надежность ваших результатов и поможет избежать непредвиденных последствий.
-
Дополнительно: Если у вас есть возможность собирать дополнительные данные, рекомендуется это сделать. Большее количество данных может помочь уменьшить влияние выбросов и повысить статистическую значимость ваших результатов.
Следуя этим шагам, вы сможете разумно использовать стандартное отклонение для снижения шумов в ваших векторах, сохраняя при этом целостность данных и валидность полученных выводов.