6 votos

Estimación de la probabilidad de que un cambio de software solucione un problema

En el trabajo tenemos un dispositivo de hardware que está fallando por alguna razón aún por determinar. Me han encargado que vea si puedo hacer que este dispositivo pas fallar realizando cambios en su controlador de software. He construido un banco de pruebas de software que itera sobre las funciones del controlador que creo que tienen más probabilidades de hacer que el dispositivo falle. Hasta ahora he forzado 7 fallos de este tipo y las iteraciones en las que falló el dispositivo son las siguientes:

100 22 36 44 89 24 74

Media = 55,57 Desviación estándar = 31,81

A continuación, realicé algunos cambios de software en el controlador del dispositivo y pude hacerlo funcionar durante 223 iteraciones sin fallo antes de detener manualmente la prueba.

Quiero poder volver a mi jefe y decirle: "El hecho de que hayamos podido hacer funcionar el dispositivo durante 223 iteraciones sin fallos significa que mi cambio de software tiene una probabilidad del X% de solucionar el problema". También estaría satisfecho con la probabilidad inversa de que el dispositivo siga fallando con esta corrección.

Si supusiéramos que la iteración en la que falla el dispositivo se distribuye normalmente, podemos decir que pasar 223 iteraciones sin fallos supone 5,26 desviaciones estándar de la media, lo que aproximadamente tiene una probabilidad de ocurrir de 1 entre 14 millones. Sin embargo, como sólo tenemos una muestra de 7 (sin incluir las 223), estoy bastante seguro de que no sería prudente suponer la normalidad.

Aquí es donde creo que entra en juego la prueba t de Student. Utilizando la prueba t con 6 grados de libertad, he calculado que la media real de la población tiene una probabilidad del 99% de ser inferior a 94.

Así que ahora mi pregunta es si puedo decir con un 99% de certeza que alcanzar 223 iteraciones sin fallos es un evento 4,05 sigma, es decir. $\frac{(223 - 94)}{31.81} = 4.05$ ? ¿Puedo utilizar la desviación típica de la muestra de 31,81 en ese cálculo o hay alguna otra prueba que deba hacer para obtener una confianza del 99% sobre cuál es la desviación típica máxima y luego utilizarla en mi cálculo de cuántas sigmas se aleja realmente 223 de la media con un nivel de confianza del 99%?

Gracias.

ACTUALIZACIÓN

Las respuestas que he recibido aquí superan cualquier expectativa que tuviera. Agradezco sinceramente el tiempo y la reflexión que muchos de ustedes han dedicado a sus respuestas. Tengo mucho en lo que pensar.

En respuesta a la preocupación de Whuber de que los datos no parecen seguir una distribución exponencial, creo que tengo la respuesta de por qué. Algunos de estos ensayos se ejecutaron con lo que pensé que sería una solución de software, pero en última instancia terminó en un fracaso. No me sorprendería que esas pruebas fueran la agrupación 74 89 100 que vemos. Aunque no fui capaz de arreglar el problema, ciertamente parece que fui capaz de sesgar los datos. Revisaré mis notas para ver si este es el caso y mis disculpas por no recordar incluir esa pieza de información antes.

Supongamos que lo anterior es cierto y que eliminamos 74 89 100 del conjunto de datos. Si volviera a ejecutar el dispositivo con el controlador original y obtuviera puntos de datos de fallo adicionales con valores 15 20 23, ¿cómo calcularía entonces el límite de predicción paramétrica con distribución exponencial al nivel de confianza del 95%? ¿Cree que este límite de predicción sigue siendo un estadístico mejor que suponer ensayos Bernoulli independientes para hallar la probabilidad de que no haya fallos en 223 iteraciones?

Mirando más de cerca la página de wikipedia sobre Límites de Predicción calculé los límites de predicción paramétricos al nivel de confianza del 99% asumiendo media poblacional desconocida y stdev desconocido en Excel como sigue:

$\bar{X_n} = 55.57$
$S_n = 31.81$
$T_a = T.INV\Bigl(\frac{1+.99}{2},6\Bigr)$

