Teoría de colas – Dos Servidores en secuencia

Referencia: Ross problema 8.15 p.570

Considere un sistema de servicio secuencial de dos servidores A y B.
Los clientes que llegan entran al sistema solo si el servidor A esta libre.
Si un cliente entra, entonces es atendido inmediatamente por el servidor A.
Cuando la atención del servidor A se completa, el cliente pasa a ser atendido por el servidor B siempre que esté libre, si B esta ocupado, el cliente sale del sistema.
Una vez que el cliente sale del servidor B, el cliente se parte del sistema.

Suponga que las llegadas de cientes son tipo Poisson con tasa de llegada de dos clientes por hora, y que los servidores A y B atienden a tasas exponenciales de cuatro y dos clientes por hora.

a) ¿Cuál es la proporción de clientes que entran al sistema?

b) ¿Cuál es la proporción de clientes que entraron al sistema son atendidos por el servidor B?

c) ¿Cuál es el número promedio de clientes en el sistema?

d) ¿Cuál es el monto promedio de tiempo que un cliente que entró se mantiene dentro del sistema?


Solución

los estados propuestos son:

00 P00
10 P10
01 P01
11 P11

El diagrama de transición entre estados propuesto, considerando de un solo evento por unidad de tiempo:

con lo que se puede plantear las ecuaciones de balanceo («sale=entra»):

2 P00 = 2 P01
4 P10 = 2 P00 + 2 P11
(2+2) P01 = 4 P10 + 4 P11
(4+2) P11 = 2 P01
P00 + P10 + P01 + P11 = 1

Resolviendo:

P00 = P01              ecuación(1)
2 P10 = P00 + P11      (2)
P01 = P10 + P11        (3)
3 P11 = P01            (4)
P00 + P10 + P01 + P11 = 1      (5)

de la ecuación (2) restando la ecuación (3)

2 P10 - P01 = P00 + P11 - P10 - P11
2 P10 - P01 = P00 - P10
3 P10 - P01 = P00

usando la ecuación (1)

3 P10 - P00 = P00
3 P10 = 2 P00
P10 = 2/3 P00

usando la ecuación (4) y (1)

P11 = (1/3) P01
P11 = (1/3) P00

usando la ecuación (5)

P00 + P10 + P01 + P11 = 1
P00 + P00 + (2/3) P00 + (1/3)P00 = 1
3 P00 = 1
P00 = 1/3

y se obtienen los otros valores para p

P01 = 1/3
P10 = (2/3)(1/3 )= 2/9
P11 = (1/3)(1/3) = 1/9

Con lo que se puede responder:

a) ¿Cuál es la proporción de clientes que entran al sistema?

P00 + P01 = 1/3 + 1/3 
         = 2/3

c) ¿Cuál es el número promedio de clientes en el sistema?

0*P00 +  1*P10 + 1*P01 + 2*P11 = 0 + 2/9 + 1/3 + 2*1/9 = 
     = (0+2+3+2)/9 = 7/9

d) ¿Cuál es el monto promedio de tiempo que un cliente que entró se mantiene dentro del sistema?

W = L/λA
W = (promedio de clientes en el sistema)/(tasa de los que entran)
W= (7/9)/[2(2/3)] = 7/12

Usando Numpy

resolviendo con numpy, se convierten las ecuaciones a matrices, sustituyendo una ecuación con la última (suma de probabilidades =1), se obtiene:

2 P00 = 2 P01
4 P10 = 2 P00 + 2 P11
(2+2) P01 = 4 P10 + 4 P11
(4+2) P11 = 2 P01
P00 + P10 + P01 + P11 = 1

reorganizando:

2 P00 -2 P01                = 0
2 P00        - 4 P10 + 2 P11 = 0
      -4 P01 + 4 P10 + 4 P11 = 0
       2 P01        - 6 P11 = 0
  P00  +  P01 +   P10 +  P11 = 1

se obtienen las matrices A y B para usar con la instrucción solver de numpy:

import numpy as np
A=np.array([
    [2,-2,0,0],
    [2,0,-4,2],
    [0,-4,4,4],
    [1,1,1,1]])
B=np.array([0,0,0,1])

p=np.linalg.solve(A,B)

print(p)
[ 0.33333333  0.33333333  0.22222222  0.11111111]

con lo que los valores buscados son:

P00=0.33333333
P01=0.33333333
P10=0.22222222
P00=0.11111111

2. Cadena Markov – Ejemplo: Clima con dos días

Referencia: Ross p.193, 197

(4.4) Pronostico del clima con dos días

Suponga que si llueve o no hoy depende de las condiciones del clima de los dos últimos días.

Si ha llovido en los dos últimos días, entonces que llueva mañana tiene probabilidad de 0.7;
si llovió hoy pero no ayer, entonces que llueva mañana tiene probabilidad de 0.5;
si llovio ayer pero no hoy, entonces que llueva mañana tiene probabilidad de 0.4;
si no ha llovido ni ayer ni hoy, entonces que llueva mañana tiene probabilidad de 0.2

Solución propuesta

Se puede hacer un modelo de cadena de Markov haciendo que el estado del clima mañana sea determinado por las condiciones de hoy y ayer:

Estado 0: si ha llovido hoy y ayer
Estado 1: si ha llovido hoy pero no ayer
Estado 2: Si ha llovido ayer pero no hoy
Estado 3: si no ha llovido ayer y tampoco hoy

