У меня есть набор данных с предположением, что ближайшие соседи являются лучшими предикторами. Просто прекрасный пример визуализации двухстороннего градиента
Предположим, у нас есть случай, когда несколько значений отсутствуют, мы можем легко предсказать на основе соседей и тренда.
Соответствующая матрица данных в R (фиктивный пример для тренировки):
miss.mat <- matrix (c(5:11, 6:10, NA,12, 7:13, 8:14, 9:12, NA, 14:15, 10:16),ncol=7, byrow = TRUE)
miss.mat
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 5 6 7 8 9 10 11
[2,] 6 7 8 9 10 NA 12
[3,] 7 8 9 10 11 12 13
[4,] 8 9 10 11 12 13 14
[5,] 9 10 11 12 NA 14 15
[6,] 10 11 12 13 14 15 16
Примечания: (1) Свойство пропущенных значений предполагается случайным , оно может происходить где угодно.
(2) Все точки данных взяты из одной переменной, но предполагается, что на их значение влияют neighbors
строка и столбец рядом с ними. Поэтому позиция в матрице важна и может рассматриваться как другая переменная.
Я надеюсь, что в некоторых ситуациях я могу предсказать некоторые смещения (могут быть ошибки) и исправить смещение (просто пример, давайте сгенерируем такую ошибку в фиктивных данных):
> mat2 <- matrix (c(4:10, 5, 16, 7, 11, 9:11, 6:12, 7:13, 8:14, 9:13, 4,15, 10:11, 2, 13:16),ncol=7, byrow = TRUE)
> mat2
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 4 5 6 7 8 9 10
[2,] 5 16 7 11 9 10 11
[3,] 6 7 8 9 10 11 12
[4,] 7 8 9 10 11 12 13
[5,] 8 9 10 11 12 13 14
[6,] 9 10 11 12 13 4 15
[7,] 10 11 2 13 14 15 16
Приведенные выше примеры являются лишь иллюстрацией (на них можно ответить визуально), но реальный пример может быть более запутанным. Я смотрю, есть ли надежный метод для такого анализа. Я думаю, что это должно быть возможно. Какой будет подходящий метод для проведения такого типа анализа? какие-либо R / программные предложения для такого анализа?
Ответы:
Вопрос задает способы использования ближайших соседей в прочном способ выявления и исправления локальных выбросов. Почему бы не сделать именно это?
Процедура состоит в том, чтобы вычислить устойчивое локальное сглаживание, оценить невязки и обнулить все, что слишком велико. Это напрямую удовлетворяет всем требованиям и является достаточно гибким для адаптации к различным приложениям, поскольку можно варьировать размер локального соседства и порог для определения выбросов.
(Почему гибкость так важна? Потому что любая такая процедура имеет хорошие шансы идентифицировать определенные локализованные поведения как "отдаленные". Таким образом, все такие процедуры можно считать более плавными . Они устранят некоторые детали наряду с очевидными выбросами. Аналитик нужен некоторый контроль над компромиссом между сохранением деталей и неспособностью обнаружить локальные выбросы.)
Еще одним преимуществом этой процедуры является то, что она не требует прямоугольной матрицы значений. Фактически, это может даже применяться к нерегулярным данным, используя локальный сглаживатель, подходящий для таких данных.
R
, как и большинство полнофункциональных пакетов статистики, имеет несколько надежных локальных сглаживателей, таких какloess
. Следующий пример был обработан с использованием этого. Матрица имеет строк и 49 столбцов - почти 4000 записей. Он представляет собой сложную функцию, имеющую несколько локальных экстремумов, а также целую линию точек, где она не дифференцируема («складка»). Для того, чтобы немного больше , чем 5 % из точек - очень высокий процент , чтобы считать «периферийное» - были добавлены гауссовых ошибки которых стандартное отклонение составляет только 1 / 20 стандартного отклонения исходных данных. Этот синтетический набор данных, таким образом, представляет многие сложные характеристики реалистичных данных.Обратите внимание, что (согласно
R
соглашениям) строки матрицы отображаются в виде вертикальных полос. Все изображения, за исключением остатков, затенены, чтобы помочь отображать небольшие изменения в их значениях. Без этого почти все местные выбросы были бы невидимы!Сравнивая «вмененный» (исправленный) с «реальным» (исходным незагрязненным) изображением, становится очевидным, что удаление выбросов сгладило некоторую, но не всю, складку (которая идет от вниз в ( 49 , 30 ) ; очевидно , в виде светло - голубой полосой под углом в «Разности» сюжета).(0,79) (49,30)
Спеклы на графике «Остатки» показывают очевидные изолированные локальные выбросы. Этот график также отображает другую структуру (например, диагональную полосу), относящуюся к базовым данным. Эту процедуру можно улучшить, используя пространственную модель данных (с помощью геостатистических методов), но ее описание и иллюстрирование приведут нас здесь слишком далеко.
источник
Я бы посоветовал вам взглянуть на эту статью [0]. Проблема, к которой она имеет отношение, кажется, вполне соответствует вашему описанию, за исключением того, что метод, предложенный автором, несколько более изощрен, чем NN-ввод (хотя он использует нечто подобное в качестве отправной точки).
Первым этапом каждой итерации является этап ввода данных. Это делается так же, как в алгоритме EM: недостающие ячейки заполняются значением, которое они должны иметь (это E-шаг).
Подводя итог статьи, вот общий алгоритм, который они предлагают:
Затем до сходимости:
Я не знаю о готовой реализации R для этого подхода, но ее можно легко получить из подкомпонентов (главным образом, надежного алгоритма PCA), и они хорошо реализованы в R, см. Пакет rrcov (статья тихая информативность на эту тему).
источник