Как узнать, соответствуют ли данные распределению Пуассона в R?


25

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

В моей Книге вероятностей (Вероятность и статистика с R) есть (не полный) пример того, как проверить, соответствуют ли данные распределению Пуассона, они начинают пытаться доказать, что эти 3 критерия соблюдаются: (Из моей книги, стр. 120 (критерии), стр. 122-123 пример)

1- Количество результатов в непересекающихся интервалах не зависит. Другими словами, количество результатов в интервале времени (0, t] не зависит от количества результатов в интервале времени (t, t + h], h> 0

2- Вероятность двух или более исходов в достаточно короткий интервал практически равна нулю. Другими словами, если h достаточно мало, вероятность получения двух или более результатов в интервале (t, t + h] незначительна по сравнению с вероятностью получения одного или нуля результатов в одном и том же интервале времени.

3- Вероятность ровно одного исхода в достаточно коротком интервале или небольшой области пропорциональна длине интервала или области. Другими словами, вероятность одного исхода в интервале длины h равна лямбда * h.

Но критерий 3 оставлен «как упражнение».

A- Может кто-нибудь сказать мне, есть ли более простой способ проверить, соответствует ли мой набор данных распределению Пуассона?

B- Может ли кто-нибудь объяснить мне критерий 1 и 3 на каком-то типе примера (если это с R, фантастика)?

Благодарность!

Примечание: извините за длинный пост. Кроме того, я должен преобразовать данные, чтобы у меня была такая таблица:

  number of hurricanes       | 0 | 1 | 2  etc.
  -----------------------------------------
  total years that have      |   |   |
  that number of hurricanes  |   |   |

Критерии в вашей книге для интервальных данных; это было бы полезно, если бы у вас были даты наступления ураганов ... более того, эти критерии относятся к пуассоновским процессам с постоянной скоростью , что явно (или я надеюсь на это) не относится к ураганам. Чтобы проверить, соответствуют ли ваши данные подсчета распределению Пуассона, первым элементарным подходом является критерий хи-квадрат.
Элвис

Ответы:


33

Существует бесконечное количество способов, чтобы распределение немного отличалось от распределения Пуассона; вы не можете определить , что набор данных будет взят из распределения Пуассона. Что вы можете сделать, так это искать несоответствие с тем, что вы должны видеть с Пуассоном, но отсутствие явного несоответствия не делает его Пуассоном.

Однако то, о чем вы говорите, проверяя эти три критерия, - это не проверка того, что данные поступают из распределения Пуассона статистическими средствами (т. Е. Путем просмотра данных), а оценка того, удовлетворяет ли процесс, сгенерированный данными, условия пуассоновского процесса; если бы все условия выполнялись или почти выполнялись (и это учитывает процесс генерирования данных), вы можете получить что-то из процесса Пуассона или очень близко к нему, что, в свою очередь, будет способом получения данных, извлеченных из чего-то, близкого к Распределение Пуассона.

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

Итак, мы вернулись к статистическим аргументам, которые приходят от изучения самих данных. Как данные показали бы, что распределение было Пуассоном, а не чем-то вроде этого?

Как уже упоминалось в начале, вы можете проверить, не являются ли данные явно несовместимыми с базовым дистрибутивом Пуассона, но это не говорит о том, что они взяты из пуассона (вы уже можете быть уверены, что они не).

Вы можете сделать эту проверку с помощью проверок соответствия.

Упомянутый хи-квадрат является одним из таких, но я бы не рекомендовал сам тест хи-квадрат для этой ситуации **; он имеет низкую мощность против интересных отклонений. Если ваша цель - иметь хорошую силу, вы не получите ее таким образом (если вас не волнует сила, зачем вам проверять?). Его главная ценность в простоте и имеет педагогическую ценность; кроме того, это неконкурентоспособно как проверка на пригодность.

** Добавлено позже: теперь, когда стало ясно, что это домашнее задание, шансы на то, что вы должны выполнить тест хи-квадрат, чтобы проверить, что данные не противоречат Пуассону, значительно возросли. Посмотрите мой пример теста пригодности хи-квадрат, выполненного ниже первого графика Пуассона


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

Если вам нужно проверить распределение Пуассона, есть несколько разумных альтернатив. Можно было бы сделать что-то похожее на тест Андерсона-Дарлинга, основанный на статистике AD, но использующий симулированное распределение при нулевом значении (чтобы учесть двойные проблемы дискретного распределения и то, что вы должны оценить параметры).

Более простой альтернативой может быть Гладкий тест на пригодность - это набор тестов, разработанных для индивидуальных распределений путем моделирования данных с использованием семейства полиномов, которые ортогональны относительно функции вероятности в нуле. Альтернативы низкого порядка (т. Е. Интересные) проверяются путем проверки, отличаются ли коэффициенты многочленов над базовым от нуля, и они обычно могут иметь дело с оценкой параметров, пропуская члены теста самого низкого порядка. Есть такой тест для Пуассона. Я могу выкопать ссылку, если вам это нужно.

