36
20 de Febrero de 2007 1 Generación de variables  aleatorias

Clase Practica1-Generaci Aleatorias

Embed Size (px)

Citation preview

20 de Febrero de 2007 1

Generación de variables aleatorias

20 de Febrero de 2007 2

ÍNDICE

Definición de simulación.Generación de variables aleatorias:✔ Generación de número aleatorios✔ Método de la función inversa✔ Otros métodos:

✔ Composición✔ Convolución✔ Transformaciones conocidas

✔ Generación de secuenciasComprobación de resultadosBibliografía 

20 de Febrero de 2007 3

DEFINICIÓN DE SIMULACIÓN

SIMULACIÓN:  "Experimentar  con  modelos  matemáticos  en  un computador".Esquema general de la simulación:

En este curso cubriremos los tres aspectosNotar  que,  al  trabajar  en  computador,  siempre  trabajaremos  con secuencias discretas (muestras, en todo caso, de señales continuas)

Análisis de resultados

Sistema

Generación de señales de entrada

Modelo matemático del sistema

Análisis de resultados

Experimentación/Medida

Simulación

20 de Febrero de 2007 4

GENERACIÓN DE VARIABLES ALEATORIAS

Muchos  modelos  de  sistemas  reales  contienen  elementos  que precisan o admiten un modelado estadístico:✔ Sistemas de comunicaciones: ruido, desvanecimiento, ...✔ Sistemas  de  conmutación:  llegadas  de  usuarios  al  sistema, 

duración de servicios, ...✔ Sistemas sensores: proceso de detección, proceso de medida, ...✔ ...Modelado toma forma definiendo:✔ Variables  aleatorias  que  rigen  ciertos  comportamientos  del 

sistema✔ Procesos  estocásticos  para  modelar  variación  de  entradas  en  el 

tiempo.Se  deben  definir  métodos  para  generar  muestras  de  variables aleatorias y muestras de procesos estocásticos.

20 de Febrero de 2007 5

GENERACIÓN DE VARIABLES ALEATORIAS (II)

Esquema general de generación de variables aleatorias y muestras de procesos estocásticos:

{Ui}:  Conjunto  de  números  generados  en  el  computador,  que siguen una distribución uniforme entre 0 y 1, independientes.{xi}: Conjunto de números que pueden verse como:✔ Muestras de una determinada variable aleatoria✔ Muestras  de  un  proceso  estocástico  en  distintos  instantes  de 

tiempo

Generación de números 

pseudoaleatorios

Transformación X=f(U)

{Ui} {xi}

20 de Febrero de 2007 6

GENERACIÓN DE NUMEROS ALEATORIOS

Números  aleatorios:  los  que  generan  variables  aleatorias  con distribución uniforme entre 0 y 1.Importante: Poder reproducir exactamente el mismo experimento:✔ Detectar casos singulares✔ Comparar sistemas similares bajo condiciones idénticas.Objetivo:  ✔ U(0,1)✔ Secuencia de números independientes linealmente: Incorrelados✔ Secuencia reproducible a partir de pocos datos✔ Coste computacional reducido

20 de Febrero de 2007 7

GENERACIÓN DE NUMEROS ALEATORIOS (II)

Existen  varias  familias  de  métodos  de  generación  de  números aleatorios.Aquí  explicaremos  el  funcionamiento  de  los  más  usuales:  tipo congruencial lineal.Fórmula:Genera una secuencia de enteros {z

i} como:

zi=(a zi­1 + c) mod m✔ m es el módulo✔ a es el multiplicador✔ c es el incremento✔ m>0 , m>a , m>c El número aleatorio entre 0 y 1 se obtiene como:

Ui=z

i/m

20 de Febrero de 2007 8

GENERACIÓN DE NUMEROS ALEATORIOS (III)

Propiedades:✔ Ecuación  recursiva:  con  un  valor  inicial  (zo)  se  define  la 

secuencia  completa.  A  este  valor  se  el  denomina  semilla aleatoria. 

✔ Como  máximo  se  pueden  conseguir  m  números  aleatorios distintos.

✔ Tiene comportamiento cíclico. Longitud del ciclo como máximo m, depende de z0. 

✔ ¿Que pasa si z0=0? Selección de z0 puede ser importante.✔ No puede salir cualquier número, solo los de la forma z/m.✔ Dependencia fuertemente no lineal  Ejemplo: función rand de MATLAB 4:

zi=(77 zi­1) mod(231­1)

20 de Febrero de 2007 9

GENERACIÓN DE NUMEROS ALEATORIOS (IV)

Otros métodos, con carácter general, mantienen misma estructura: ✔ Ecuación  recursivas,  reproducibles  a  partir  de  valor  inicial 

