Conozco las pruebas de normalidad, pero ¿cómo puedo comprobar la "poissonidad"?
Tengo una muestra de ~1000 enteros no negativos, que sospecho están tomados de una distribución de Poisson, y me gustaría comprobarlo.
Conozco las pruebas de normalidad, pero ¿cómo puedo comprobar la "poissonidad"?
Tengo una muestra de ~1000 enteros no negativos, que sospecho están tomados de una distribución de Poisson, y me gustaría comprobarlo.
En primer lugar, mi consejo es que te abstengas de probar una distribución de Poisson tal y como son los datos. Te sugiero que primero hagas una teoría de por qué la distribución de Poisson debe ajustarse a un conjunto de datos concreto o a un fenómeno.
Una vez establecido esto, la siguiente cuestión es si la distribución es homogénea o no. Es decir, si todas las partes de los datos se rigen por la misma distribución de Poisson o si existe una variación en función de algún aspecto como el tiempo o el espacio. Una vez que se haya convencido de estos aspectos, pruebe las tres pruebas siguientes:
busque estos y los encontrará fácilmente en la red.
Aquí hay una secuencia de comandos de R que puede ser útil. Siéntase libre de comentar o editar si detecta algún error.
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")
Esta línea: freq.ex<-(dpois(0:max(x.poi),lambda=lambda.est)*200) produce errores con algunos datos del mundo real, porque la longitud de freq.ex no coincide con freq.obs en esta línea acc <- mean(abs(freq.os-trunc(freq.ex)). He adaptado esta línea a freq.ex<-(dpois(seq(0,max(x.poi))[seq(0:max(x.poi)) %in% x.poi],lambda=lambda.est)*200) pero algo sigue sin estar bien porque goodfit produce advertencias.
Para una distribución de Poisson, la media es igual a la varianza. Si la media de la muestra es muy diferente de la varianza de la muestra, probablemente no se trate de datos de Poisson. La prueba de dispersión que también se menciona aquí es una formalización de esa noción.
Si la varianza es mucho mayor que la media, como suele ser el caso, es posible que desee probar una distribución binomial negativa.
Supongo que la forma más fácil es hacer un chi-cuadrado Bondad de ajuste prueba.
De hecho aquí está bien applet de java ¡que hará precisamente eso!
Puede utilizar la dispersión (relación entre la varianza y la media) como estadística de prueba, ya que la Poisson debería dar una dispersión de 1. Aquí hay un enlace a la forma de utilizarlo como modelo de prueba.
+1 gracias. a menudo obtengo algunos resultados "extraños", por ejemplo, una distribución normal obtiene un valor p más alto que una de poisson, donde lambda es relativamente pequeña (por lo que sólo en apariencia la normal y la poisson no son similares en absoluto)
I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.