Está en la página 1de 16

Prácticas de Estadística Aplicada con R y RCommander.

Práctica 4b: Obtención por simulación de fiabilidad de Sistemas.

Objetivo:
En la siguiente práctica obtendremos por simulación la fiabilidad de diversas configuraciones de
dispositivos, a partir de la fiabilidad de cada una de sus componentes.

Simulación
En el mundo actual, la mayoría de los proyectos son a gran escala y requieren una fuerte inversión
económica. Uno de los objetivos de la simulación es realizar ensayos de cambios en el sistema probándolos en
el modelo con el fin de elegir la mejor alternativa y así enfrentarse mejor a una realidad que varía de día a día.
La simulación permite la descripción de situaciones complejas y ayuda a la localización de los aspectos
relevantes del problema.
En la mayoría de los sistemas reales intervienen una gran cantidad de variables aleatorias. Por ejemplo, cuando
estás esperando en la fila del centro comercial, el número de artículos distintos que paga el cliente que está
justo delante de ti es una variable aleatoria discreta; o el tiempo que tienes que esperar hasta que te toca el
turno es otra variable aleatoria, continua en este caso. Si en el proceso de simulación intervienen variables
aleatorias hablaremos de simulación estocástica o probabilística.

RCommander tiene implementadas funciones para la generación de muestras de algunas distribuciones de


probabilidad dentro del menúDistribuciones, tanto para modelos continuos como discretos.

Distribuciones

Aplicación de técnicas de simulación para estimar la fiabilidad de un sistema en serie.


Supongamos que tenemos un sistema serie como el de la figura, en el que cada componente funciona
independientemente de las restantes.

Supongamos que la fiabilidad de la componente A es p =0.9, la de B es p =0.8 y la de C es p =0.85. Tal y


A B C
como se ha estudiado, la fiabilidad del sistema se obtiene multiplicando estas tres cantidades. Así:
Fiabilidad _ del _ sistema  0,9  0.8  0.85  0.612
Observar que como todo sistema en serie, la fiabilidad del sistema es menor o igual que la fiabilidad de
la componente menos fiable.
Para calcular una estimación de esta fiabilidad, debemos diseñar el siguiente experimento. Generaremos 40
datos aleatorios Bernoulli con valores de p igual a 0.9, 0.8 y 0.85. Los 1’s indicarán que la componente está
funcionando y los ceros que no lo está.

Para ello seleccionaremos:

Distribuciones -> Distribución binomial->Muestra de una distribución binomial


Escuela Técnica Superior de Ingenieros Industriales
Universidad Politécnica de Cartagena
1
Seguidamente indicaremos que vamos a almacenar en CompA los 40 datos simulados.

Repetiremos este proceso 2 veces más utilizando como probabilidad de éxito 0.85 para la componente B (lo
almacenaremos en CompB) y 0.8 para la C (lo almacenaremos en CompC).

Una vez realizado este proceso debemos tener 3 conjuntos de datos activos en R Commander:

El siguiente paso es juntarlos todos en uno. Para ello utilizaremos la instrucción data.frame en la ventana de
comandos.

Escuela Técnica Superior de Ingenieros Industriales


Universidad Politécnica de Cartagena
2
Si ejecutamos la siguiente instrucción en la ventana de comandos:

Datos <- data.frame(CompA$obs, CompB$obs, CompC$obs)

(recordemos que los datos se han almacenado en una variable llamada obs dentro de los conjuntos de datos
CompA, CompB y CompC).

Seguidamente, juntaremos los tres conjuntos de datos en un único conjunto llamado Datos con tres columnas:

Una vez colocados los valores en una única columna, deberemos determinar si el sistema resultante
funcionará. Al estar configurados en serie, el sistema funcionará cuando funcionen todas las componentes, esto
es cuando la fila esté formada únicamente por 1´s. Por tanto si multiplicamos los valores obtenidos,
obtendremos 1 si todos son 1’s, por tanto el producto será un indicador de que el sistema funciona. Para
realizar el producto de las tres columnas utilizaremos la opción:

Datos-> Modificar variables…-> Calcular nueva variable

Escuela Técnica Superior de Ingenieros Industriales


Universidad Politécnica de Cartagena
3
El valor del producto de las tres columnas lo almacenaremos en una variable llamada sistema:

Para finalizar, solo nos queda calcular la frecuencia relativa del valor 1 en la variable sistema:

Que en este caso equivale a calcular su media. Este cálculo lo podemos realizar desde el menú Estadísticas-
Resúmenes, o simplemente ejecutando la instrucción:
mean(Datos$sistema)
en la ventana de resultados.

En este caso hemos obtenido una estimación para la fiabilidad del sistema de 0.6:

Escuela Técnica Superior de Ingenieros Industriales


Universidad Politécnica de Cartagena
4
Aplicación de técnicas de simulación para estimar la fiabilidad de un sistema en paralelo.
Supongamos que tenemos un sistema paralelo como el de la figura, en el que cada componente funciona con
independencia de las restantes y que las fiabilidades de las componentes son igual que antes p =0.9, p =0.8 y
A B
p =0.85.
C

Tal y como se ha estudiado, la fiabilidad del sistema se obtiene:


Fiabilidad _ del _ sistema  1  (1  0,9)  (1  0.8)  (1  0.85)  0.997

El experimento diseñado es análogo al anterior. Lo único que cambia es la función que se va a utilizar para
construir la columna con unos y ceros que dé el funcionamiento del sistema. Así el sistema funcionará cuando
al menos una componente funcione, por tanto, una opción sería sumar las tres columnas y tener en cuenta
únicamente aquellos valores no nulos.

Para ellos vamos a generar, a partir de los valores simulados para el sistema en serie una variable llamada
sistema_pque será la suma de las tres columnas que indican si la componente funciona o no. Para ello
seleccionamos nuevamente:
Datos-> Modificar variables…-> Calcular nueva variable

El siguiente paso será recodificar la variable sistema_p para que únicamente tome valores 0 y 1, es decir,
aquellos valore que sean >=1 deberán ser modificados. Para ello seleccionaremos:
Datos-> Modificar variables…-> Recodificar variables

Escuela Técnica Superior de Ingenieros Industriales


Universidad Politécnica de Cartagena
5
Y generamos una nueva variable que llamaremos funciona_pque verifique lo anteriormente comentado. Para
ello:

Evidentemente el valor mínimo será 0 y el máximo será 3, pero de esta manera hemos introducido cómo se
selecciona un rango de valores a la hora de recodificar una variable que queremos que sea de tipo numérico
(no un factor).

Escuela Técnica Superior de Ingenieros Industriales


Universidad Politécnica de Cartagena
6
Seguidamente calculamos el promedio de dicha variable y ya tendremos la estimación de la fiabilidad de
nuestro sistema. En nuestro caso 0.975

Aplicación de técnicas de simulación para estimar la fiabilidad de un sistema a partir de


la distribución de los fallos de sus componentes en un instante determinado.
Consideremos el siguiente sistema:

Fallo de la componente A -> Normal(2,=0.5)

Fallo de la componente B ->Exp (0.3)

La unidades de tiempo que se utilizan son años.

Determinar la probabilidad de que el sistema funciona transcurridos 2 años desde su puesta en funcionamiento.

Resolución:

En este caso utilizaremos una simulación con un total de 100 réplicas, por ejemplo, para estimar la fiabilidad
del sistema. Para ello:
1.- Generación de los tiempos de fallo de cada modelo:
1.a.-Generaremos dos columnas de 100 datos correspondientes al modelo Normal(2,=0.5) que se
corresponderán con simulaciones de los instantes en los que fallan las dos componentes tipo A (que
llamaremos A1 y A2).
1.b.- 2.- Generaremos dos columnas de 100 datos correspondientes al modelo Exp (0.3)que se
corresponderán con simulaciones de los instantes en los que fallan las dos componentes tipo B (que
llamaremos B1 y B2).
2.- Uniremos las cuatro columnas de datos en un solo conjunto de datos llamado datos.
3.- Seguidamente, para cada columna codificaremos con 0 o 1 si el fallo se produjo antes de los dos años (edad
de interés) o el fallo es posterior.
4.- Generaremos una nueva columnacon el producto de A2 y B1 que representará en funcionamiento del
subsistema en serie de la zona central.
5.- Sumaremos los valores codificados de A1, el subsistema en serie central y B2 en una variable llamada
datos$suma para obtener en qué instantes el sistema completo no funciona, es decir, aparecen 0´s.
6.- Recodificaremos dicha variable para que tomo únicamente valores 0 y 1, y calcularemos su promedio, lo
que nos proporcionará una estimación de la fiabilidad del sistema.

Escuela Técnica Superior de Ingenieros Industriales


Universidad Politécnica de Cartagena
7
1.- Generación de los tiempos de fallo de cada modelo.
Para ello seleccionaremos:

Normal Exponencial

2.- Unión de los dos conjuntos de datos en uno solo llamado datos.

Debemos ejecutar la instrucción:


datos<- data.frame(CompA$obs1,CompA$obs2,CompB$obs1,CompB$obs2)

en la ventana de instrucciones:

Escuela Técnica Superior de Ingenieros Industriales


Universidad Politécnica de Cartagena
8
3.- Codificar con 0 o 1 si el fallo se produjo antes de los 2 años (edad de interés) o el fallo es posterior.

En este caso debemos repetir este procedimiento 4 veces, una para cada una de las columnas de datos.
Selecionaremos:
Datos-> Modificar variables…-> Recodificar variables

Y generamos una nueva variable que llamaremos funciona_A1que tome el valor 0 si en valor de la variable
obs1 es menor que 2 y 1 en caso contrario. Para ello:

Nota.- Observar que, por la codificación que hemos utilizado, en el caso en que hubiese un valor igual a 2
podríamos tener problemas pero la probabilidad de que esto ocurra es prácticamente nula.

Tras repetir este procedimiento con las restantes columnas obtendremos las variables funciona_A1,
funciona_A2, funciona_B1 y unciona_B2, que tomarán el valor 1 si la componente está funcionando tras dos
años desde su puesta en funcionamiento.

4.- Generaremos una nueva columna con el producto de A2 y B1.


Esta nueva columna representará el estado del subsistema central formado por la componente A y B en serie.
Para ello, seleccionamos:
Datos-> Modificar variables…-> Calcular nueva variable

Escuela Técnica Superior de Ingenieros Industriales


Universidad Politécnica de Cartagena
9
Y crearemos una variable llamada funciona_A2_B1 que se corresponderá con el estado de dicho subsistema:

5.- Sumaremos los valores codificados de A1, el subsistema en serie central y B2


Seleccionamos:
Datos-> Modificar variables…-> Calcular nueva variable

La variable datos$sumatomará el valor 0 cuando el sistema completo no funcione.

6.- Recodificaremos dicha variable para que tomo únicamente valores 0 y 1 y calculamos su promedio.

Seleccionamos:
Datos-> Modificar variables…-> Recodificar variables

Escuela Técnica Superior de Ingenieros Industriales


Universidad Politécnica de Cartagena
10
Y para finalizar, calculamos el promedio de la variable datos$sistema.

Por tanto, obtenemos una estimación de 0.83 para la probabilidad de que el sistema funcione tras dos años de
funcionamiento.

Aplicación de técnicas de simulación para estimar la fiabilidad de un sistema a partir de


la distribución de los fallos de sus componentes en un instante cualesquiera.

Supongamos que tenemos un sistema serie como el de la figura, en el que cada componente funciona
independientemente de las restantes.