Para considerar los posibles estados añadiendo los valores cuando está soleado, dado que el problema enuncia solo cuando lloverá.

con lo que se puede construir el diagrama de transición de estados:

y la matriz de transición es entonces:

p= \begin{pmatrix} 0.7 & 0 & 0.3 & 0 \\ 0.5 & 0 & 0.5 & 0 \\ 0 & 0.4 & 0 & 0.6 \\ 0 & 0.2 & 0 & 0.8 \end{pmatrix}

(4.9) Pronóstico para pasado mañana

Siguiendo con el ejemplo anterior.
Dado que llovió el Lunes y Martes, ¿Cuál es la probabilidad que lloverá el Jueves?

Solución propuesta

La matriz de transición permite hacer el pronóstico hasta el miércoles, para el día jueves es necesario hacer una matriz de dos pasos dada por p(2)

p^{(2)}= \begin{pmatrix} 0.7 & 0 & 0.3 & 0 \\ 0.5 & 0 & 0.5 & 0 \\ 0 & 0.4 & 0 & 0.6 \\ 0 & 0.2 & 0 & 0.8 \end{pmatrix} \text{.} \begin{pmatrix} 0.7 & 0 & 0.3 & 0 \\ 0.5 & 0 & 0.5 & 0 \\ 0 & 0.4 & 0 & 0.6 \\ 0 & 0.2 & 0 & 0.8 \end{pmatrix} = \begin{pmatrix} 0.49 & 0.12 & 0.21 & 0.18 \\ 0.35 & 0.20 & 0.15 & 0.30 \\ 0.20 & 0.12 & 0.20 & 0.48 \\ 0.10 & 0.16 & 0.10 & 0.64 \end{pmatrix}

Que llueva el jueves es equivalente no importa si llovió o nó el miércoles, por lo que para la probabilidad del jueves se usa la probabilidad de la fila para estado 0, sumando si llovió o no el miércoles.

p(lloverá jueves|llovió lunes y martes)= p(2)00+p(2)01= = 0.49 + 0.12 = 0.61.


Usando python para determinar p(2)

# 4.9 pronostico para pasado mañana
import numpy as np

# INGRESO
p = np.array([[0.7,   0, 0.3, 0  ],
              [0.5,   0, 0.5, 0  ],
              [  0, 0.4,   0, 0.6],
              [  0, 0.2,   0, 0.8]])

#PROCEDIMIENTO
p2 = np.linalg.matrix_power(p,2)

# SALIDA
print(p2)
print('Para el jueves:', p2[0,0]+p2[0,1])
[[ 0.49  0.12  0.21  0.18]
 [ 0.35  0.2   0.15  0.3 ]
 [ 0.2   0.12  0.2   0.48]
 [ 0.1   0.16  0.1   0.64]]
Para el jueves: 0.61

 

1. Cadena Markov – Ejemplo: Pronóstico del Clima

Referencia: Ross p192, 196-197, 216

(4.1) Pronóstico del clima

Suponga que la posibilidad que llueva mañana depende de las condiciones del estado del clima de hoy. No importa las condiciones de los días anteriores, solo del estado del clima de hoy.

Suponga también que si llueve hoy, entonces lloverá mañana con una probabilidad α, y si no llueve hoy, entonces lloverá mañana con una probabilidad β.

Si se dice que el proceso esta en estado cero cuando llueve y en estado 1 cuando no llueve, entonces el problema se puede realizar con una cadena de Markov de dos estados cuyas probabilidades de transición se encuentran dadas por:

p=\begin{pmatrix} \alpha & 1-\alpha\\ \beta & 1-\beta \end{pmatrix}

(4.8) Pronóstico del clima

Considere ahora que α = 0.7 y β = 0.4.
Calcule la probabilidad que lloverá en cuatro días a partir de hoy, dado que está lloviendo hoy.

Probabilidad de un paso: solo un día, de hoy a mañana es p

p=\begin{pmatrix} 0.7 & 0.3\\ 0.4 & 0.6 \end{pmatrix}

Solución

Transiciones:

Probabilidad en dos dias, pasado mañana: p2
p^{(2)}=\begin{pmatrix} 0.7 & 0.3\\ 0.4 & 0.6 \end{pmatrix} . \begin{pmatrix} 0.7 & 0.3\\ 0.4 & 0.6 \end{pmatrix}

= \begin{pmatrix} (0.7)(0.7)+(0.3)(0.4) & (0.7)(0.3)+(0.3)(0.6)\\ (0.4)(0.7)+(0.6)(0.4) & (0.4)(0.3)+(0.6)(0.6) \end{pmatrix}

= \begin{pmatrix} 0.61 & 0.39\\ 0.52 & 0.48\end{pmatrix}
Probabilidad en tres dias: p3

Probabilidades en cuatro dias: p4
p^{(4)} = p^{(2)} p^{(2)}

p^{(4)}= \begin{pmatrix} 0.61 & 0.39\\ 0.52 & 0.48 \end{pmatrix}.\begin{pmatrix} 0.61 & 0.39\\ 0.52 & 0.48 \end{pmatrix} = \begin{pmatrix} 0.5749 & 0.4251\\ 0.5668 & 0.4332 \end{pmatrix}