seleccionable. ✔ Dependencias no lineales => lineales implican correlación entre 

muestras.✔ Tienen comportamiento cíclico. 

20 de Febrero de 2007 10

GENERACIÓN DE VARIABLES ALEATORIAS

Sabemos  generar  U(0,1).  Aquí  generalizaremos  para  conseguir muestras que:✔ Sigan una distribución deseada (función de distribución FX(x) o 

densidad de probabilidad fX(x)). ✔ Sean independientes (linealmente). 

Como debe ser f(U) para conseguir la distribución deseada

Generación de números 

pseudoaleatorios

Transformación X=f(U)

{Ui} {xi}

20 de Febrero de 2007 11

MÉTODO DE LA FUNCIÓN INVERSA

Método para funciones continuas:f(U)=FX

­1(U)Demostración de su validez:

✔ Definimos Y=f(U) ✔ Queremos calcular FY(y)=P(Y≤y)✔ FX(.) es monótona creciente => P(Y≤y)=P(FX(Y)≤FX(y))✔ FY(y)=P(FX(f(U))≤FX(y))✔ FY(y)=P(FX(FX

­1(U))≤FX(y))✔ FY(y)=P(U≤FX(y))✔ Como  U  es  una  variable  aleatoria  uniforme,  si  0<p<1 

P(U≤p)=p.✔ Por tanto FY(y)=FX(y)

20 de Febrero de 2007 12

MÉTODO DE LA FUNCIÓN INVERSA (II)

1

0

FX(X)U

fU(U)

fX(X)

X

20 de Febrero de 2007 13

MÉTODO DE LA FUNCIÓN INVERSA (III)

Generación completa de una muestra de una variable aleatoria: ✔ Se genera un numero aleatorio ui con un generador de números 

aleatorios.✔ Se transforma utilizando xi=FX

­1(ui) Propiedades del método:

✔ Si  podemos  asumir  que  los  números  aleatorios  son independientes,  las  muestras  de  las  variables  aleatorias transformadas también serán independientes

✔ General, vale para cualquier distribución.✔ Problema: Generar FX

­1(U) 

20 de Febrero de 2007 14

MÉTODO DE LA FUNCIÓN INVERSA (IV)

Extensión a variables aleatorias discretas: ✔ Solo  los  puntos  xk  tienen  una  cierta  probabilidad  de  aparecer 

(p(xk)).✔

Al fin y al cabo, son distribuciones como cualquier otraVeamos gráficamente 

FX x =P X≤ x=∑x i≤ x

p x i

20 de Febrero de 2007 15

MÉTODO DE LA FUNCIÓN INVERSA (V)

1

0

FX(X)U

fU(U)

fX(X)

X

20 de Febrero de 2007 16

MÉTODO DE LA FUNCIÓN INVERSA (VI)

Lo que cambia es el método de generación:Generación  completa  de  una  muestra  de  una  variable  aleatoria discreta: 

✔ Se genera un numero aleatorio ui con un generador de números aleatorios.

✔ Se transforma seleccionando el menor xk tal que ui<F(xk).Implementación práctica: Ordenar xk,  ir  recorriendo hasta que  se cumpla la anterior condición, devolver xi=xk. Generalización a distribuciones mixtas es inmediata.

20 de Febrero de 2007 17

EJEMPLOS

Generación  de  muestras  que  siguen  una  distribución exponencial:✔ fX(x)=1/c exp(­x/c) para valores positivos de x. ✔ FX(x)=1­exp(­x/c)  ✔ f(u)=FX

­1(u)= ­ c ln(1­u)✔ MATLAB: >>x=­c*log(1­rand(1,1));Generación de muestras que siguen una distribución discreta:✔ p(1)=1/3, p(2)=1/2, p(4)=1/6 ✔ MATLAB:

>>u=rand(1,1)>>if(u<1/3) x=1;>>else if(u<5/3) x=2;>>else x=4;

20 de Febrero de 2007 18

OTROS MÉTODOS 

Problema del método anterior es sintetizar FX­1(U).

En ocasiones, mas sencillo emplear propiedades de distribuciones. Ejemplos:✔ Composición✔ Convolución✔ Transformaciones conocidas

20 de Febrero de 2007 19

COMPOSICIÓN 

Método típico para generar distribuciones multimodales:fX(X)=p1fX1(X)+p2fX2(X)+p3fX3(X)+ ...+pNfXN(X)

Si una distribución es mezcla estadística de otras, por que no:✔ Generar  una  variable  aleatoria  discreta  coherente  con  la 

