Критерий Пирсеса - Википедия - Peirces criterion
В надежная статистика, Критерий Пирса это правило для устранения выбросы из наборов данных, которые были разработаны Бенджамин Пирс.
Выбросы, удаленные по критерию Пирса
Проблема выбросов
В наборы данных содержащие измерения с действительными числами, подозреваемые выбросы являются измеренными значениями, которые, по-видимому, лежат вне кластера большинства других значений данных. Выбросы сильно изменили бы оценку местоположения, если бы среднее арифметическое значение использовалось в качестве сводной статистики местоположения. Проблема в том, что среднее арифметическое очень чувствительно к включению любых выбросов; в статистической терминологии среднее арифметическое не крепкий.
При наличии выбросов у статистика есть два варианта. Во-первых, статистик может удалить подозреваемые выбросы из набора данных, а затем использовать среднее арифметическое для оценки параметра местоположения. Во-вторых, статистик может использовать надежную статистику, такую как медиана статистика.
Критерий Пирса - это статистическая процедура исключения выбросов.
Использование критерия Пирса
Статистик и историк статистики Стивен М. Стиглер написал следующее о Бенджамин Пирс:[1]
"В 1852 г. он опубликовал первый тест значимости предназначен для того, чтобы сообщить исследователю, следует ли отвергать выброс (Peirce 1852, 1878). Тест, основанный на отношение правдоподобия тип аргумента, отличался тем, что вызвал международную дискуссию о целесообразности таких действий (Анскомб, 1960, Всадник, 1933, Стиглер, 1973а) ".
Критерий Пирса выводится на основе статистического анализа Гауссово распределение. В отличие от некоторых других критериев удаления выбросов, метод Пирса может применяться для выявления двух или более выбросов.
"Предлагается определить в серии наблюдения - предел погрешности, за которым все наблюдения, содержащие такую большую ошибку, могут быть отклонены, при условии, что их столько, сколько такие наблюдения. Принцип, на основе которого предлагается решить эту проблему, состоит в том, что предлагаемые наблюдения должны быть отклонены, когда вероятность системы ошибок, полученная путем их сохранения, меньше, чем вероятность системы ошибок, полученная путем их отклонения, умноженная на вероятность делать так много и не более аномальных наблюдений ".[2]
Хокинс[3] дает формулу критерия.
Критерий Пирса десятилетиями использовался на Обследование побережья США.[4]
"С 1852 по 1867 год он служил директором по определению долготы в Службе береговой службы США, а с 1867 по 1874 год в качестве руководителя службы исследования. В течение этих лет его тест постоянно применялся всеми клерками этой службы, наиболее активными и математически склонная статистическая организация эпохи ".[1]
Критерий Пирса обсуждался в Уильям Шовене книга.[2]
Приложения
Применение критерия Пирса заключается в удалении плохих точек данных из пар наблюдений, чтобы выполнить регрессию между двумя наблюдениями (например, линейную регрессию). Критерий Пирса не зависит от данных наблюдений (только характеристики данных наблюдений), что делает его очень повторяемым процессом, который может быть вычислен независимо от других процессов. Эта особенность делает критерий Пирса для выявления выбросов идеальным для компьютерных приложений, поскольку он может быть записан как функция вызова.
Предыдущие попытки
В 1855 г. Б. А. Гулд попытался упростить применение критерия Пирса, создав таблицы значений, представляющих значения из уравнений Пирса.[5] По-прежнему существует разрыв между алгоритмом Гулда и практическим применением критерия Пирса.
В 2003 году С. М. Росс (Университет Нью-Хейвена) повторно представил алгоритм Гулда (теперь называемый «методом Пирса») с новым набором данных в качестве примера и отработкой алгоритма. Эта методология по-прежнему основывается на использовании справочных таблиц, которые были обновлены в этой работе (таблица критериев Пирса).[6]
В 2008 году попытку написать псевдокод предпринял датский геолог К. Томсен.[7] Хотя этот код обеспечивал некоторую основу для алгоритма Гулда, пользователям не удавалось вычислить значения, сообщенные Пирсом или Гулдом.
В 2012 году К. Дардис выпустил R-пакет «Пирс» с различными методологиями (критерий Пирса и метод Шовене) для сравнения удалений выбросов. Дардис и его коллега Саймон Мюллер успешно реализовали псевдокод Томсена в функции под названием «findx». Код представлен в разделе реализации R ниже. Ссылки на пакет R доступны в Интернете[8] а также неопубликованный обзор результатов пакета R.[9]
В 2013 году пересмотр алгоритма Гулда и использование расширенных программных модулей Python (например, numpy и scipy) позволили вычислить пороговые значения квадратов ошибок для выявления выбросов.
Реализация Python
Чтобы использовать критерий Пирса, нужно сначала понять входные и возвращаемые значения. Регрессионный анализ (или подгонка кривых к данным) приводит к остаточным ошибкам (или разнице между подобранной кривой и точками наблюдения). Следовательно, каждая точка наблюдения имеет остаточную ошибку, связанную с подобранной кривой. Если возвести в квадрат (то есть остаточную ошибку, возведенную в степень двойки), остаточные ошибки выражаются как положительные значения. Если квадрат ошибки слишком велик (т.е. из-за плохого наблюдения), это может вызвать проблемы с параметрами регрессии (например, наклоном и пересечением для линейной кривой), полученными при подборе кривой.
Идея Пирса заключалась в том, чтобы статистически определить, что составляет ошибку, как «слишком большую» и, следовательно, идентифицировать как «выброс», который можно удалить из наблюдений, чтобы улучшить соответствие между наблюдениями и кривой. К. Томсен определил, что для выполнения расчета необходимы три параметра: количество пар наблюдений (N), количество выбросов, которые необходимо удалить (n), и количество параметров регрессии (например, коэффициентов), используемых в кривой: фитинг для получения остатков (м). Конечным результатом этого процесса является вычисление порогового значения (квадратичной ошибки), при этом наблюдения с квадратом ошибки меньше этого порога должны сохраняться, а наблюдения с квадратом ошибки больше этого значения должны быть удалены (т. Е. Как выброс) .
Поскольку критерий Пирса не принимает в качестве входных данных наблюдения, параметры подгонки или остаточные ошибки, выходные данные необходимо повторно связать с данными. Если взять среднее значение всех квадратов ошибок (т. Е. Среднеквадратичную ошибку) и умножить его на пороговую ошибку квадрата (т. Е. Результат этой функции), то получится пороговое значение для конкретных данных, используемое для выявления выбросов.
Следующий код Python возвращает значения x в квадрате для заданного N (первый столбец) и n (верхняя строка) в таблице 1 (m = 1) и таблице 2 (m = 2) из Gould 1855.[5] Из-за итерационного метода Ньютона справочные таблицы, такие как N по сравнению с log Q (таблица III в Gould, 1855) и x по сравнению с log R (таблица III у Пирса, 1852 г. и таблица IV в Gould, 1855), не являются дольше необходимо.
Код Python
#! / usr / bin / env python3импорт тупойимпорт scipy.specialdef peirce_dev(N: int, п: int, м: int) -> плавать: "" "Критерий Пирса Возвращает квадрат отклонения пороговой ошибки для идентификации выбросов. с использованием критерия Пирса, основанного на методологии Гулда. Аргументы: - int, общее количество наблюдений (N) - int, количество выбросов, которые нужно удалить (n) - int, количество неизвестных моделей (м) Возврат: float, квадрат порога ошибки (x2) """ # Присваиваем входным переменным числа с плавающей запятой: N = плавать(N) п = плавать(п) м = плавать(м) # Проверить количество наблюдений: если N > 1: # Вычислить Q (корень N-й степени из уравнения Гулда B): Q = (п ** (п / N) * (N - п) ** ((N - п) / N)) / N # # Инициализировать значения R (как числа с плавающей точкой) r_new = 1.0 r_old = 0.0 # <- Необходимо запрашивать цикл while # # Начать итерацию, чтобы сойтись на R: пока пресс(r_new - r_old) > (N * 2.0e-16): # Вычислить Ламду # (1 / (N-n) -й корень уравнения Гулда A '): ldiv = r_new ** п если ldiv == 0: ldiv = 1.0e-6 Ламда = ((Q ** N) / (ldiv)) ** (1.0 / (N - п)) # Вычислить x-квадрат (уравнение Гулда C): x2 = 1.0 + (N - м - п) / п * (1.0 - Ламда ** 2.0) # Если x2 становится отрицательным, возвращаем 0: если x2 < 0: x2 = 0.0 r_old = r_new еще: # Используйте x-квадрат для обновления R (уравнение Гулда D): r_old = r_new r_new = тупой.exp((x2 - 1) / 2.0) * странный.специальный.erfc( тупой.sqrt(x2) / тупой.sqrt(2.0) ) еще: x2 = 0.0 возвращаться x2
Код Java
импорт org.apache.commons.math3.special.Erf;общественный учебный класс PierceCriterion { /** * Критерий Пирса * * Возвращает квадрат отклонения пороговой ошибки для идентификации выбросов. * с использованием критерия Пирса, основанного на методологии Гулда. * * Аргументы: * - int, общее количество наблюдений (N) * - int, количество удаляемых выбросов (n) * - int, количество неизвестных моделей (м) * Возврат: * float, квадрат порога ошибки (x2) **/ общественный статический окончательный двойной peirce_dev(двойной N, двойной п, двойной м) { // Проверяем количество наблюдений: двойной x2 = 0.0; если (N > 1) { // Вычислить Q (корень N-й степени уравнения Гулда B): двойной Q = (Математика.пау(п, (п / N)) * Математика.пау((N - п), ((N - п) / N))) / N; // Инициализируем значения R (как числа с плавающей запятой) двойной r_new = 1.0; двойной r_old = 0.0; // <-Необходимо запрашивать цикл while // Начинаем итерацию, чтобы сойтись на R: пока (Математика.пресс(r_new - r_old) > (N * 2.0e-16)) { // Вычислить Ламду // (1 / (N - n) -й корень уравнения Гулда A '): двойной ldiv = Математика.пау(r_new, п); если (ldiv == 0) { ldiv = 1.0e-6; } двойной Ламда = Математика.пау((Математика.пау(Q, N) / (ldiv)), (1.0 / (N - п))); // Вычислить x-квадрат (уравнение Гулда C): x2 = 1.0 + (N - м - п) / п * (1.0 - Математика.пау(Ламда, 2.0)); // Если x2 становится отрицательным, возвращаем 0: если (x2 < 0) { x2 = 0.0; r_old = r_new; } еще { // Используйте x -squared для обновления R (уравнение Гулда D): r_old = r_new; r_new = Математика.exp((x2 - 1) / 2.0) * Эрф.erfc(Математика.sqrt(x2) / Математика.sqrt(2.0)); } } } еще { x2 = 0.0; } возвращаться x2; }}
Реализация R
Код Томсена был успешно записан в следующий вызов функции "findx" К. Дардисом и С. Мюллером в 2012 году, который возвращает максимальное отклонение ошибки, . В дополнение к коду Python, представленному в предыдущем разделе, здесь также представлен R-эквивалент "peirce_dev", который возвращает возведенное в квадрат максимальное отклонение ошибки, . Эти две функции возвращают эквивалентные значения либо возведением в квадрат возвращаемого значения из функции «findx», либо путем извлечения квадратного корня из значения, возвращаемого функцией «peirce_dev». Различия возникают при обработке ошибок. Например, функция findx возвращает NaN для недопустимых данных, в то время как peirce_dev возвращает 0 (что позволяет продолжать вычисления без дополнительной обработки значения NA). Кроме того, функция «findx» не поддерживает обработку ошибок, когда количество потенциальных выбросов увеличивается по мере приближения к количеству наблюдений (выдает ошибку отсутствия значения и предупреждение NaN).
Как и в случае с версией Python, квадрат ошибки (т. Е. ), возвращаемый функцией peirce_dev, необходимо умножить на среднеквадратичную ошибку подгонки модели, чтобы получить значение квадрата дельты (т. е. Δ2). Используйте Δ2, чтобы сравнить значения квадратичной ошибки соответствия модели. Любые пары наблюдений с квадратом ошибки больше Δ2 считаются выбросами и могут быть удалены из модели. Итератор должен быть написан для проверки возрастающих значений n до тех пор, пока количество выявленных выбросов (сравнение Δ2 с квадратичными ошибками соответствия модели) не станет меньше, чем предполагаемое (т. Е. N Пирса).
Код R
findx <- функция(N, k, м) { # метод К. Томсена (2008) # написано К. Дардисом и С. Мюллером (2012) # Доступно в Интернете: https://r-forge.r-project.org/R/?group_id=1473 # # Определения переменных: # N :: количество наблюдений # k :: количество потенциальных выбросов, которые необходимо удалить # m :: количество неизвестных величин # # Требуется дополнительная функция ошибок, erfc: erfc <- функция(Икс) 2 * пнорм(Икс * sqrt(2), нижний. хвост = ЛОЖНЫЙ) # Икс <- 1 если ((N - м - k) <= 0) { возвращаться(NaN) Распечатать(NaN) } еще { Икс <- мин(Икс, sqrt((N - м)/k) - 1e-10) # # Журнал уравнения Гулда B: LnQN <- k * бревно(k) + (N - k) * бревно(N - k) - N * бревно(N) # # Уравнение Гулда D: R1 <- exp((х ^ 2 - 1)/2) * erfc(Икс/sqrt(2)) # # Уравнение Гулда A 'решено для R с заменой лямбда: R2 <- exp( (LnQN - 0.5 * (N - k) * бревно((N-м-k*х ^ 2)/(N-м-k)) )/k ) # # Приравняйте два уравнения R: R1d <- Икс * R1 - sqrt(2/число Пи/exp(1)) R2d <- Икс * (N - k)/(N - м - k * х ^ 2) * R2 # # Обновить x: oldx <- Икс Икс <- oldx - (R1 - R2)/(R1d - R2d) # # Цикл до схождения: пока (пресс(Икс - oldx) >= N * 2e-16) { R1 <- exp((х ^ 2 - 1)/2) * erfc(Икс/sqrt(2)) R2 <- exp( (LnQN - 0.5 * (N - k) * бревно((N-м-k*х ^ 2)/(N-м-k)) )/k ) R1d <- Икс * R1 - sqrt(2/число Пи/exp(1)) R2d <- Икс * (N - k)/(N - м - k * х ^ 2) * R2 oldx <- Икс Икс <- oldx - (R1 - R2)/(R1d - R2d) } } возвращаться(Икс)}
peirce_dev <- функция(N, п, м) { # N :: общее количество наблюдений # n :: количество выбросов, которые нужно удалить # m :: количество неизвестных моделей (например, параметров регрессии) # # Проверить количество наблюдений: если (N > 1) { # Вычислить Q (корень N-й степени из уравнения Гулда B): Q = (п^(п/N) * (N-п)^((N-п)/N))/N # # Инициализировать значения R: Rnew = 1.0 Rold = 0.0 # <- Необходимо запрашивать цикл while # пока (пресс(Rnew-Rold) > (N*2.0e-16)) { # Вычислить Lamda (корень 1 / (N-n) -й степени из уравнения Гулда A '): ldiv = Rновый ^ n если (ldiv == 0) { ldiv = 1.0e-6 } Ламда = ((Q ^ N)/(ldiv))^(1.0/(N-п)) # # Вычислить x-квадрат (уравнение Гулда C): x2 = 1.0 + (N-м-п)/п * (1.0-Ламда ^ 2.0) # # Если x2 становится отрицательным, установить равным нулю: если (x2 < 0) { x2 = 0 Rold = Rnew } еще { # # Используйте x-квадрат для обновления R (уравнение Гулда D): # ПРИМЕЧАНИЕ: функция ошибки (erfc) заменяется на pnorm (Rbasic): # источник: # http://stat.ethz.ch/R-manual/R-patched/library/stats/html/Normal.html Rold = Rnew Rnew = exp((x2-1)/2.0)*(2*пнорм(sqrt(x2)/sqrt(2)*sqrt(2), ниже=ЛОЖНЫЙ)) } } } еще { x2 = 0 } x2}
Примечания
- ^ а б С.М. Стиглер, "Математическая статистика в ранних государствах", Анналы статистики, т. 6, вып. 2, стр. 246, 1978 г. Доступно онлайн: https://www.jstor.org/stable/2958876
- ^ а б Цитируется в редакционной заметке на странице 516 Собрание сочинений Пирса (издание 1982 г.). Цитата цитирует Руководство по астрономии (2: 558) Шовене.
- ^ D.M. Хокинс (1980). «Краткая ранняя история отклонения выбросов», «Идентификация выбросов» (монографии по прикладной вероятности и статистике). Чепмен и Холл, стр. 10.
- ^ Пирс (1878)
- ^ а б Гоулд, Б.А., «О критерии Пирса для отклонения сомнительных наблюдений с таблицами для облегчения его применения», Астрономический журнал, выпуск 83, т. 4, вып. 11. С. 81–87, 1855. DOI: 10.1086 / 100480.
- ^ Росс, С.М., «Критерий Пирса для исключения подозрительных экспериментальных данных», Журнал инженерных технологий, т. 2, вып. 2. С. 1–12, 2003.
- ^ Томсен, К., «Тема: Вычислительные таблицы для использования с критерием Пирса - в 1855 и 2008 годах», The Math Forum @ Drexel, опубликовано 5 октября 2008 г. По состоянию на 15 июля 2013 г.
- ^ К. Дардис, "Пакет: Пирс", R-forge, доступ в Интернете: https://r-forge.r-project.org/scm/viewvc.php/*checkout*/pkg/Peirce/Peirce-manual.pdf?root=peirce
- ^ К. Дардис, «Критерий Пирса для отклонения ненормальных выбросов; определение диапазона применимости», Journal of Statistical Software (неопубликованный). Доступно онлайн: https://r-forge.r-project.org/scm/viewvc.php/*checkout*/pkg/Peirce/PeirceSub.pdf?root=peirce
Рекомендации
- Пирс, Бенджамин, «Критерий отклонения сомнительных наблюдений», Астрономический журнал II 45 (1852 г.) и Исправление к исходной бумаге.
- Пирс, Бенджамин (Май 1877 - май 1878). «По критерию Пирса». Труды Американская академия искусств и наук. 13: 348–351. Дои:10.2307/25138498. JSTOR 25138498.
- Пирс, Чарльз Сандерс (1870 г.) [опубликовано в 1873 г.]. «Приложение №21. К теории ошибок наблюдения». Отчет суперинтенданта Соединенных Штатов Обследование побережья Отображение прогресса исследования в течение 1870 года: 200–224.. NOAA PDF Eprint (см. Отчет на стр. 200, PDF-файлы на стр. 215). Годовые отчеты береговой и геодезической службы США ссылки за 1837–1965 гг..
- Пирс, Чарльз Сандерс (1982). «К теории ошибок наблюдения». In Kloesel, Christian J. W .; и другие. (ред.). Произведения Чарльза С. Пирса: хронологическое издание. Том 3, 1872–1878 гг. Блумингтон, Индиана: Издательство Индианского университета. стр.140–160. ISBN 0-253-37201-1.
- Росс, Стивен, «Критерий Пирса для исключения подозрительных экспериментальных данных», J. Engr. Технологии, т. 20 номер 2, осень 2003 г. [1][постоянная мертвая ссылка ]
- Стиглер, Стивен М. (Март 1978 г.). «Математическая статистика в ранних государствах». Анналы статистики. 6 (2): 239–265. Дои:10.1214 / aos / 1176344123. JSTOR 2958876. МИСТЕР 0483118.
- Стиглер, Стивен М. (1980). «Математическая статистика в ранних государствах». В Стивен М. Стиглер (ред.). Американский вклад в математическую статистику в девятнадцатом веке, тома I и II. я. Нью-Йорк: Арно Пресс.
- Стиглер, Стивен М. (1989). «Математическая статистика в ранних государствах». В Питере Дюрене (ред.). Век математики в Америке. III. Провиденс, Род-Айленд: Американское математическое общество. С. 537–564.
- Хокинс, Д. (1980). Выявление выбросов. Чепмен и Холл, Лондон. ISBN 0-412-21900-X
- Шовене, В. (1876) Руководство по сферической и практической астрономии. Дж. Б. Липпинкотт, Филадельфия. (оттиски различных изданий: Dover, 1960; Peter Smith Pub, 2000, ISBN 0-8446-1845-4; Адамант Медиа Корпорация (2 тома), 2001, ISBN 1-4021-7283-4, ISBN 1-4212-7259-8; BiblioBazaar, 2009, г. ISBN 1-103-92942-9 )