Probabilidad que este lloverá en cuatro días, dado que está lloviendo hoy: p(4)00= 0.5749


El cálculo de la matriz elevado a la potencia n se puede resolver con la instrucción de numpy:

np.linalg.matrix_power(p,n)


import numpy as np

# INGRESO
p = np.array([[0.7, 0.3],
              [0.4, 0.6]])
n  = 4
# PROCEDIMIENTO
pn = np.linalg.matrix_power(p,n)

# SALIDA
print(pn)


[[ 0.5749  0.4251]
 [ 0.5668  0.4332]]

Obteniendo nuevamente el resultado p(4)00= 0.5749


(4.20) Las probabilidades al límite o a largo plazo se pueden encontrar escribiendo las ecuaciones para cada πi a partir de la matriz de transición p:

p=\begin{pmatrix} \alpha & 1-\alpha \\ \beta & 1-\beta \end{pmatrix} \pi_0 = \alpha \pi_0 + \beta \pi_1 \pi_1 = (1 - \alpha)\pi_0 + (1 - \beta )\pi_1 \pi_0 + \pi_1 = 1

resolviendo con las ecuaciones numeradas como (1), (2) y (3):

usando ecuación (1)

(1-\alpha)\pi_0= \beta \pi_1 \pi_0=\frac{\beta}{1-\alpha} \pi_1

usando ecuación (3)

\frac{\beta}{1-\alpha} \pi_1 + \pi_1 =1 \frac{\beta+(1-\alpha)}{1-\alpha} \pi_1 = 1 \pi_1=\frac{1-\alpha}{1+\beta-\alpha}

usando la ecuacion (2)

\pi_0=\frac{\beta}{(1-\alpha)} \frac{1-\alpha}{(1+\beta-\alpha)} \pi_0=\frac{\beta}{1+\beta-\alpha}

Si α = 0.7 y β = 0.4 como se usaba en el ejemplo anterior, la probabilidad a largo plazo que llueva será:

π0 = 4/7 = 0.571
resultado que también se obtiene en la columna 0 llevando la matriz p(n) a un tiempo n muy grande como en el ejemplo:

import numpy as np

# INGRESO
p = np.array([[0.7,0.3],
              [0.4,0.6]])
n = 50

# PROCEDIMIENTO
pn = np.linalg.matrix_power(p,n)

# SALIDA
print(pn)

[[ 0.57142857  0.42857143]
 [ 0.57142857  0.42857143]]

Proceso pasos aleatorios-caminata aleatoria

Ejemplo: Caminata de pasos aleatorios o Random Step Process

Referencia: Leon-García. E9.14 p.500

Un contador «up-down» o «sube-baja» genera pulsos +1 ó -1. La entrada del contador está dada por Dn = 2 In-1, donde In es un proceso aleatorio tipo Bernoulli.

D_n = \begin{cases} +1 & \quad \text{, } I_n = 1\\ -1 & \quad \text{, } I_n = 0 \end{cases}

Por ejemplo Dn representaría el cambio en la posición de una partícula que se mueve a lo largo de una linea recta, y cambia entre ±1 cada unidad de tiempo. Ej: n=20, p=0.5

Caminata aleatoria

La media de Dn es:

mD(n) = E[Dn] 
    = E[ 2In -1] = 2E[In]-1
    = 2p - 1

La varianza de Dn se encuentra como:

VAR[Dn] = VAR[2In - 1]
    = 22 VAR[In]
    = 4p(1 - p)

Las probabilidades de los eventos de Dn se calculan como en el ejemplo del tema de la Binomial.


Instrucciones en Python

# Proceso caminata de pasos aleatorios
# Leon-Garcia E 9.14 p.500
# propuesta: edelros@espol.edu.ec
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats

# INGRESO
# n=int(input('cuantos aleatorios: '))
# p=float(input('probabilidad p: '))
n = 20
p = 0.5

# PROCEDIMIENTO

# inicializa vectores
pasos  = np.zeros(n, dtype=int)
camina = np.zeros(n, dtype=int)
ejex   = np.zeros(n, dtype=int)

s = 0 
for i in range(0,n):
    # genera aleatorio con binomial
    pasos[i] = 2*(stats.binom.rvs(1,p))-1
    s = s+pasos[i]
    camina[i] = s
    ejex[i]   = i

# SALIDA
# grafica pasos 
plt.subplot(211)
plt.stem(ejex,pasos)
plt.ylabel('Pasos Dn')
plt.margins(0.05)

# grafica caminata aleatoria
plt.subplot(212)
plt.stem(ejex,camina)
plt.ylabel('Caminata Sn')
plt.margins(0.05)
plt.xlabel('n')

plt.show()

Referencia: León-García 9.14 p.500-501

Procesos Discretos en tiempo

La forma mas simple de un proceso aleatorio – independiente, con secuencias identicamente distribuidas (iid).

Procesos aleatorios iid

La secuencia Xn de un proceso aleatorio iid consiste en una secuencia de variables independientes, identicamente distribuidas con cdf Fx(x), media m y varianza σ2 .

mX(n) = E[Xn] = m     para todo n

lo que indica que su media es constante.

La función de autocovarianza , si n1 ≠ n2 :

Cx(n1, n2) = E[(Xn1 - m)(Xn2 - m)] =
= E[(Xn1 - m)] E[(Xn2 - m)] = 0       

