Обнаружение выбросов в нулевых завышенных и сверхдисперсных данных подсчета

Заранее хочу поблагодарить вас за рассмотрение моей проблемы.

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

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

counts1=[1 1 1 0 2 1 1 0 0 1 1 1 1 1 0 0 0 0 1 2 1 1 2 1 1 1 1 0 0 1 0 1 1 1 1 0 0 0 0 0 1 2 1 1 1 1 1 1 0 1 1 2 0 0 0 1 0 1 2 1 1 0 2 1 1 1 0 0 1 0 0 0 2 0 1 1 0 2 1 0 1 1 0 0 2 1 0 1 1 1 1 2 0 3]

counts2=[0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0]

counts3=[14 13 14 14 14 14 13 14 14 14 14 14 15 14 14 14 14 14 14 15 14 13 14 14 15 12 13 17 13 14 14 14 14 15 14 14 13 14 13 14 14 14 14 13 14 14 14 15 15 14 14 14 14 14 15 14 1414 14 15 14 14 14 14 14 14 14 14 14 14 14 14 13 16]

counts4=[0 3 1.......]

и так далее до 3500 отсчетов.

Первоначально я думал, что мне нужно написать цикл на Python или R, который будет применять набор моделей к каждому распределению и выбирать наиболее подходящую модель в соответствии с AIC или другим (может быть, fitdistrplus в R?). Затем я мог бы спросить, каковы были крайности для данного распределения (счетчики, которые попадают в хвост, например, будет ли счет «4» выбросом в распределении counts1 выше?). Однако я не уверен, что это действенная стратегия, и мне пришло в голову, что может существовать простая методология определения выбросов в данных подсчета, о которой я не знал. Я тщательно искал и не нашел ничего подходящего для моей проблемы, учитывая количество дистрибутивов, которые я хочу посмотреть.

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

Еще раз спасибо за ваше время.


person Joe Gomphus    schedule 17.04.2013    source источник
comment
это может быть вопрос stats.stackexchange.com ...   -  person Ben Bolker    schedule 17.04.2013
comment
Я согласен, но на stats.stackexchange удивительно не хватает информации о данных подсчета, и я часто нахожу, что проблемы со статистикой (или другими), требующие программных решений (на языке, который я использую, например R или python), часто лучше решаются подкованными программисты (работающие на R или python). Я мог ошибаться в этом, но ни в одном из этих мест, похоже, не было опубликовано хорошее решение, поэтому я подумал, что начну с форума, который может предоставить как решение для статистики, так и решение для программирования одним махом. Благодарность   -  person Joe Gomphus    schedule 17.04.2013


Ответы (1)


Пакет outliers имеет хорошие возможности для этого типа тестирования.

library(outliers)

x <- c(rep(c(0,1),1000),3)
chisq.test.out(x)

    chi-squared test for outlier

data:  x
X-squared = 24.6668, p-value = 6.815e-07
alternative hypothesis: highest value 3 is an outlier

> system.time(rep(chisq.out.test(x),3500))
   user  system elapsed 
  0.004   0.000   0.002 
person Brandon Bertelsen    schedule 17.04.2013
comment
Спасибо, но если я не ошибаюсь, все тесты в этом пакете предполагают нормальность, что является проблемой. Меня больше интересует обнаружение выбросов с помощью дистрибутивов ZIP или ZINB и т. Д. Спасибо - person Joe Gomphus; 20.04.2013
comment
x ^ 2 не является параметрическим. Таким образом, менее мощный, но все же считается надежным. Я не часто работаю с ZIP или ZINB, поэтому рекомендую спросить в резюме. - person Brandon Bertelsen; 20.04.2013