N(1-р2)журнал(ИксК)+журнал(К!)К

Вот пример того вычисления (и графика), выполненного в R:

y=rpois(100,5)
n=length(y)
(x=table(y))
y
 0  1  2  3  4  5  6  7  8  9 10 
 1  2  7 15 19 25 14  7  5  1  4 

k=as.numeric(names(x))
plot(k,log(x)+lfactorial(k))

введите описание изображения здесь

Вот статистика, которую я предложил использовать для проверки пригодности Пуассона:

n*(1-cor(k,log(x)+lfactorial(k))^2)
[1] 1.0599

Конечно, чтобы вычислить p-значение, вам также необходимо смоделировать распределение тестовой статистики под нулевым значением (и я не обсуждал, как можно иметь дело с нулевым счетом в диапазоне значений). Это должно дать достаточно мощный тест. Есть множество других альтернативных тестов.

Вот пример построения графика Пуассона на выборке размером 50 из геометрического распределения (p = .3):

введите описание изображения здесь

Как видите, он отображает четкий «излом», указывая на нелинейность


Ссылки на сюжет Пуассона будут:

Дэвид С. Хоаглин (1980),
"Заговор Пуассона",
Американский Статистик
Vol. 34, № 3 (Aug.,), с. 146-149

а также

Хоаглин, Д. и Дж. Тьюки (1985),
«9. Проверка формы дискретных распределений»,
изучение таблиц данных, тенденций и форм ,
(Hoaglin, Mosteller & Tukey eds)
John Wiley & Sons

Вторая ссылка содержит корректировку графика для небольших подсчетов; Вы вероятно хотели бы включить это (но у меня нет ссылки на руку).


Пример выполнения критерия соответствия хи-квадрат:

Помимо выполнения хи-квадратной подгонки, то, как обычно ожидается, что это будет сделано во многих классах (хотя не так, как я бы это делал):

1: начиная с ваших данных (которые я буду считать данными, которые я случайно сгенерировал в 'y' выше, сгенерируем таблицу подсчетов:

(x=table(y))
y
 0  1  2  3  4  5  6  7  8  9 10 
 1  2  7 15 19 25 14  7  5  1  4 

2: вычислить ожидаемое значение в каждой ячейке, предполагая, что Пуассон соответствует ML:

 (expec=dpois(0:10,lambda=mean(y))*length(y))
 [1]  0.7907054  3.8270142  9.2613743 14.9416838 18.0794374 17.5008954 14.1173890  9.7611661
 [9]  5.9055055  3.1758496  1.5371112

3: обратите внимание, что конечные категории малы; это делает распределение хи-квадрат менее подходящим как приближение к распределению статистики теста (общее правило - вы хотите, чтобы ожидаемые значения были не менее 5, хотя многочисленные статьи показали, что это правило неоправданно ограничительно; я возьму его близко, но общий подход может быть адаптирован к более строгому правилу). Сверните смежные категории, чтобы минимальные ожидаемые значения были, по крайней мере, не намного ниже 5 (одна категория с ожидаемым обратным отсчетом около 1 из более чем 10 категорий не так уж плоха, две довольно граничат). Также обратите внимание, что мы еще не учли вероятность выше «10», поэтому нам также необходимо учесть это:

expec[1]=sum(expec[1:2])
expec[2:8]=expec[3:9]
expec[9]=length(y)-sum(expec[1:8])
expec=expec[1:9]
expec
sum(expec) # now adds to n

4: аналогично, коллапс категорий по наблюдаемому:

(obs=table(y))
obs[1]=sum(obs[1:2])
obs[2:8]=obs[3:9]
obs[9]=sum(obs[10:11])
obs=obs[1:9]

(Оя-Ея)2/Ея

print(cbind(obs,expec,PearsonRes=(obs-expec)/sqrt(expec),ContribToChisq=(obs-expec)^2/expec),d=4)
  obs  expec PearsonRes ContribToChisq
0   3  4.618   -0.75282      0.5667335
1   7  9.261   -0.74308      0.5521657
2  15 14.942    0.01509      0.0002276
3  19 18.079    0.21650      0.0468729
4  25 17.501    1.79258      3.2133538
5  14 14.117   -0.03124      0.0009761
6   7  9.761   -0.88377      0.7810581
7   5  5.906   -0.37262      0.1388434
8   5  5.815   -0.33791      0.1141816

Икс2знак равноΣя(Ея-Оя)2/Ея

(chisq = sum((obs-expec)^2/expec))
[1] 5.414413
(df = length(obs)-1-1) # lose an additional df for parameter estimate
[1] 7
(pvalue=pchisq(chisq,df))
[1] 0.3904736

И диагностика, и значение p не показывают здесь недостатка соответствия ... что мы и ожидали, поскольку сгенерированные нами данные на самом деле были пуассоновскими.


Изменить: вот ссылка на блог Рика Уиклина, который обсуждает сюжет Пуассона и рассказывает о реализации в SAS и Matlab

http://blogs.sas.com/content/iml/2012/04/12/the-poissonness-plot-a-goodness-of-fit-diagnostic/


Edit2: Если я правильно понял, измененный график Пуассона из ссылки 1985 года был бы *:

y=rpois(100,5)
n=length(y)
(x=table(y))
k=as.numeric(names(x))
x=as.vector(x)
x1 = ifelse(x==0,NA,ifelse(x>1,x-.8*x/n-.67,exp(-1)))
plot(k,log(x1)+lfactorial(k))

* Они на самом деле также корректируют перехват, но я не сделал этого здесь; это не влияет на внешний вид графика, но вы должны позаботиться о том, чтобы реализовать что-либо из ссылки (например, доверительные интервалы), если вы делаете это совсем не так, как их подход.

(Для приведенного выше примера внешний вид практически не отличается от первого графика Пуассона.)


2
Спасибо за ответ! Но я должен сказать, что не знаю ни одной темы, о которой вы говорите. Мне было интересно, если QQplot станет горстка для этого. Что вы думаете? Из альтернатив, которые вы предлагаете, вы думаете, что я должен использовать? благо подходит? Где я могу найти информацию и / или тесты, о которых вы говорите? (из гладкого теста на соответствие божественности) Кроме того, вы знали, есть ли у кого-нибудь код R для кода блога? (Я не знаю, Matlab или SAS). И большое спасибо за ваш ответ!
Шариф

Кроме того, какой дистрибутив вы считаете, что мои данные могут "соответствовать"? (не часть моей домашней работы, но будет приятно узнать :))
Shariff