dado que Xn1 y Xn2 son variables independientes y si n1 = n2 = n:

Cx(n1, n2) = E[(Xn - m)2] = σ2 

lo que permite expresarla como:

Cx(n1, n2) = σ2 δn1n2

donde δn1n2 = 1 si n1 = n2 y 0 para cualquier otro caso, que también expresa que su autocovarianza es cero en cualquier lugar exceptuando n1 = n2.

La función de autocorrelación de un proceso iid es:

Rx(n1, n2) = Cx(n1, n2) + m2

Ejemplo: Proceso aleatorio Bernoulli

Leon-García E9.13 pdf/p.499

La secuencia In es una secuencia de variable aleatoria independiente tipo Bernoulli.
Una ejecución se muestra en a figura. Se puede interpretar como el evento que un foco falle y se reemplace en un dia n.

Proceso aleatorio bernoulli

tiene media y varianza:

m1 = p     VAR[In] = p(1-p)

permite realizar cálculos de forma muy sencilla, por ejemplo, la probabilidad que los primeros cuatro bits tengan la secuencia 1001

p[I1=1,I2=0,I3=0,I4=1] = 
= p[I1=1]p[I2=0]P[I3=0]P[I4=1]=
= p2(1-p)2

o que la probabilidad de que el segundo bit sea 0 y el septimo sea 1

P[I2=0, I7=1] = P[I2=0]P[I7=1] = p(1-p)

El código python para generar el proceso bernoulli usado es:

% matplotlib inline
# Generar numeros aleatorios con distribución bernoulli
# Leon-Garcia E9.13 Proceso aleatorioBernoulli 
# propuesta: edelros@espol.edu.ec
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats

# INGRESO
# n=int(input('cuantos aleatorios: '))
# p=float(input('probabilidad p: '))
n=20
p=0.5

# Procedimiento
pasos=np.zeros(n, dtype=int)
camina=np.zeros(n, dtype=int)

# procesa los datos
s=0
for i in range(0,n):
    pasos[i]=stats.binom.rvs(1,p)
    s=s+pasos[i]
    camina[i]=s

# SALIDA
plt.subplot(211)
plt.stem(pasos)
plt.ylabel('bernoulli In')
plt.margins(0.05)

plt.subplot(212)
plt.stem(camina)
plt.ylabel('Sn')
plt.margins(0.05)
plt.show()

Combinatorias

Referencia: León-García p.42, Gubner p.35, Ross p.10

Combinatorias es el estudio de metodos sistemáticos de conteo, las cuatro clases de problemas principales son:

  1. Muestreo ordenado con reemplazo
  2. Muestreo ordenado sin reemplazo
  3. Muestreo no ordenado sin reemplazo
  4. Muestreo no ordenado con reemplazo

Muestreo ordenado con reemplazo

Se llaman variaciones con repetición de m elementos tomados de n en n, a los diferentes grupos que pueden formarse con los m elementos dados, tomados de n en n.
Dos grupos pueden ser distintos entre si, si tienen diferentes elementos en diferente orden.

El número de posibles k-tuplas en distinto orden (x1x2x3… xk) con elementos xi de un grupo de ni elementos diferentes es:

número de k-tuplas en orden distinto = n1n2n3… nk

Ejemplo : Posibles rutas para un paquete de internet

León-García E2.15 p.42.
Una urna tiene cinco pelotas numeradas de 1 al 5. Suponga que se sacan dos pelotas de la urna con reemplazo.

– ¿Cuántos pares diferentes de se pueden obtener?

pares diferentes = 5 * 5 = 52 = 25 pares diferentes

– ¿Cuál es la probabilidad que en se repitan las pelotas?

las formas de repetir son (1,1),(2,2),(3,3),(4,4) y (5,5), en total 5 de un total de 25 pares diferentes, por lo que la probabilidad será 5/25 = 1/5 = 0.20


Muestreo ordenado sin reemplazo

