Geração de Números e Variáveis Aleatórias

Propaganda
7. Geração de Números e Variáveis Aleatórias
Aspectos Gerais
A geração de variáveis aleatórias em simuladores
é uma função fundamental;
Usualmente, parte-se de uma sequência de números, com distribuição uniforme entre 0 e 1;
f(x)
1
0
1
x
A partir desta sequência, é possível gerar outras
sequências com distribuições arbitrárias.
É importante destacar que uma sequência de números, gerada deterministicamente por computador é necessariamente determinística (pseudoaleatória).
Simulação de Sistemas Dinâmicos
1
7. Geração de Números e Variáveis Aleatórias
Possíveis problemas:
•Os números gerados podem não estar uniformemente distribuídos;
•Os números gerados podem assumir valores discretos, em vez de contínuos;
•Desvio na média;
•Desvio na variância;
•Podem haver variações ciclícas:
*autocorrelação entre números;
*números crescentes ou decrescentes;
*muitos números acima da média seguidos de muitos números abaixo da
média.
Características desejáveis:
•Rapidez;
•Portabilidade;
•Ciclo longo;
•Reprodutibilidade;
•Uniformidade e independência.
Simulação de Sistemas Dinâmicos
2
7. Geração de Números e Variáveis Aleatórias
Técnicas de Geração de Números Aleatórios
Método Congruencial Linear:
Xi+1 = (aXi + c) mod m
Xi
Ri =
m
i = 1, 2, ...
X0 = semente;
a = constante multiplicativa;
c = incremento;
m = módulo.
c = 0 → método congruencial multiplicativo;
c ≠ 0 → médodo congruencial misto.
A escolha dos valores de a, c, m, X0 influencia
drasticamente as propriedades estatísticas e o
comprimento do ciclo.
Simulação de Sistemas Dinâmicos
3
7. Geração de Números e Variáveis Aleatórias
A sequência Ri assume valores exclusivamente
no conjunto:
m − 1
 1 2
I = 0, , , L ,

m
m
m


Consequentemente, o valor de m determina:
•o máximo ciclo;
•a máxima densidade.
Obs.: é possível que a ciclicidade seja menor
que m, basta que algum elemento de I se repita.
É desejável portanto que m seja máximo, embora isto não garanta todas as propriedades.
Do ponto de vista prático, m é limitado pelo
máximo inteiro representável no computador.
P. ex. num computador com palavras de 32
bits, m ≤ 231 − 1 ≅ 2,15 × 109
Simulação de Sistemas Dinâmicos
4
7. Geração de Números e Variáveis Aleatórias
Em geral:
X i+k
 k
a k −1 
=  a X i +
c  mod m
a −1 

Esta fórmula permite deduzir:
m
c
2b
2b
≠0
0
primo
0
a
ciclo
outras condições
1+4j
3+8j ou
5+8j
m
m/4
c,m primos entre si
X0 impar
ver cond.
m−1
o menor inteiro j tal
que aj − 1 é divísivel
por m é j = m−1
obs.: as escolhas m = 2b e c = 0 resultam em algoritmos mais rápidos e são de uso comum.
( se m = 2b, a operação X mod m resume-se a
manter os b bits mais à direita, quando X está
codificado na base 2)
Ex.: 100010100 mod 10000 = 0100
Simulação de Sistemas Dinâmicos
5
7. Geração de Números e Variáveis Aleatórias
Exemplo: a =13; m = 26; c = 0
i
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Xi
1
13
41
21
17
29
57
37
33
45
9
53
49
61
25
5
1
Xi
2
26
18
42
34
58
50
10
2
Xi
3
39
59
63
51
23
43
47
35
7
27
31
19
55
11
15
3
Xi
4
52
36
20
4
Exemplo em uso:
a = 75; m = 231 − 1; c = 0; X0 = 123457
ciclo: m − 1
obs.: o uso de m+1 não altera muito o resultado.
Simulação de Sistemas Dinâmicos
6
7. Geração de Números e Variáveis Aleatórias
Geradores Congruenciais Lineares Combinados:
É possível obter séries com periodicidade maior
combinando vários geradores congruenciais
Sejam Xi,1, Xi,2, ..., Xi,k as saídas de k geradores
congruenciais lineares multiplicativos (c = 0), de
modo que o k-ésimo gerador, Xi,j tenha como parâmentros, aj, mj, e periodicidade mj − 1
A série:
 k

j−1

X i =  ∑ (−1) X i , j  mod(m1 − 1)
 j=1

 Xi
 m , se X i > 0
 1
Ri = 
 m1 − 1 , se X = 0
i
 m1