probabilidad de cada modo✔ Seleccionar el modo resultante✔ Generar  la  variable  aleatoria  con  la  distribución  asociada  al 

modo.

20 de Febrero de 2007 20

COMPOSICIÓN (II)

Ejemplo: distribución de Laplace fX(X)=1/(2c) exp(­|x|/c) ✔ Puede  verse  como  composición  de  dos  exponenciales,  una 

positiva y otra negativa✔ Generando  dos  números  aleatorios  u1  y  u2  se  puede  calcular 

decidiendo  con  el  primero  el  signo  (equiprobable)  y  con  el segundo el módulo (exponencial).

✔ MATLAB:if rand(1,1)<0.5

x=c*log(1­rand(1,1));else

x=­c*log(1­rand(1,1));

20 de Febrero de 2007 21

CONVOLUCIÓN

En otras ocasiones, se sabe que una variable aleatoria es resultado de la suma de varias otras variables. Si dos variables aleatorias (X e Y) son independientes, la función densidad  de  probabilidad  se  la  suma  Z=X+Y  puede  demostrarse (ISA) que es: fZ(z)=fX(z)*fY(z) => de hay el nombre del método.Si sabemos que Z cumple esta propiedad, por que no:✔ Generar  muestras  (en  el  ejemplo  xi  e  yi)  de  las  variables 

aleatorias originales (X e Y en el ejemplo) utilizando el método que sea preciso.

✔ Sumarlas (en el ejemplo, zi=xi+yi)

20 de Febrero de 2007 22

CONVOLUCIÓN (II)

Ejemplo 1: m­Erlang que es la suma de m exponenciales.✔ MATLAB:

x=0;for i=1:m

x=x­c/m *log(1­rand(1,1));end

20 de Febrero de 2007 23

CONVOLUCIÓN (III)

Ejemplo 2: Síntesis de gaussianas como suma de uniformes ✔ Teorema de límite central.✔ Sumando suficientes uniformes, tenderemos a una gaussiana.✔ Método clásico usa 12 => resultado: N(6,1)

20 de Febrero de 2007 24

TRANSFORMACIONES CONOCIDAS 

En ocasiones, se conocen relaciones entre variables aleatorias que permiten transformar unas en otras.Ejemplo clásico: Generación de variables aleatorias gaussianas ✔ Propiedad  conocida:  Si  tenemos  dos  variables  aleatorias 

gaussianas X e Y (media nula y varianza igual):✔ ¿Cual es la distribución de |X+jY|?✔ ¿La de M=|X+jY|2 ? ✔ ¿Y la de F=arg(X+jY)?✔ ¿Hay dependencia entre M y F? 

✔ Generar  variables  aleatorias  exponencial  y  uniforme  no  es complicado => ya hemos visto como

20 de Febrero de 2007 25

TRANSFORMACIONES CONOCIDAS (II)

A partir de dos variables aleatorias, una exponencial (M) y la otra uniforme  entre  0  y  1  (F),  se  pueden  generar  dos  gaussianas independientes utilizando las siguientes transformaciones:

El método completo quedará:✔ Generar dos variables aleatorias uniformes (u1 y u2).✔ Utilizar la siguiente transformación:

Resultado:  pareja  de  dos  muestras  de  una  gaussiana  (N(0,1))), independientes entre si

X=M cos2FY=M sen 2F

x=−2 lnu1 cos2u2

Y=−2 ln u1 sen 2 u2

20 de Febrero de 2007 26

TRANSFORMACIONES CONOCIDAS (III)

Ejemplo  2:  ¿Como  modificar  media  y  varianza  de    una  variable aleatoria?✔ Traslación  de  la  media:  Y=X+m  =>  aplicar  sobre  muestras 

generadas de X (comprobar que E{Y}=E{X}+m): yi=xi+m  

✔ Modificación de la varianza: Recordar que Y= a X implica que Var(Y)=a2  Var(X). Aplicar de forma equivalente a las muestras generadas de X: 

yi=a xi ✔ Traslación de la media y modificación de la varianza conjuntas: 

¿Que pasa con media y varianza si Y=a X+m? Pensar antes de ir a la práctica.

20 de Febrero de 2007 27

GENERACIÓN DE SECUENCIAS

De entre todos los procesos aleatorios, nos vamos a quedar con los estacionarios. Existen métodos para otras familias, pero no son de interés en este curso.OBJETIVO:  Generar  un  proceso  estocástico  (discreto)  con función densidad de probabilidad ( o distribución) y correlación (o espectro) arbitrarias.✔ Problema sin solución general.✔ En general, incluso cuando es posible, sintetizar adecuadamente 

el proceso es difícil✔ Vamos  a  exponer  un  método  de  generación  lo  más  genérico 