$Lower Limit = 55.57 - 3.707*31.81*\sqrt{1+\frac{1}{7}} = -70.51$
$Upper Limit = 55.57 + 3.707*31.81*\sqrt{1+\frac{1}{7}} = 181.65$

Dado que mi prueba de 223 está fuera del intervalo de confianza del 99% de [-70,51 , 181,65] ¿puedo asumir con un 99% de probabilidad que esto es fijo suponiendo que la distribución subyacente es la distribución T? Quería asegurarme de que mi interpretación era correcta, aunque lo más probable es que la distribución subyacente sea exponencial y no normal. No tengo la menor idea de cómo ajustar la ecuación para una distribución exponencial subyacente.

ACTUALIZACIÓN 2

Así que estoy realmente intrigado con este software 'R', nunca lo había visto antes. Cuando estudiaba estadística (hace varios años) utilizábamos SAS. De todos modos, con el conocimiento superficial que reuní a partir del ejemplo de Owe Jessen y un poco de ayuda de Google, creo que llegué con el siguiente código R para producir la Límites de predicción con el hipotético conjunto de datos suponiendo un Distribución exponencial

Dime si lo he entendido bien:

fails <- c(22, 24, 36, 44, 15, 20, 23)
fails_xfm <- fails^(1/3)
Y_bar <- mean(fails_xfm)
Sy <- sd(fails_xfm)
df <- length(fails_xfm) - 1
no_fail <- 223

percentile <- c(.9000, .9500, .9750, .9900, .9950, .9990, .9995, .9999)
quantile <- qt(percentile, df)

UPL <- (Y_bar + quantile*Sy*sqrt(1+(1/length(fails_xfm))))^3
plot(percentile,UPL)
abline(h=no_fail,col="red") 
text(percentile, UPL, percentile, cex=0.9, pos=2, col="red")

Límites de predicción http://img411.imageshack.us/img411/5246/grafr.png

7voto

jldugger Puntos 7490

En esta pregunta se pide un límite de predicción . De este modo se comprueba si una estadística futura es "coherente" con los datos anteriores. (En este caso, la estadística futura es el valor de 223 posterior a la fijación.) Tiene en cuenta un mecanismo de azar o incertidumbre de tres formas:

  1. Los propios datos pueden variar por azar.

  2. Por ello, cualquier estimación realizada a partir de los datos es incierta.

  3. La estadística futura también puede variar por azar.

Estimación de una distribución de probabilidad a partir de los datos maneja (1). Pero si nos limitamos a comparar el valor futuro con las predicciones de esa distribución, ignoramos (2) y (3). Esto exagerará la importancia de cualquier diferencia que observe. Por eso puede ser importante utilizar un método de límite de predicción en lugar de algún ad hoc método.

Los tiempos de fallo suelen considerarse distribuido exponencialmente (que es esencialmente una versión continua de una distribución geométrica). La exponencial es un caso especial de la Distribución Gamma con "parámetro de forma" 1. Aproximadamente se han elaborado métodos de límites de predicción para distribuciones gamma, como publicaron Krishnamoorthy, Mathew y Mukherjee en un Artículo de Technometrics de 2008 . Los cálculos son relativamente sencillos. No los discutiré aquí porque hay cuestiones más importantes que atender primero.

Antes de aplicar cualquier procedimiento paramétrico, debe comprobar que los datos se ajustan, al menos aproximadamente, a los supuestos del procedimiento. En este caso podemos comprobar si los datos parecen exponenciales (o geométricos) haciendo una diagrama de probabilidad exponencial . Este procedimiento hace coincidir los valores de los datos ordenados $k_1, k_2, \ldots, k_7$ = $22, 24, 36, 44, 74, 89, 100$ a puntos porcentuales de (cualquier) distribución exponencial, que puede calcularse como los logaritmos negativos de $1 - (1 - 1/2)/7, 1 - (2 - 1/2)/7, \ldots, 1 - (7 - 1/2)/7$ . Cuando lo hago, el gráfico parece decididamente curvo, lo que sugiere que estos datos son pas extraída de una distribución exponencial (o geométrica). Con cualquiera de estas distribuciones, debería ver un grupo de tiempos de fallo más cortos y una cola rezagada de tiempos de fallo más largos. Aquí, la agrupación inicial es evidente en $22, 24, 26, 44$ pero después de un intervalo relativamente largo desde $44$ a $74$ hay otra agrupación en $74, 89, 100$ . Esto debería hacernos desconfiar de los resultados de nuestros modelos paramétricos.