Supongamos que los instantes en los que falla la componente A se distribuyen como un modelo Normal de
media 2 (miles de horas) y desviación típica 0.5, mientas que los fallos de la componente B se distribuyen
según un modelo Exponencial de parámetro 0.3 (media=1/0.3 miles de h).

Para calcular una estimación de la fiabilidad de este sistema, debemos diseñar el siguiente experimento:
1. Generaremos muestras de tamaño suficientemente grande de cada uno de los modelos asociados a cada
una de las componentes y lo almacenaremos en dos columnas (p.e. 100 datos).

Escuela Técnica Superior de Ingenieros Industriales


Universidad Politécnica de Cartagena
11
2. Seguidamente utilizaremos la instrucción data.frame para juntar los dos conjuntos de datos en uno que
llamaremos Sistema

3. Al tratarse de un sistema en serie el fallo se producirá cuando falle la primera de ellas, por tanto
tomaremos como fallo del sistema el valor mínimo de cada par de valores por fila, dicho valor lo
almacenaremos en una tercera columna (si trabvajamos con un sistema en paralelo utilizaríamos el
máximo).
La instrucción para calcular el mínimo y el máximo por filas en R es la siguiente:
cto_datos$variable=apply(conjunto de datos, orden, min/max)
donde orden representa la posicición que debemos considerar. Así si queremos obtener el mínimo por
filas del conjunto de datoas Sistema y almacenarlo en la columna seria, utilizaríamos la instrucción:
Sistema$serie=apply(Sistema,1,min)
y para el máximo:
Sistema$paralelo=apply(Sistema,1,max)

Escuela Técnica Superior de Ingenieros Industriales


Universidad Politécnica de Cartagena
12
Vemos que el conjunto de datos Sistema cuenta ahora con nuevas columnas

4. Seguidamente debemos calcular el histograma para ver cómo se comportan los tiempos de fallo del
sistema.

Y obtendremos algo parecido a esto para el caso del sistema en serie:

Escuela Técnica Superior de Ingenieros Industriales


Universidad Politécnica de Cartagena
13
Donde se observa, que el 15 de los fallos del sistema en serie se producen antes de las 0,5 miles de
horas.
5. Si queremos la tabla de frecuencias acumuladas almacenaremos el histograma en una variable que
llamaremos histograma con la instrucción:
histograma=hist(Sistema$serie, scale="percent", breaks="Sturges", col="darkgray")

Calcularemos las frecuencias acumuladas con la instrucción:


cumsum(histograma$counts)
(recordemos que histograma$counts almacena el número de observaciones en cada clase)
Y por último mostraremos los puntos de corte de las clases con la instrucción:
histograma$breaks

Tras esto observamos:

que el 15% falla antes de 0.5, el 33% antes de 1, el 44% antes de 1.5, el 71% antes de 2, el 93% antes
de 2,5 el 99% antes de 3 y el 100% hallan antes de 3.5 miles de horas.

Escuela Técnica Superior de Ingenieros Industriales


Universidad Politécnica de Cartagena
14
6. Para el caso en paralelo obtenemos:

En este caso el fallo del sistema se producirá con seguridad antes de las 18 (mil) horas. Valor muy por
encima del valor obtenido para el sistema en serie.

Escuela Técnica Superior de Ingenieros Industriales


Universidad Politécnica de Cartagena
15
Ejercicio 1:
Supongamos que tenemos dos dispositivos A y B cuyas probabilidades defuncionamiento tras 3000 horas es
de 0,85 y 0,90 respectivamente. Se estánestudiando dos posibles configuraciones

Determinar por simulación y analíticamente qué configuración resulta más fiable.

Ejercicio 2:
Dado el siguiente sistema

Determinar su fiabilidad tras 3 años de uso.

Escuela Técnica Superior de Ingenieros Industriales


Universidad Politécnica de Cartagena
16

También podría gustarte