Jak mogę sprawdzić, czy dane próbki są pobierane z rozkładu Poissona?

Odpowiedzi:

18

Przede wszystkim moja rada jest taka, że ​​musisz powstrzymać się od wypróbowania rozkładu Poissona, tak jak w przypadku danych. Sugeruję, aby najpierw stworzyć teorię, dlaczego rozkład Poissona powinien pasować do określonego zestawu danych lub zjawiska.

Po ustaleniu tego następnym pytaniem jest, czy rozkład jest jednorodny, czy nie. Oznacza to, czy wszystkie części danych są obsługiwane przez ten sam rozkład Poissona, czy też istnieje w tym zmiana w zależności od jakiegoś aspektu, takiego jak czas lub przestrzeń. Po przekonaniu się o tych aspektach wypróbuj następujące trzy testy:

  1. test współczynnika wiarygodności przy użyciu zmiennej chi kwadrat
  2. wykorzystanie warunkowej statystyki chi-kwadrat; zwany także testem dyspersji Poissona lub testem wariancji
  3. wykorzystanie statystyki Neymana-Scotta, opartej na transformacji stabilizującej wariancję zmiennej Poissona

wyszukaj je, a znajdziesz je łatwo w sieci.

htrahdis
źródło
3
„czy dystrybucja jest jednorodna, czy nie ... Po przekonaniu się o tych aspektach” Czy mógłbyś coś skomentować, jak to ustalić?
oznacza znaczy
13

Oto sekwencja poleceń R, które mogą być pomocne. Jeśli zauważysz jakieś błędy, możesz je komentować lub edytować.

set.seed(1)
x.poi<-rpois(n=200,lambda=2.5) # a vector of random variables from the Poisson distr.

hist(x.poi,main="Poisson distribution")

lambda.est <- mean(x.poi) ## estimate of parameter lambda
(tab.os<-table(x.poi)) ## table with empirical frequencies


freq.os<-vector()
for(i in 1: length(tab.os)) freq.os[i]<-tab.os[[i]]  ## vector of emprical frequencies

freq.ex<-(dpois(0:max(x.poi),lambda=lambda.est)*200) ## vector of fitted (expected) frequencies

acc <- mean(abs(freq.os-trunc(freq.ex))) ## absolute goodness of fit index acc
acc/mean(freq.os)*100 ## relative (percent) goodness of fit index

h <- hist(x.poi ,breaks=length(tab.os))
xhist <- c(min(h$breaks),h$breaks)
yhist <- c(0,h$density,0)
xfit <- min(x.poi):max(x.poi)
yfit <- dpois(xfit,lambda=lambda.est)
plot(xhist,yhist,type="s",ylim=c(0,max(yhist,yfit)), main="Poison density and histogram")
lines(xfit,yfit, col="red")

#Perform the chi-square goodness of fit test 
#In case of count data we can use goodfit() included in vcd package
library(vcd) ## loading vcd package
gf <- goodfit(x.poi,type= "poisson",method= "MinChisq")
summary(gf)
plot(gf,main="Count data vs Poisson distribution")
George Dontas
źródło
3
Ta linia: freq.ex <- (dpois (0: max (x.poi), lambda = lambda.est) * 200) powoduje błędy z niektórymi danymi ze świata rzeczywistego, ponieważ długość freq.ex nie będzie pasować do freq. obs w tej linii acc <- mean (abs (freq.os-trunc (freq.ex))). Dostosowałem tę linię do freq.ex <- (dpois (seq (0, max (x.poi))) [seq (0: max (x.poi))% w% x.poi], lambda = lambda.est) * 200), ale coś nadal nie jest w porządku, ponieważ goodfit wyświetla ostrzeżenia.
russellpierce
Za pomocą twojego kodu otrzymuję indeks dobroci dopasowania 121. Ale to względny, prawda? Więc powinno być pomiędzy 0 a 100, prawda?
MERose
5