Как бы вы сгенерировали QQplot для Пуассона, не принимая параметр? (Я полагаю, что вы можете работать с преобразованием Пуассона, если параметр не слишком мал. Или вы можете использовать MLE для неизвестного параметра, но тогда график будет выглядеть «лучше», чем в противном случае - вам нужно настроить суждение, когда вы это делаете). Заговор Пуассона предназначен для действия чего-то вроде QQplot и должен интерпретироваться несколько аналогично. Если вам нужна диагностическая оценка, я бы предложил этот график (желательно с упомянутыми корректировками, если кто-либо из нас сможет их найти).
Glen_b

Я не могу сказать, какие данные распределения, которые я не видел, могли бы соответствовать - но если их не много, многие распределения могли бы создать эти данные.
Glen_b

ну, может быть, я могу использовать оценочную лямбду наблюдаемых значений для данных для QQplot, но я читаю немного и похоже, что QQplots лучше для непрерывных данных (не очень хорошо для дискретных данных). Вы можете перевести код? Это будет действительно оценено! Дайте мне знать, если у вас есть код! (Конечно, я дам вам кредит за код :))
Shariff

5

Выполните тест на пригодность по критерию хи-квадрат. В случае подсчета данных мы можем использовать goodfit()включенный в пакет vcd. Обратите внимание, что если значение p больше 0,05, мы не можем отклонить h0: процесс является пуассоновским процессом. Или иначе, это не процесс Пуассона.

# load the vcd package
library(vcd) ## loading vcd package

# generate two processes for test
set.seed(2014);y=rpois(200,5)
set.seed(2014);y=rnorm(100, 5, 0.3) # goodfit asks for non-negative values
# output the results
gf = goodfit(y,type= "poisson",method= "ML")
plot(gf,main="Count data vs Poisson distribution")
summary(gf)

# to automatically get the pvalue
gf.summary = capture.output(summary(gf))[[5]]
pvalue = unlist(strsplit(gf.summary, split = " "))
pvalue = as.numeric(pvalue[length(pvalue)]); pvalue

# to mannualy compute the pvalue
chisq = sum(  (gf$observed-gf$fitted)^2/gf$fitted )

df = length(gf$observed)-1-1
pvalue = pchisq(chisq,df)
pvalue

3
Анонимный пользователь разместил следующий комментарий (как попытку редактирования): « pchisqрассчитывает только совокупную вероятность (п(ИксИкс)) в то время как значение р п(ИксИкс)" pvalue=1-pchisq(chisq,df);; &" Результат, когда вы вычисляете значение p вручную, отличается от значения p, которое предоставляет функция goodfit. Я не знаю, почему это так.
Ганг - Восстановить Монику
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.