R пакеты для поиска неверных данных - PullRequest
2 голосов
/ 11 декабря 2011

Я имею дело с набором данных, в котором есть некоторые очевидные ошибки в данных (т. Е. Ребенок младше 1 года с остатком на кредитной карте в 50 000 долларов). Я не могу проходить построчно, если установлено> 100 тыс. Строк. Есть ли какая-то формальная работа по поиску таких явных проблем в наборах данных или даже лучше любых пакетов в R? Или я должен просто начать делать гистограммы?

Ответы [ 3 ]

5 голосов
/ 11 декабря 2011

В этом году на конференции UseR2011 была сессия по этому вопросу. Я хорошо помню это, потому что я председательствовал:)

http://www.warwick.ac.uk/statsdept/user-2011/schedule/thursday.html

Пакеты 'deduc корректный' и 'editrules' могут вам помочь, а некоторые другие разговоры в этом сеансе также могут иметь некоторые указатели.

Управление данными, MS.01, Председатель: Барри Роулингсон

Сьюзен Ранни Это Мальчик! Анализ десятков миллионов записей о рождении с использованием R [Slides]

Джоан Деммлер Проблемы работы с большой базой данных регулярно собираемые данные о состоянии здоровья: объединение SQL и R [слайды]

Джон Брайант Демографический: классы и методы для данных о населении

Марк ван дер Лу Исправление данных, нарушающих линейные ограничения, с использованием вычитаемые и редактируемые пакеты

3 голосов
/ 11 декабря 2011

Насколько я знаю, такого пакета нет.Кажется, то, что вы просите, очень специализировано.Я думаю, что вы действительно ищете аномалии или выбросы.Хотя было бы здорово иметь какую-то вещь, которая бы регрессировала все переменные в других и искала потенциальные экстремальные выбросы (вероятно, не так уж сложно сделать)

2 мысли:

1) график рассеянияпеременные, которые вы будете указывать, такие как возраст и доход.Даже при 100 тыс. Строк эта (1 год в возрасте 50 тыс.) Выскочит далеко от всех остальных.

2) Выполнение регрессии и просмотр графика модели.Там есть довольно хорошее обнаружение выброса.

3) Поиск среди стандартизированных остатков и поиск значений выше 2 или, скорее всего, 3 sd, с помощью которых указатель, который индексирует номера наблюдений данных.

Что-то вроде: dataframe[which(rstandard(model)>3), ]

1 голос
/ 11 декабря 2011

Существуют методы обнаружения выбросов, такие как LOF, Local Outlier Factor.Этот метод пытается обнаружить объекты, которые значительно отличаются от аналогичных объектов.Это выходит за рамки простых глобальных гистограмм.Таким образом, значение в 50000 долларов не может быть необычным во всем мире, но когда вы ищете похожие записи, либо возраст сильно отклоняется, либо баланс.Это то, что называется "локальным" выбросом.

Я не знаю, есть ли для него пакет R.Может быть, а может и нет.В зависимости от вашего варианта использования - поскольку возраст и баланс очень разные домены, наивная реализация с евклидовым расстоянием, вероятно, в любом случае не годится.Это очень настраиваемо - вы можете реализовать пользовательские функции расстояния, это объясняется в руководстве по функциям расстояния .И поскольку он использует структуры индекса, он довольно быстрый.Я не думаю, что есть хорошие структуры индекса данных для R.

...