Wie kann ich testen, ob bestimmte Proben aus einer Poisson-Verteilung stammen?

41

Ich kenne Normalitätstests, aber wie prüfe ich auf "Poisson-Ness"?

Ich habe eine Stichprobe von ~ 1000 nicht-negativen ganzen Zahlen, von denen ich vermute, dass sie aus einer Poisson-Verteilung stammen, und ich würde das gerne testen.

David B
quelle

Antworten:

18

Zunächst einmal rate ich Ihnen, eine Poisson-Distribution nicht so auszuprobieren, wie es für die Daten der Fall ist. Ich schlage vor, Sie müssen zunächst eine Theorie erstellen, warum die Poisson-Verteilung zu einem bestimmten Datensatz oder Phänomen passt.

Sobald Sie dies festgestellt haben, lautet die nächste Frage, ob die Verteilung homogen ist oder nicht. Dies bedeutet, ob alle Teile der Daten von derselben Poisson-Verteilung behandelt werden oder ob dies aufgrund eines Aspekts wie Zeit oder Raum variiert. Probieren Sie die folgenden drei Tests aus, wenn Sie von diesen Aspekten überzeugt sind:

  1. Likelihood-Ratio-Test mit einer Chi-Quadrat-Variablen
  2. Verwendung einer bedingten Chi-Quadrat-Statistik; auch Poisson-Dispersionstest oder Varianztest genannt
  3. Verwendung der Neyman-Scott-Statistik, die auf einer varianzstabilisierenden Transformation der Poisson-Variablen basiert

Suchen Sie nach diesen und Sie werden sie leicht im Netz finden.

htrahdis
quelle
3
"ob die Verteilung homogen ist oder nicht ... Wenn Sie von diesen Aspekten überzeugt sind" Können Sie etwas dazu sagen, wie Sie dies feststellen können?
Mittel zur Bedeutung
13

Hier ist eine Folge von R-Befehlen, die hilfreich sein können. Fühlen Sie sich frei zu kommentieren oder zu bearbeiten, wenn Sie Fehler entdecken.

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
quelle
3
Diese Zeile: freq.ex <- (dpois (0: max (x.poi), lambda = lambda.est) * 200) erzeugt Fehler mit Daten aus der realen Welt, da die Länge von freq.ex nicht mit freq übereinstimmt. obs in dieser Zeile acc <- mean (abs (freq.os-trunc (freq.ex))). Ich habe diese Zeile angepasst an freq.ex <- (dpois (seq (0, max (x.poi))) [seq (0: max (x.poi))% in% x.poi], lambda = lambda.est) * 200) aber etwas stimmt immer noch nicht, weil goodfit Warnungen erzeugt.
Russellpierce
Wenn ich Ihren Code verwende, erhalte ich einen Anpassungsindex von 121. Aber es ist relativ, nicht wahr? Es sollte also zwischen 0 und 100 liegen, oder?
MERose
6

Ich nehme an, der einfachste Weg ist einfach ein Chi-Quadrat- Fit- Test.

Tatsächlich ist hier ein nettes Java-Applet , das genau das macht!

csgillespie
quelle
5

Sie können die Streuung (Verhältnis der Varianz zum Mittelwert) als Teststatistik verwenden, da das Poisson eine Streuung von 1 ergeben sollte. Hier finden Sie einen Link zur Verwendung als Modelltest.

Eric Suh
quelle
+1 Danke. Ich habe oft einige „weired“ Ergebnisse, beispielsweise eine Normalverteilung erhält einen höheren p-Wert dann ein poisson ein, wobei Lambda relativ klein ist (so durch Blicke nur die normale und poisson nicht ähnlich ist überhaupt)
David B
6
404 NICHT GEFUNDEN!!
Rodrigo
5

Bei einer Poisson-Verteilung entspricht der Mittelwert der Varianz. Wenn Ihr Stichprobenmittelwert stark von Ihrer Stichprobenvarianz abweicht, haben Sie wahrscheinlich keine Poisson-Daten. Der hier ebenfalls erwähnte Dispersionstest ist eine Formalisierung dieses Begriffs.

Wenn Ihre Varianz viel größer als Ihr Mittelwert ist, wie es normalerweise der Fall ist, sollten Sie als Nächstes eine negative Binomialverteilung versuchen.

John D. Cook
quelle
5
Wenn also der Mittelwert mit der Varianz übereinstimmt, können Sie daraus schließen, dass es sich bei den Daten um Poisson handelt? Kaum!
PeterR
Wahr. Notwendig aber nicht ausreichend.
John D. Cook
2

Sie können eine einzelne Figur zeichnen, in der die beobachteten und erwarteten Frequenzen nebeneinander gezeichnet werden. Wenn die Verteilungen sehr unterschiedlich sind und Sie auch ein Varianz-Mittelwert-Verhältnis größer als eins haben, ist das negative Binomial ein guter Kandidat. Lesen Sie den Abschnitt Häufigkeitsverteilungen von The R Book. Es handelt sich um ein sehr ähnliches Problem.

Brani
quelle
1

Ich denke, der wichtigste Punkt ist der, den Sidmaestro anspricht. Unterstützt der experimentelle Aufbau oder der Datengenerierungsmechanismus die Annahme, dass die Daten aus einer Poisson-Verteilung stammen könnten?

Ich bin kein großer Fan von Tests auf Verteilungsannahmen, da diese Tests normalerweise nicht sehr nützlich sind. Was mir nützlicher erscheint, ist, Verteilungs- oder Modellannahmen zu treffen, die flexibel und relativ robust gegenüber Abweichungen vom Modell sind, typischerweise zum Zweck der Schlussfolgerung. Nach meiner Erfahrung ist es nicht üblich, Mittelwert = Varianz zu sehen, weshalb das negative Binomialmodell oft angemessener erscheint und den Poisson als Sonderfall einschließt.

Ein weiterer wichtiger Punkt beim Testen der Distribution ist, dass Sie sicherstellen, dass keine Schichten beteiligt sind, die Ihre beobachtete Distribution zu einer Mischung aus anderen Distributionen machen. Einzelne schichtenspezifische Verteilungen können in Poisson vorkommen, die beobachtete Mischung jedoch möglicherweise nicht. Eine analoge Situation aus der Regression geht nur davon aus, dass die bedingte Verteilung von Y | X normal verteilt ist und nicht wirklich die Verteilung von Y selbst.

Abhijit
quelle
Ihr letzter Punkt zur Regression wäre nur wahr, wenn X zufällig ist. Wenn X fest ist, wäre Y auch normal. Nein?
Ja, dies ist wahr, aber für allgemeine Regressionsprobleme (im Gegensatz zu anova oder entworfenen Problemen) ist X nicht wirklich behoben, sondern Beobachtungen aus dem zugrunde liegenden Prozess. Für den Poisson-Fall gilt jedoch immer noch der Punkt, da Poisson-Gemische nicht unbedingt Poisson sind.
Abhijit
0

Ein weiterer Weg, dies zu testen, ist ein Quantil-Quantil-Plot. In R gibt es qqplot. Hiermit werden Ihre Werte direkt gegen eine Normalverteilung mit ähnlichem Mittelwert und SD aufgetragen

Peter Flom - Wiedereinsetzung von Monica
quelle