1 votos

¿Cuánto tiempo tengo que esperar para decir con un 95% de confianza que mi fallo de software con distribución de Poisson está solucionado?

He intentado solucionar un problema de software que ha causado fallos intermitentes dos veces en un periodo de una semana.

  • Supongamos que los fallos tienen una distribución de Poisson, es decir $P(X=x)=\frac{e^{-\lambda}\lambda^x}{x!}$ para los desconocidos $\lambda$
  • Asuma que una solución fallida no tendrá efecto en la frecuencia con la que se produce el problema.
  • El problema no volverá a producirse si la solución tiene éxito.

¿Cuánto tiempo tengo que esperar (si no se producen más fallos) para poder declarar con un 95% de confianza que mi solución es un éxito?


Creo que las suposiciones que he hecho son razonables, y he llegado a graficar posibles valores de $\lambda$ contra su probabilidad dados los dos fracasos en una semana, es decir $P(X=2)=\frac{e^{-\lambda}\lambda^2}{2}$ . Creo que la ecuación relevante para introducir el tiempo t es $p(X=0)=e^{-\lambda t}$ Pero soy un desarrollador de software sin mucha experiencia en estadísticas, y ahora estoy atascado.

0voto

Soy consciente de que hacer una simulación es una forma horrible de hacer matemáticas, pero creo que la respuesta es 1,7 semanas (desviación estándar 0,037). El lenguaje de programación es R.

set.seed(1)

getPoissionTime <- function(smallLambda)
{
    count <- 0
    while(rpois(1, smallLambda) == 0)
    {
        count <- count + 1
    }
    count
}

answers <- c()

while(length(answers) < 100)
{
    values <- c()

    while(length(values) < 10000)
    {
        # I guess this is an additional assumption - that prior to observations, all
        # values of lambda were equally likely.
        lambda <- runif(1) * 20

        if (rpois(1, lambda) == 2)
        {
            t <- getPoissionTime(lambda/100)/100
            values <- c(values, t)
        }
    }

    q <- quantile(values, probs=0.95)
    answers <- c(answers, q)
}

print(paste("mean", mean(answers), "sd", sd(answers)))

He comprobado esto con el ejemplo de @DavidQuinn, es decir, si fuerzo $\lambda$ para ser 2 entonces el programa está de acuerdo con él que $t$ es 1,497

0voto

La distribución de Poisson nos dice que $P(X=2|\lambda)=\frac{e^{-\lambda}\lambda^2}{2}$ . Según el teorema de Bayes

$$P(\lambda_i|X=2)=\frac{P(X=2|\lambda_i)P(\lambda_i)}{P(X=2|\lambda_1)P(\lambda_1)+P(X=2|\lambda_2)P(\lambda_2)+...+P(X=2|\lambda_N)P(\lambda_N)}$$

Esta es la forma discreta del teorema de Bayes - no voy a intentar la integral en la forma continua. He utilizado algunos Código R para ayudar a mis cálculos.

Elija una muestra de posibles $\lambda$ (nota en mi muestra N=200)

{0.1, 0.2, 0.3... 20.0}

Elija los antecedentes para estos

{1/N, 1/N, 1/N... 1/N}

Calcular las probabilidades de Poisson P(X=2| $\lambda$ ), que serán las probabilidades en la ecuación de Bayes.

{0.0045, 0.016, 0.033... 0.00000041}

Calculando la suma ponderada de los dos últimos conjuntos obtenemos nuestro denominador

0.050

Y completar la parte bayesiana del cálculo dividiendo cada probabilidad -de nuevo ponderada por los priores- por el denominador. Estas son nuestras probabilidades posteriores.

{0.00045, 0.0016, 0.0033... 0.000000041}

Ahora podemos hacer una serie de conjeturas sobre el valor de t, y utilizar un algoritmo como el de corte binario para acercarnos arbitrariamente a su valor real (en realidad no podemos acercarnos arbitrariamente sólo con el corte binario. Debido a los errores introducidos por el muestreo, tendríamos que hacer la muestra progresivamente más fina también).

Supongamos que t=1,72

La fórmula de la vida media nos dice que $$p(X=0)=e^{\lambda t}$$ es la probabilidad de que no se produzca ningún fallo en este periodo de tiempo. Calcúlela para cada $\lambda$ en nuestra muestra:

{0.842, 0.709, 0.597... 0.0000000000000011}

Ahora podemos ponderar estas probabilidades con la probabilidad (posterior) de cada valor de $\lambda$ que se produce. Esta suma ponderada es de 0,04969, por lo que la respuesta es 1,72 semanas, ya que la probabilidad de que se produzca un fallo en ese tiempo se sitúa justo por debajo del 5%, como se requiere.

Me molesta un poco no poder cuantificar los errores que he creado al utilizar una muestra discreta, pero tal y como yo lo veo, el principal problema de este cálculo es mi elección de priores, y la única manera de reducir su influencia es observando más datos. Yo también agradecería tus comentarios.

Edición 2016-06-13, se han añadido gráficos:

Gráficos

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