5 votos

Estimación robusta de una variable aleatoria geométrica

Tengo un montón de datos que se supone que las instancias de una variable aleatoria geométrica con valores atípicos. Cómo puedo hacer un robusto estimación del parámetro $p$, de modo que el efecto de los valores atípicos se reduce al mínimo?

Como parte del proceso de estimación, también necesito saber cuales son los valores atípicos en los datos.

Estoy buscando alguna solución con el uso de R, matlab o C/C++.

EDICIÓN 1

Es cualquier algoritmo disponibles que pueden ser utilizados para reforzar la estimación de la variable aleatoria geométrica, aunque no fácilmente disponible como una función en R o matlab ?

EDIT 2

La estimación de máxima verosimilitud p de geométrica variable aleatoria es la media de los valores de instancia. Así que si hacemos estimación robusta de la media de los valores de instancia, podemos decir que estamos haciendo robusto de estimación de la base geométrica variable aleatoria? Si es así, cuál es el método más adecuado para hacer la robusta media de la estimación. (Soy un novato en las estadísticas y en R)

2voto

bheklilr Puntos 113

Aquí hay un par de algoritmos que va a hacer sólida la estimación del parámetro de la distribución geométrica, junto con un ejemplo. Voy a escribir la distribución geométrica como $\text{p}(x | p) = p(1-p)^x$.

Método 1 se basa en el hecho de que $\text{p}(x+1|p)/\text{p}(x|p) = 1-p$. Podemos extender este:

$\frac{\sum_{i=0}^a \text{p}(i|p)}{\sum_{i=a+1}^{2a}\text{p}(i|p)} = (1-p)^a$

Si especificamos $a$ lo suficientemente baja para que las frecuencias observadas no son contaminados por los valores extremos, se puede utilizar para obtener un estimador robusto de $p$:

func.rob <- function(x, a) {
  1 - (sum(x>=a & x<(2*a)) / sum(x<a))^(1/a)
}

El método 2 es una media limitada. Podemos especificar un recorte porcentaje $\alpha$ y el algoritmo calcula la media de todos los valores inferiores o iguales a la $1-\alpha$ los cuantiles de los datos. Podemos encontrar $p$ de manera tal que la distribución geométrica tiene la misma media que a través de la misma gama.

func.trim <- function(x, a) {
  require(MASS)
  geom.tm <- function(p, xbar, cutoff) {(sum(dgeom(1:cutoff, p)*c(1:cutoff))-xbar)^2}

  cutoff <- quantile(x, a)
  xbar <- mean(x[x <= cutoff])

  optim(0.5, geom.tm, lower=1.0e-05, upper=1-1.0e-05, method="L-BFGS-B",
        xbar=xbar, c=cutoff)$par
}

Utilizamos la minimización de la plaza en lugar de rootfinding porque no siempre es fácil de soporte de la raíz; ambos bajo $p$ y alto $p$ le dará muy baja tapizados significa para los puntos de corte que son pequeños en relación a la verdadera media de la distribución. (En general, esto no es una buena cosa que hacer, sin embargo.) Además, a mí me parece que es posible que no haya ninguna solución a este problema, especialmente para las pequeñas muestras; no he observado en decenas de miles de carreras con muestras de tamaño 250, aunque.

Aquí están algunas comparaciones contra el MLE para no contaminada y contaminada de datos, el tamaño de la muestra 250, $p=0.4$. En primer lugar, de 10.000 pistas con incontaminada de datos:

> func.mle <- function(x) 1/(1+mean(x))
> 
> # Uncontaminated data
> z <- matrix(rgeom(2500000, 0.4), 10000, 250)
> phat.rob <- apply(z, 1, func.rob, a=4)
> phat.trim <- apply(z, 1, func.trim, a=0.75)
> phat.mle <- apply(z, 1, func.mle)
>             
> cat(" Robust estimator sample mean, std. dev.: ",mean(phat.rob),"  ",sd(phat.rob),"\n",
+     "Trim estimator sample mean, std. dev.:   ",mean(phat.trim),"  ",sd(phat.trim),"\n",
+     "ML estimator sample mean, std. dev.:     ",mean(phat.mle),"  ",sd(phat.mle),"\n",
+   "Relative efficiency (robust, trim): ",var(phat.mle)/var(phat.rob),"   ",
+     var(phat.mle)/var(phat.trim), "\n")
 Robust estimator sample mean, std. dev.:  0.4017054    0.03044539 
 Trim estimator sample mean, std. dev.:    0.3874961    0.01849624 
 ML estimator sample mean, std. dev.:      0.4007747    0.01972546 
 Relative efficiency (robust, trim):  0.4197697     1.137332 
> 

Como podemos ver, el estimador robusto aparece imparcial, mientras que el tapizado estimador es sesgado un poco baja; sin embargo, el estimador robusto es un poco menos eficiente en el verdadero modelo de la MLE, mientras que el tapizado estimador hace bastante bien.

Ahora cambiamos el 4% de los valores de 25, un claro valor atípico para esta elección de parámetros:

> # Contaminated data 4% @ 25
> z[,1:10] <- 25
> phat.rob <- apply(z, 1, func.rob, a=4)
> phat.mle <- apply(z, 1, func.mle)
> phat.trim <- apply(z, 1, func.trim, a=0.75)
> mean(phat.rob)
[1] 0.4017998
> mean(phat.trim)
[1] 0.3651195
> mean(phat.mle)
[1] 0.290966
> 

El MLE ha fallado, mientras que la relación basada en sólidas estimador está haciendo bien y los tapizados estimador ha caído un poco menor; esto es debido a que el uso de un cuantil en lugar de un número sin procesar los resultados de una estimación sesgada de la cuantil, gracias a todos los valores atípicos de estar en el lado de alta. Aún así, es mucho mejor que el MLE, y es bastante fácil de reemplazar el cuantil con una cruda número que usted está seguro se encuentra por debajo del "valor atípico".

Edit: (adicional contesto)

Si usted decide utilizar algoritmos como el de arriba, yo recomiendo hacer experimentos de simulación como yo lo he hecho para ayudarle a entender sus propiedades.

Como para la identificación de valores atípicos - que es una cosa arriesgada, donde el juicio juega un papel importante. Si usted sospecha que la frecuencia de los valores extremos es baja, digamos, $\le 1\%$, se puede usar la estimación robusta de $p$, calcular el $99^{\text{th}}$ percentil de la distribución, y poner todos los puntos de datos que caen de arriba que en la "sospecha" de la categoría. Si usted tiene alguna manera de volver a la fuente de los datos, de la cual se desprende de un comentario anterior que hacer, que ayudaría a aclarar si los puntos de hecho fueron los valores atípicos. Alternativamente, usted podría tirar todo por encima de el, por ejemplo, $99.9^{\text{th}}$ percentil, dado que la muestra está bien por debajo de los 1000 que no te va a tirar más de un muy buen par de puntos de datos. Yo prefiero el "filtro", luego de examinar el enfoque de" (cuando es posible) a la "eliminar" en el enfoque, a mí mismo.

i-Ciencias.com

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.

Powered by:

X