Se seleccionan k elementos en sucesi{on sin reemplazo de una población A de n elementos diferentes. Con k≤n, la primera vez se pueden escoger n1=n elementos diferentes, la segunda n2=n-1, la tercera n3=n-2, … en la última nk=n-(k-1)

número de k-tuplas en orden distinto = n(n-1)(n-2)…(n-k+1)

n(n-1)(n-2)...(n-k+1) = \frac{n!}{(n-k)!}

Ejemplo :

León-García E2.17 p.43.
Una urna tiene cinco pelotas numeradas de 1 al 5. Suponga que se sacan tres pelotas sin reemplazo .

– ¿Cuántos tripletas diferentes de se pueden obtener?

tripletas diferentes = 5 * 4 * 3 = 60 formas diferentes

(5!)/(5-3)! = 5!/2! = 5*4*3*(2!)/2! =5*4*3 = 60 formas diferentes

import scipy.special as sts

sts.perm(5,3)
60.0

Muestreo no ordenado sin reemplazo

Se sacan k elementos de un grupo A de n objetos diferentes sin reemplazo, y que se escriben los resultados sin importar e orden. Sería como colocarlos en otro conjunto B, el orden deja de importar.

En el nuevo conjunto B, existen k! formas ordenadas de seleccionar los objetos, y Ckn será el valor buscado de las combinaciones de tamaño k del conjunto A de n elementos.

C_k^n k! = n(n-1)(n-2)...(n-k+1) = = \frac{n!}{(n-k)!}

que simplificando se convierte el «coeficiente binomial» y se lee «de n toma k elementos»:

C_k^n = \frac{1}{n!} \frac{k!}{(n-k)!} = \left( \begin{array}{c} n \\ k \end{array} \right)

da lo mismo escoger k elementos del conjunto A, que dejar n-k elementos en el conjunto, por lo que:

\left( \begin{array}{c} n \\ k \end{array} \right) =\left( \begin{array}{c} n \\ n-k \end{array} \right)

Ejemplo :

Gubner E 1.38 p.38.

Se requiere conformar un jurado de 12 personas seleccionados de un total de 20 jueces. ¿Cuántas formas posibles existen para conformar el jurado?. No importa el orden.

\left( \begin{array}{c} 20 \\ 12 \end{array} \right) = \frac{20!}{12!8!} = 125970
import scipy.special as sts

sts.comb(20,12,repetition=False)
125970.0

Muestreo no ordenado con reemplazo

Se toman k objetos de un grupo de n objetos diferentes con reemplazo, se escribe el resultado sin importar el orden.

\left( \begin{array}{c} n-1+k \\ k \end{array} \right) = \left( \begin{array}{c} n-1+k \\ n-1 \end{array} \right)

Ejemplo : Dispensadora de frutas

(Gubner Ej 1.38 )

En una maquina dispensadora automática se entregan manzanas, bananas y peras. Por un precio fijo, se puden obtener cinco frutas seleccionadas por el cliente.

El proceso se maneja electrónicamente con una secuencia de 7 bits que los ceros (0) representan las manzanas, bananas y peras en orden y se separan por un bit uno (1) como en el ejemplo:

0100100 son un manzana, dos bananas y dos peras.

El primer grupo de 0’s es manzanas, el segundo grupo de 0’s son bananas y el grupo final de 0’s son peras.
¿Cuántas opciones tienen los clientes?

Solución: Equivale a preguntar cuántas secuencias de 7 bits hay con cinco ceros y dos unos.

\left( \begin{array}{c} 7 \\ 5,2 \end{array} \right) = \left( \begin{array}{c} 7 \\ 5 \end{array} \right) =\left( \begin{array}{c} 7 \\ 2 \end{array} \right)
import scipy.special as sts

c1 = sts.comb(7,2)
c2 = sts.comb(7,5)

print(c1)
print(c2)
21.0
21.0

3. Eventos Independientes

Referencia: León-García p.53, Gubner p.30, Parsen p.13/pdf.34, Ross p.10

Eventos Independientes

Conocer que al ocurrir un evento B no se altera la probabilidad de otro evento A, se dice que A es independiente de B. Para lo cual se cumple que:

P[ A \cap B ] = P[A] P[B]

que implica que:

P[A|B] = P[A]

y que:

P[B|A] = P[B]

Ejemplo: Transmisión de paquetes por Routers

Gubner E1.23 p.31

Un mensaje se transmite en forma de paquete de dato desde la ciudad de Guayaquil a Daule usando los “Router1”, un enlace de fibra óptica y el “router2” mostrados en la figura. Cada router puede descartar un paquete con una probabilidad p=0.01.

¿Cuál sería la probabilidad de transmitir con éxito un paquete entre el origen y destino?

Routers Guayaquil-Daule

Un paquete se transmite con éxito si y solo si ninguno de los routers descarta el paquete.

En lenguaje de eventos se dice que: descartar un paquete por el router 1 es D1 y para el router 2 es D2.

Sea el evento A cuando el paquete se transmite con éxito, ocurre solo cuando el paquete no se descarta en ningún router.

A = D_1^c \cap D_2^c

El problema indica que D1 y D2 son eventos independientes, por lo que D1c y D2c también son independientes, entonces:

P[A] = P[D_1^c \cap D_2^c] = P[D_1^c] P[D_2^c] = [1-P[D_1][1-P[D_2]] = (1-p)^2

dado que p=0.01, entonces P[A] = (1-0.01)2 = 0.9801

otra forma de ver el problema:

D1c D1
D2c (1-p)(1-p) (1-p)p
D2 (1-p)p p2

con números es:

D1c D1 PMarginal
D2c 0.9801 0,0099 0,99
D2 0,0099 0,0001 0,01
Pmarginal 0,99 0,01 1

Ejemplo: urnas con pelotas numeradas y de color

León-García E2.31 p.54

De una urna que contiene dos pelotas negras numeradas 1 y 2, y dos blancas numeradas 3 y 4, se obtienen una pelota.

Sean los eventos en los que se obtiene :

A = {(1,negra), (2,negra)}, «una pelota negra»
B = {(2,negra), (4,blanca)}, «una pelota numerada par»
C = {(3,blanca), (4,blanca)}, «una pelota con número mayor que 2»

a) Los eventos A y B ¿son independientes?
b) Los eventos A y C ¿son independientes?

Desarrollo :
a) las probabilidades de A y B son:

P[A] = P[B] = \frac{2}{4} = \frac{1}{2} P[A \cap B] = P[\{(2,negra)\}] = \frac{1}{4}

entonces:

P[A \cap B] = \frac{1}{4} = P[A]P[B]

por lo que A y B son independientes. Otra forma de escribirlo es:

P[A|B] = \frac{P[A \cap B]}{P[B]} = \frac{P[\{(2,negra)\}]}{P[\{(2,negra), (4,blanca)\}]} = = \frac{1/4}{1/2} = \frac{1}{2}

y para P[A]:

P[A] = \frac{P[A]}{P[S]} = \frac{P[\{(1,negra), (2,negra)\}]}{P[\{(1,negra), (2,negra),(3,blanca), (4,blanca) \}]} = = \frac{1/2}{1}

las ecuaciones implican que P[A]=P[B] debido que la proporción de las salidas en S tienen como resultado que A ocurre el mismo número de veces que B. Por lo que al conocer cuando ocurre B, no se altera la probavilidad de que ocurra A.

b) Los Eventos A y C no son independientes dado que:
P[A \cap C] = P[\emptyset] = 0
P[A|C] = 0 \neq P[A] = \frac{1}{2}

A y C son mutuamente excluyentes dado que A∩C=∅, por lo que ocurra C implica que A no ha ocurrido de forma definitiva.


En general, si dos eventos tienen probabilidad diferente de cero y son mutuamente excluyentes, no pueden ser independientes.

Si fueran independientes y mutiamente excluyentes:

0=P[A∩B] =P[A]P[B]

lo que implica que al menos uno de los eventos deben tener probabilidad cero.

Probabilidad Condicional

Referencia: León-García p.47, Gubner p.27, Parsen p.41/pdf.62, Ross p.7

Dos eventos A y B, relacionados de forma que al ocurrir uno, por ejemplo B, se altera la posibilidad de que ocurra el otro, por decir A, lleva a manejar el concepto de probabilidad condicional:

P[A|B] = \frac{ P[A \cap B] }{ P[B] }, \text{para } P[B] > 0

Ejemplo :

Una empresa ensambladora de televisores en la ciudad obtiene sus partes de dos proveedores (marca1 y marca2) para reducir el riesgo falla de suministros.
Dado que el proveedor tiene relación directa con la falla de sus equipos, la empresa busca encontrar:

¿cuál proveedor entrega las partes con menor defecto?.

Desarrollo:

Si se analizaron n=1688 televisores para determinar si están buenos o dañados, se resume  que:

marca1 marca2
bueno 754 499
dañado 221 214

Observe que la suma de la primera columna es el número de partes de marca1: N[marca1].

La frecuencia relativa de las partes buenas de marca 1 es:

\frac{N[bueno,marca1]}{N[marca1]}

Para cada parte existen cuatro posibles resultados:

marca1 marca2
bueno N[bueno, marca1] N[bueno, marca2]
dañado N[dañado, marca1] N[dañado, marca2]

Observe que las frecuencias relativas de las partes buenas de la marca 1 tambien se puede escribir como el cociente de frecuencias relativas:

\frac{N[bueno,marca1]}{N[marca1]} = \frac{\frac{N[bueno,marca1]}{n} }{ \frac{N[Marca1]}{n}}

La probabilidad condicional de que se use una parte buena, sabiendo que se ha seleccionado de la marca1 se puede escribir como P[bueno|marca1]

Si A=bueno, B=marca1 y si P(marca1)>0 entonces:

P[A|B] = \frac{P[A \cap B]}{P[B]} P[A \cap B] = P[A|B]P[B]
B marca2
A P[A∩B] N[bueno, marca2]
dañado N[dañado, marca1] N[dañado, marca2]
P[B]

interseccion

Ejemplo : Sistema de Comunicación Binaria

León-García E2.26 p.50

Los sistemas de comunicación se pueden modelar de la siguiente manera: el usuario ingresa un 0 o un 1 en el sistema y se transmite la señal, luego el receptor detecta la señal transmitida y lo convierte nuevamente en un 0 ó 1.

Suponga que el usuario envia 0´s con probabilidad (1-p) y 1’s con probabilidad p y que al receptor le llegan datos errados con probabilidad ε.

Para cada i=0,1 sea Ai el evento que la «entrada fué i» y sea Bi el evento que lo «recibido en el receptor fue i».

Encuentre las probabilidades P[Ai ∩ Bi] para i=0,1 y j=0,1

canal binario diagrama

B0 B1
A0 (1-p)(1-ε) (1-p)ε
A1 p(1-ε)

p[A0 ∩ B0] = (1-p)(1-ε)

p[A0 ∩ B1] = (1-p)ε

p[A1 ∩ B0] = pε

p[A1 ∩ B1] = p(1-ε)

El diagrama de árbol para el sistema es:

canal binario árbol

Describiendo un proceso aleatorio

Distribuciones conjuntas de muestras en el tiempo

Sean [X1, X2, … , Xk ] las k variables aleatorias obtenidas del muestreo de un proceso X(t,ω) en los tiempos: [t1, t2, … , tk] se describen como:

X1 = X(t1,ω),
X2 = X(t2,ω),
… ,
Xk = X(tk,ω),

mostrada en la figura:


El comportamiento conjunto del proceso aleatorio a estos k instantes de tiempo se da por la distribución acumulada conjunta del vector de las variables aleatorias :
X1, X2, … , Xk

Las probabilidades de cualquiera de los eventos del proceso aleatorio para todos o solo algunos de los instantes de tiempo, se pueden calcular por medio de la distribucion acumulada (cdf) con los metodos para vectores de variables aleatorias.