Możesz użyć dyspersji (stosunku wariancji do średniej) jako statystyki testowej, ponieważ Poisson powinien dać dyspersję 1. Oto link do tego, jak używać go jako testu modelowego.

Eric Suh
źródło
+1 dziękuję. często otrzymuję wyniki „zużyte”, na przykład rozkład normalny otrzymuje wyższą wartość p niż wartość poissona, gdzie lambda jest stosunkowo mała (więc z wyglądu tylko normalna i poissona wcale nie są podobne)
David B
6
404 NIE ZNALEZIONO!!
Rodrigo
5

Dla rozkładu Poissona średnia równa się wariancji. Jeśli średnia próbki jest bardzo różna od wariancji próbki, prawdopodobnie nie masz danych Poissona. Wspomniany tutaj również test dyspersji jest formalizacją tego pojęcia.

Jeśli Twoja wariancja jest znacznie większa niż średnia, jak to zwykle bywa, możesz spróbować wypróbować ujemny rozkład dwumianowy.

John D. Cook
źródło
5
A więc jeśli średnia jest taka sama jak wariancja, czy możesz dojść do wniosku, że dane to Poisson? Prawie wcale!
PeterR
Prawdziwe. Konieczne, ale niewystarczające.
John D. Cook
2

Możesz narysować pojedynczą cyfrę, na której obserwowane i oczekiwane częstotliwości są rysowane obok siebie. Jeśli rozkłady są bardzo różne i masz również współczynnik wariancji-średni większy niż jeden, dobrym kandydatem jest ujemny dwumian. Przeczytaj sekcję Rozkłady częstotliwości od The R Book. Zajmuje się bardzo podobnym problemem.

Brani
źródło
1

Myślę, że głównym punktem jest to, co podnosi sidmaestro ... czy konfiguracja eksperymentalna lub mechanizm generowania danych obsługuje założenie, że dane mogą pochodzić z rozkładu Poissona.

Nie jestem wielkim fanem testowania założeń dystrybucyjnych, ponieważ testy te zwykle nie są zbyt przydatne. Bardziej użyteczne wydaje mi się przyjęcie założeń dystrybucyjnych lub modelowych, które są elastyczne i dość odporne na odchylenia od modelu, zwykle do celów wnioskowania. Z mojego doświadczenia wynika, że ​​obserwowanie średniej = wariancji nie jest tak częste, więc często negatywny model dwumianowy wydaje się bardziej odpowiedni i obejmuje Poissona jako szczególny przypadek.

Kolejną kwestią, która jest ważna w testowaniu dystrybucji, jeśli tego właśnie chcesz, jest upewnienie się, że nie ma w tym żadnych warstw, które sprawiłyby, że obserwowana dystrybucja byłaby mieszanką innych dystrybucji. Poszczególne rozkłady specyficzne dla warstwy mogą wyglądać jak Poisson, ale obserwowana mieszanina może nie być. Analogiczna sytuacja z regresji zakłada jedynie, że rozkład warunkowy Y | X jest zwykle rozkładem, a nie tak naprawdę rozkład samego Y.

Abhijit
źródło
Twój ostatni punkt dotyczący regresji byłby prawdziwy tylko wtedy, gdy X jest losowy. Jeśli X jest ustalony, Y również byłoby normalne. Nie?
Tak, to prawda, ale w przypadku ogólnych problemów z regresją (w przeciwieństwie do anova lub problemów projektowanych) X naprawdę nie jest naprawiony, ale są obserwacjami z leżącego u jego podstaw procesu. Jednak w przypadku Poissona kwestia ta nadal obowiązuje, ponieważ mieszaniny Poissonów niekoniecznie są Poissonem.
Abhijit,
0

Jeszcze innym sposobem na sprawdzenie tego jest kwantylowy wykres kwantylowy. W R jest qqplot. To bezpośrednio rysuje twoje wartości względem rozkładu normalnego z podobną średnią i sd

Peter Flom - Przywróć Monikę
źródło