posible 

20 de Febrero de 2007 28

GENERACIÓN DE SECUENCIAS (II)

¿Como generar procesos gaussianos con una cierta correlación?Recordar de ISA:✔ Si tenemos un ruido blanco gaussiano✔ Pasamos por un filtro con respuesta en frecuencia H(f)✔ Espectro del ruido coloreado: |H(f)|2✔ Distribución sigue siendo gaussiana.Este es el fundamento de la generación de secuencias correladas:

SY(f)=|H(f)|2

RY[n]=ℱ­1{|H(f)|2}

 Generación degaussianas

 H(f)x[n] y[n]

20 de Febrero de 2007 29

GENERACIÓN DE SECUENCIAS (III)

Tratemos de generalizar ahora a otras distribuciones:¿Que pasa si:

?✔ Espectro: |H(f)|2✔ Pero distribución se modifica: cada salida es resultado de sumas 

ponderadas de entradas ✔ Efecto sumamente difícil de controlar

 Generación devariables aleatorias

 H(f)x[n] y[n]

20 de Febrero de 2007 30

GENERACIÓN DE SECUENCIAS (IV)

Cambiemos ahora el método:¿Que pasa si :

?✔ Z=f(Y): No linealidad sin memoria.✔ Distribución  es  una  gaussiana  tras  pasar  por  la  transformación 

f(Y)  =>  predecible  =>  controlando  f(Y)  podemos  generar  la distribución deseada.

✔ Espectro, al pasar por no  linealidad,  se distorsiona  (y por  tanto correlación).  También  es  predecible  esta  distorsión  => controlando  H(f),  para  una  f(Y)  dada,  se  puede  controlar espectro de la salida.

 Generación degaussianas

 H(f)x[n] y[n] f(Y) z[n]=f(y[n])

20 de Febrero de 2007 31

GENERACIÓN DE SECUENCIAS (V)

¿Como calcular f(Y)?: Puede hacerse en dos etapas:✔ Convertir gaussiana en uniforme: al  igual que FX

­1(.)  sirve para transformar  una  uniforme  en  una  distribución,  FX(.)  sirve  para transformar esa distribución en uniforme.

✔ Convertir  uniforme  en  la  distribución  deseada  (método  de  la función inversa):

✔ f(Y)=FZ­1(FY(Y))

20 de Febrero de 2007 32

GENERACIÓN DE SECUENCIAS (VI)

¿Como calcular H(f)?: ✔ Autocorrelación antes de pasar por no linealidad: R'(n)✔ Función densidad de probabilidad conjunta de dos muestras (u y 

v) de la variable aleatoria y[n] separadas n muestras:

✔ Autocorrelación a la salida (z[n]):

✔ A  partir  de  autocorrelación  =>|H(f)|2=ℱ{R'[n]}.  Usar  métodos de diseño de filtros digitales. 

g u , v ,R 'n=1

2π1−R 'nexp −

12u2

v2−2R 'n uv

R n =∫−∞

∫−∞

f u ⋅f v ⋅g u , v , R ' n ⋅du⋅dv

20 de Febrero de 2007 33

GENERACIÓN DE SECUENCIAS (V)

Relación R'(n)=función(R(n))  complicada de  resolver en general. En  introducción  teórica  a  la  práctica  se  da  resuelta  para  algunos casos de distribuciones.En introducción teórica también se propone un método de síntesis de filtros a partir de R(n) (usando la DFT).

20 de Febrero de 2007 34

COMPROBACIÓN DE RESULTADOS

En  la  práctica  se  van  a  generar  un  conjunto  de  muestras  de variables aleatorias y de procesos estocásticos.Hay que validar los resultados.Para  ello  utilizaremos  un  conjunto  de  funciones  de  MATLAB, aplicándolas  sobre  los  resultados  obtenidos  para  estimar parámetros  de  las  variable  aleatorias  y  procesos  estocásticos generados.En prácticas posteriores veremos que es lo que hacen internamente estas funciones.

20 de Febrero de 2007 35

COMPROBACIÓN DE RESULTADOS (II)

Habrá que utilizar las siguientes funciones de MATLAB:✔ mean: media✔ std: desviación típica (raiz cuadrada de la varianza)✔ xcorr:  correlación  cruzada  (¿como  la  usaría  para  calcular 

autocorrelación?)✔ psd: densidad espectral de potencia de una señal ✔ hist: Histograma (recordar de LSCM)

20 de Febrero de 2007 36

RESUMEN

Generación de números 

pseudoaleatorios

Transformaciones X=f(U)

{Ui} {xi}Análisis de resultados

Requisitos:­Distribución­Espectro/Autocorrelación