Por lo que un proceso aleatorio o estocástico se especifica por la colección de k-ésimo orden de las funciones de distribución acumuladas conjuntas :

F_{x_1, ... , x_k}(x_1, x_2, ... , x_k)=P[X_1 ≤ x_1, X_2 ≤ x_2, ... , X_k≤ x_k]

para cualquier k y cualquier selección de instantes de tiempo t1, t2, … , tk.

Si el proceso estocástico es de valores contínuos, entonces las funciones de densidad de probabilidad a usar serán:

f_{x_1, ... , x_k}(x_1, x_2, ... , x_k) dx_1 ... dx_n = P[x_1 < X_1 ≤ x_1+dx_1, x_2 < X_2 ≤ x_2+dx_2, ... , x_k < X_k ≤ x_k+dx_1]

Si el proceso estocastico es de tipo discreto, entonces la colección de funciones de probabilidad de masa para especificar el proceso estocastico será:

p_{x_1, ... , x_k}(x_1, x_2, ... , x_k) = P[ X(t_1) = x_1, X(t_2) = x_2, ... , X(t_k) = x_k ]

Ejemplo: Variable aleatoria Bernoulli iid

Referencia: León García E9.5 pdf/p.492

Sea Xn una secuencia de una variable aleatoria independiente e identicamente distribuida(i.i.d), tipo Bernoulli con p=1/2.
La pmf conjunta para cualquier k muestras de tiempo es entonces:

P[ X1 = x1, X2 = x2, … , Xk = xk ] =
= P[ X1 = x1] P[X2 = x2], … , P[Xk = xk ]
= (1/2)k

donde xi ∈ {0,1] para todo i.

Ejemplo: Variable aleatoria Gausiana iid

Referencia: León García E9.6 pdf/p.493

Sea Xn una secuencia de una variable aleatoria independiente e identicamente distribuida (i.i.d.), tipo Gausiana con media μ=0 y varianza σ2x. La función de densidad de probabilidad (pdf) conjunta para cualquier muestra de tiempo k es entonces:

f_{x_1,x2, ...,x_k}(x_1,x2, ...,x_k)= = \frac{1}{(2\pi \sigma^2)^{k/2}}e^{-(x_1^2+x_2^2+ ... + x_k^2)/2\sigma^2}

Ejemplo: Proceso Binomial de conteo

Referencia: León García E9.7 pdf/p.493

Sea Xn una secuencia de una variable aleatoria independiente e identicamente distribuida, tipo Bernoulli con p=1/2. Sea Sn el número de 1’s en los primeros n intentos:

Sn = X1 + X2 + … + Xn para n=0,1,…

Sn es una función de n valores enteros crecientes que aumenta en valores unitarios siguiendo intervalos de tiempo aleatorios.


Instrucciones en Python

para Distribuciones conjuntas de muestras en el tiempo

# Realizaciones de un proceso aleatorio
# León-García Fig 9.1
# propuesta: edelros@espol.edu.ec
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats

# INGRESO
n = 50 # muestras
A = 10 # amplitud
k = 10 # una muestra k<n

# PROCEDIMIENTO
t = np.arange(0,n,1)
# genera variables aleatorias continuas uniformes
x1 = stats.uniform.rvs(loc=-A, scale=2*A ,size=n)
x2 = stats.uniform.rvs(loc=-A, scale=2*A ,size=n)
x3 = stats.uniform.rvs(loc=-A, scale=2*A ,size=n)

# SALIDA
print('t = ',k)
print('x1['+str(k)+']: ', x1[k])
print('x2['+str(k)+']: ', x2[k])
print('x3['+str(k)+']: ', x3[k])

# GRAFICAS
plt.suptitle('Realizaciones')

# grafica X1
plt.subplot(311)
plt.plot(t,x1)
plt.axvline(10)
plt.ylabel('x1')
plt.margins(0.05)

# grafica X2
plt.subplot(312)
plt.plot(t,x2)
plt.axvline(10)
plt.ylabel('x2')
plt.margins(0.05)

# grafica X3
plt.subplot(313)
plt.plot(t,x3)
plt.axvline(10)
plt.ylabel('x3')
plt.margins(0.05)

plt.show()

Referencia: León-García 9.1 pdf/p.492

Procesos Aleatorios

Un proceso aleatorio o proceso estocástico es una familia de variables aleatorias.

Por ejemplo, al enviar una secuencia de bits sobre un canal inalámbrico, no existe un grupo predeterminado de bits a transmitir, que para modelar se usa una secuencia infinita de variables aleatorias.

Tres realizaciones de X1, X2, … se obtienen como:

Instrucciones en Python

# secuencia de bits (trama)
# propuesta: edelros@espol.edu.ec
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats

# ingreso
n = 25 
p = 0.5

# PROCEDIMIENTO
# indice k
k  = np.arange(1, n+1)

# genera muestras de variable aleatoria con bernoulli
x1 = stats.bernoulli.rvs(p, size=n)
x2 = stats.bernoulli.rvs(p, size=n)
x3 = stats.bernoulli.rvs(p, size=n)

# SALIDA
plt.suptitle('bernoulli rango hasta n='+str(n))

# grafica X1
plt.subplot(311)
plt.stem(k,x1)
plt.ylabel('x1')
plt.margins(0.05)

# grafica X2
plt.subplot(312)
plt.stem(k,x2)
plt.ylabel('x2')
plt.margins(0.05)