tem como máximo período:
(m1 − 1)(m 2 − 1) L ( m k − 1)
P=
2 k −1
Simulação de Sistemas Dinâmicos
7
7. Geração de Números e Variáveis Aleatórias
Exemplo:
Sequência prática para máquinas de 32 bits:
k = 2 (número de geradores)
m1 = 2147483563
a1 = 40014
m2 = 2147483399
a2 = 40692
X1,0 ∈ [1,2147483562]
X2,0 ∈ [1,2147483398]
O período obtido é máximo:
P = (m1 − 1)(m2 − 2)/2 ≅ 2 × 1018
Simulação de Sistemas Dinâmicos
8
7. Geração de Números e Variáveis Aleatórias
Testes para sequências de números aleatórios:
1. Testes de Frequência:
Comparam a distribuição obtida com a distribuição uniforme através do teste χ-quadrado ou
Kolmogorov-Smirnov;
2. Testes de "Corrida":
Verificam se a ocorrência de sequências crescentes e decrescentes apresentam número e
comprimento aleatórios; verifica também se
sequências acima e abaixo da média são
aleatórias
3. Testes de Autocorrelação:
Detectam se de m em m valores os números
gerados tendem a se aproximar, produzindo
uma "ciclicidade"
Simulação de Sistemas Dinâmicos
9
7. Geração de Números e Variáveis Aleatórias
4. Testes de Gap:
Verificam se os espaços entre ocorrências de
um dígito estão apropriadamente distribuídos;
5. Teste "Poker"
Verifica se a ocorrências de sequências de dígitos
estão apropriadamente distribuídos
Simulação de Sistemas Dinâmicos
10
7. Geração de Números e Variáveis Aleatórias
Geração de Variáveis Aleatórias
As técnicas propostas pressupõem a possibilidade
de gerar uma v.a. uniformemente distribuída entre
0 e 1.
Transformação Inversa:
F(x)
1
U
x
X = F−1(U)
U = F(X), portanto:
P[X ≤ x] = P[F-1(U) ≤ x] = P[U ≤ F(x)]
mas, P[U ≤ u] = u, portanto P[U ≤ F(x)] = F(x)
e finalmente: P[X ≤ x] = F(x)
Simulação de Sistemas Dinâmicos
11
7. Geração de Números e Variáveis Aleatórias
Convolução
Supõe-se que X é a soma de n v.a.'s i.i.d.:
X = Y1 + Y2 + ... + Yn
Cada v.a. Yi pode ser obtida pelo método anterior
(A densidade de probabilidade da variável aleatória
X é a convolução das densidades das v.a.'s Yi)
Este método é útil quando aproveita as propriedades estruturais da variável X
Exemplo: Distribuição de Erlang
mµ
mµ
estágio 1
estágio 2
...
mµ
estágio n
1
mµ(mµt ) m −1 e − mµt
f (t) =
(m − 1)!
Simulação de Sistemas Dinâmicos
12
7. Geração de Números e Variáveis Aleatórias
Composição
Seja X a v.a. cuja distribuição é a combinação
convexa de n distribuições:
F(x) = p1F1(x) + p2F2(x) +... + pnFn(x);
n
∑p
i =1
i
=1
X pode ser vista como a variável gerada a partir
de Fi com probabilidade pi.
1. Gera-se a var. discreta M tal que P[M = i] = pi
2. Gera-se X a partir de FM (x)
P[X ≤ x] = ΣP[X ≤ x | M = i] P[M = i] =
i
= ΣFi(x)pi = F(x)
i
Simulação de Sistemas Dinâmicos
13
7. Geração de Números e Variáveis Aleatórias
Exemplo: Distribuição hiperexponencial
µ1
p1
estágio 1
p2
µ2
estágio 2
..
.
pn
µn
estágio n
n
F( t ) = ∑ p i (1 − e −µi t )
i =1
Como no caso anterior, explora-se uma propriedade estrutural da variável X.
Simulação de Sistemas Dinâmicos
14
7. Geração de Números e Variáveis Aleatórias
Aceitação-Rejeição
Supõe-se que uma função g(x) ≥ f(x) ∀x é conhecida
(função majorante).
Supõe-se que:
∞
∫ g(x)dx = c
−∞
A função h(x) = g(x)/c é portanto um função de densidade de probabilidade.
Algoritmo:
1)Gerar uma v.a. Y com densidade h(x)
2)Gerar um número aleatório U, independente de Y
f (Y)
3)Se U ≤
então aceitar Y (isto é X=Y);
g(Y)
Senão rejeitar Y
4)Voltar ao passo 1
Simulação de Sistemas Dinâmicos
15
7. Geração de Números e Variáveis Aleatórias
f(x)
g(x)
f(x)
x
rejeitado
aceito
pontos (Y, Ug(Y))
Pode-se mostrar que P[U ≤ f(Y)/g(Y)] = 1/c
Portanto a probabilidade de aceitação é inversamente proporcional a c.
Quanto maior a probabilidade de aceitação, mais
eficiente é o algoritmo.
Simulação de Sistemas Dinâmicos
16
Download