Un enfoque en esta situación es utilizar un límite de predicción no paramétrica . En este caso, se trata de un procedimiento muy sencillo: si el valor posterior a la corrección es el mayor de todos los valores, debería ser una prueba de que la corrección ha alargado realmente los tiempos de fallo. Si todos los valores ocho (los siete datos pre-fijo y el único valor post-fijo) proceden de la misma distribución y son independientes, sólo hay una $1/8$ probabilidad de que el octavo valor sea el mayor. Por lo tanto, podemos decir con $1 - 1/8 = 87.5$ % de confianza en que la corrección ha mejorado los tiempos de fallo. Este procedimiento también gestiona correctamente el [censura](http://en.wikipedia.org/wiki/Censoring%28statistics%29)_ en el último valor, que en realidad registra un tiempo de fallo de algún valor desconocido superior a 233. (Si un límite de predicción paramétrica resulta ser superior a 233 --y sospecho [basándome en la experiencia y en el resultado del bootstrap de @Owe Jessen] que estaría cerca si lo calculáramos con un 95% de confianza-- determinaríamos que el número 233 no es incoherente con los demás datos, pero eso dejaría sin respuesta la pregunta relativa a la tiempo real hasta el fallo, para el que 233 es sólo una subestimación).

Basado en los cálculos de @csgillespie, que--como argumenté arriba--probablemente sobreestiman la confianza como $98.3$ %, sin embargo hemos encontrado una ventana en la que es probable que se encuentre la confianza real: es al menos $87.5$ % y algo menos de $98.3$ % (suponiendo que tengamos alguna fe en el modelo de distribución geométrica).

Concluiré compartiendo mi mayor preocupación la pregunta, tal y como está formulada, podría malinterpretarse fácilmente como un llamamiento a utilizar las estadísticas para causar una impresión o santificar una conclusión, en lugar de proporcionar información realmente útil sobre la incertidumbre. Si hay razones adicionales para suponer que la solución ha funcionado, lo mejor es invocarlas y no molestarse con las estadísticas. Presente el caso por sus méritos técnicos. Si, por el contrario, hay pocas garantías de que la solución haya sido eficaz -no lo sabemos con certeza- y el objetivo es decidir si los datos justifican seguir adelante como si funcionara, entonces es probable que un responsable de la toma de decisiones prudente prefiera el nivel de confianza conservador que ofrece el procedimiento no paramétrico.

Editar

Para los datos (hipotéticos) {22, 24, 36, 44, 15, 20, 23} el gráfico de probabilidad exponencial no es terriblemente no lineal:

alt text

(Si esto te parece no lineal, genera gráficos de probabilidad para unos cientos de realizaciones de siete extracciones de una distribución Exponencial[25] para ver cuánto se menean sólo por azar).

Por lo tanto, con este conjunto de datos modificado puede sentirse más cómodo utilizando las ecuaciones en Krishnamoorthy et al. ( op. cit. ) para calcular un límite de predicción. Sin embargo, la media armónica de 25,08 y una DE relativamente pequeña (en torno a 10) indican el límite de predicción para cualquier nivel de confianza típico ( Por ejemplo 95% o 99%) será muy inferior a 223. El principio en juego es que las estadísticas sirven para comprender y tomar decisiones difíciles. Los procedimientos estadísticos son de poca ayuda (adicional) cuando los resultados son obvios.

4voto

Eggs McLaren Puntos 945

Hay varias formas de solucionar este problema. Yo lo abordaría de la siguiente manera.

Los datos que tiene proceden de un geométrico distribución. Es decir, el número de Ensayos de Bernoulli antes de un fallo. La distribución geométrica tiene un parámetro p que es la probabilidad de fallo en cada punto. Para su conjunto de datos, estimamos p como sigue:

\begin{equation} \hat p^{-1} = \frac{100 + 22 + 36 + 44 + 89 + 24 + 74}{7} = 55.57 \end{equation}

Así que $\hat p = 1/55.57 = 0.018$ . A partir de la FCD, la probabilidad de tener una ejecución de 223 iteraciones y observar un fallo es:

\begin{equation} 1-(1-\hat p)^{223} = 0.983 \end{equation}

Así que la probabilidad de ejecutar 223 iteraciones y pas tener un fallo es

\begin{equation} 1- 0.983 = 0.017 \end{equation}

Así que parece probable (pero no abrumador) que haya solucionado el problema. Si tiene una ejecución de unas 300 iteraciones, la probabilidad baja a 0,004.

Algunas notas

  1. Un ensayo Bernoulli es simplemente lanzar una moneda, es decir, sólo hay dos resultados.
  2. La distribución geométrica suele expresarse en términos de éxito (en lugar de fracaso). Para usted, un éxito es que la máquina se rompa.

2voto

seat59j Puntos 29

Creo que podrías torturar un poco tus datos con bootstrapping. Siguiendo los cálculos de cgillspies con la distribución geométrica, he jugado un poco y se me ocurrió el siguiente código R - cualquier corrección muy apreciada:

fails <- c(100, 22, 36, 44, 89, 24, 74) # Observed data
N <- 100000 # Number of replications
Ncol <- length(fails) # Number of columns in the data-matrix
boot.m <- matrix(sample(fails,N*Ncol,replac=T),ncol=Ncol) # The bootstrap data matrix
# it draws a vector of Ncol results from the original data, and replicates this N-times
p.hat <- function(x){p.hat = 1/(sum(x)/length(x))} # Function to calculate the 
# probability of failure
p.vec <- apply(boot.m,1,p.hat) # calculates the probabilities for each of the   
# replications
quant.p <- quantile(p.vec,probs=0.01) # calculates the 1%-quantile of the probs.
hist(p.vec) # draws a histogram of the probabilities
abline(v=quant.p,col="red") # adds a line where quant.p is
no.fail <- 223 # Repetitions without a fail after the repair
(prob.fail <- 1 - pgeom(no.fail,prob=quant.p)) # Prob of no fail after 223 reps with 
# failure prob qant.p

La idea era obtener un valor de la probabilidad en el peor de los casos y, a continuación, utilizarlo para calcular la probabilidad de no observar ningún fallo después de 223 iteraciones, dada la probabilidad de fallo previa. El peor caso es, por supuesto, una probabilidad de fallo baja para empezar, lo que aumentaría la probabilidad de no observar ningún fallo después de 223 iteraciones sin solucionar el problema. El resultado fue 6,37% - como yo lo entiendo, usted habría tenido un 6%-probabilidad de no observar un fracaso después de 223 ensayos si el problema sigue existiendo.

Por supuesto, podrías generar muestras de ensayos y calcular la probabilidad a partir de ahí:

boot.fails <- rbinom(N,size=no.fail, prob=quant.p) # repeats draws with succes-rate 
# quant.prob N times.
mean(boot.fails==0) # Ratio of no successes 

con un resultado del 6,51%.

1voto

Kevin M Puntos 219

Yo mismo me enfrenté a este problema y decidí probar la prueba exacta de Fisher. Tiene la ventaja de que la aritmética se reduce a algo que se puede hacer con JavaScript. Puse esto en una página web - http://www.mcdowella.demon.co.uk/FlakyPrograms.html - esto debería funcionar desde allí o si lo descargas en tu ordenador (lo cual puedes hacer). Creo que tienes un total de 382 aciertos y 7 fallos en la versión antigua, y 223 aciertos y 0 fallos en la nueva, y que podrías conseguir esto al azar con una probabilidad de alrededor del 4% incluso si la nueva versión no fuera mejor.

Te sugiero que lo ejecutes un poco más. Puedes jugar con la página web para ver cómo cambia la probabilidad si sobrevives más tiempo. Yo me decantaría por algo superior a 1.000. De hecho, me esforzaría por convertirlo en algo que pudiera ejecutarse automáticamente y luego dejarlo toda la noche para atacar de verdad el problema.

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