# grafica X3
plt.subplot(313)
plt.stem(k,x3)
plt.ylabel('x3')
plt.margins(0.05)

plt.xlabel('k')
plt.show()

Procesos discretos en el tiempo

Un proceso aleatorio discreto en el tiempo es una familia de variables aleatorias {Xn}, donde a partir de n se define en un subgrupo de enteros.

Por ejemplo:

{Xn, n=1, 2, …}

{Xn, n=0, 1, 2, …}

{Xn, n=0, ± 1 , ± 2 …}

Recordando que las variables aleatorias son funciones definidas en un espacio muestral S, se puede pensar en Xn(ω) en dos formas:

    • Para n fijos, Xn(ω) es función de ω y por lo tanto una variable aleatoria.
    • Para ω fija, se obtiene una secuencia de números X1(ω), X2(ω), X3(ω), … . Secuencia que se denomina una realización, camino muestral, o función muestral del proceso aleatorio.

Ejemplo: Envío de bits sobre un canal con ruido

Referencia: Gubner 10.1 pdf/p.383

Enviar una secuencia de bits sobre un canal con ruido , los bits se invierten de forma independiente con probabilidad p.

Sea:

        • Xn(ω)=1 si se invierte el n-ésimo bit y
        • Xn(ω)=0 de otra forma.

entonces {Xn(ω), n= 1, 2, …} es una secuencia Bernoulli(p) i.i.d .

Tres realizaciones del ruido se reprerentan en la gráfica del ejercicio anterior. Sin embargo, el resultado de la señal Xn afectada por el Ruidon como se vería en el receptor se muestra a continuación.

# Ejercicio: Envío de bits sobre un canal con ruido
# Gubner 10.1 
# propuesta: edelros@espol.edu.ec
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats

# INGRESO
n = 25 
pcanal = 0.5
p = 0.2 # error o inversión de bit

# PROCEDIMIENTO
# muestras k
k  = np.arange(1, n+1)

# transmisor
x     = stats.bernoulli.rvs(pcanal, size=n)
# ruido del canal
ruido = stats.bernoulli.rvs(p, size=n)

# En el receptor
receptor = np.zeros(len(x), dtype = int)
for i in range(0,len(x)):
    if (ruido[i] == 0):
        receptor[i] = x[i]
    if (ruido[i] == 1):
        # invierte el bit
        if (x[i] == 1):
            receptor[i] = 0
        if (x[i] == 0):
            receptor[i] = 1

# SALIDA
plt.suptitle('Bernoulli rango hasta n='+str(n))

# trama de bits en transmisor
plt.subplot(311)
plt.stem(k,x)
plt.ylabel('x')
plt.margins(0.05)

# ruido del canal
plt.subplot(312)
plt.stem(k,ruido,markerfmt='or')
plt.ylabel('ruido')
plt.margins(0.05)

# Señal recibida en receptor
plt.subplot(313)
plt.stem(k,receptor)
plt.ylabel('receptor')
plt.margins(0.05)

plt.xlabel('k')
plt.show()

Procesos contínuos en el tiempo

Un proceso aleatorio contínuo en el tiempo es una familia de variables aleatorias {Xt} donde t esta definido en un intervalo de tiempo.

{Xt, t ≥ 0}
{Xt, 0 ≤ t ≤ T}
{Xt, -∞ ≤ t ≤ ∞}

Ejemplo: Portadora con fase aleatoria

Referencia: Gubner 10.5 pdf/p.386

En radio comunicación, una señal portadora se modela como una sinusoide con fase aleatoria. La razón para usar una fase aleatoria es que en receptor no se conoce cuando se encendió el transmisor o la distancia entre el transmisor y receptor, que son factores que afectan a la fase.

El modelo matemático para éste caso es el proceso aleatorio contínuo en el tiempo, definido por:

xt = cos(2πft + θ)

donde f es la frecuencia de la portadora y θ es una variable aleatoria uniforme [-π, π].

Tres realizaciones del proceso que dan tres valrores dirferenctes de θ y su efecto en la portadora se obtienen como:

# Gubner 10.5 Portadora con fase aleatoria
# propuesta: edelros@espol.edu.ec
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats

# ingreso
n = 5
f = 1

# PROCEDIMIENTO
# muestras ti
t = np.arange(0,n,0.1)

# genera muestras aleatorias con f: uniforme
theta = stats.uniform.rvs(loc=-np.pi, scale=2*np.pi ,size=3)

# selales desfasadas
xt0 = np.cos(2*np.pi*f*t + theta[0])
xt1 = np.cos(2*np.pi*f*t + theta[1])
xt2 = np.cos(2*np.pi*f*t + theta[2])

# SALIDA
print('theta: ',theta)

# grafica
plt.suptitle('Portadora')
# grafica x0
plt.subplot(311)
plt.plot(t,xt0)
plt.ylabel('x0')
plt.margins(0.05)

# grafica x1
plt.subplot(312)
plt.plot(t,xt1)
plt.ylabel('x1')
plt.margins(0.05)

# grafica x2
plt.subplot(313)
plt.plot(t,xt2)
plt.ylabel('x2')
plt.margins(0.05)

plt.xlabel('k')
plt.show()

Referencia: Gubner 10 pdf/p.383, León-García 9.1 pdf/p.488