Sie sind auf Seite 1von 67

Estatstica Computacional e Simulao

Captulo 2. Gerao de NPA's (Nmeros Pseudo-Aleatrios )

MEIO  MSc ESTATSTICA e INVESTIGAO OPERACIONAL


MGI  MSc GESTO DE INFORMAO
MAEG  MSc MATEMTICA APLICADA ECONOMIA E GESTO

DEIO - FCUL
1 Ano - 20 Semestre - 2012/2013
0

Crditos: 6 ECTS; Carga Horria: 2T + 2P

Maria Isabel Fraga Alves


mailto:mialves@fc.ul.pt
http://docentes.deio.fc.ul.pt/fragaalves/
Gabinete 6.4.8
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Introduo

Neste captulo abordaremos o assunto de como gerar num computador


amostras "aleatrias"provenientes de uma dada distribuio.
Um vez que os programas computacionais so inerentemente determinsticos,
h que tomar algum cuidado com o modo como se geram nmeros
"aleatrios"em computador.

De um modo geral essa tarefa levada a cabo em 2 etapas:


1 gerar observaes de v.a.'s U1 , U2 , i.i.d uniformente distribudas em
[0, 1]  U[0,1] , ou
{1, 2, , n}  U{1,2, ,n} ;
2 transformar as v.a.'s para construir amostras de distribuies mais
complexas.

88 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.1 Geradores de NPA's

Existem fundamentalmente duas classes de mtodos diferentes para


gerar nmeros aleatrios (NA's):

89 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.1 Geradores de NPA's

Existem fundamentalmente duas classes de mtodos diferentes para


gerar nmeros aleatrios (NA's):
1 Nmeros aleatrios gerados usando algo fenmeno fsico de natureza
aleatria, que podem ser lentos e dispendiosos; exemplos clssicos:
lanamento de uma moeda ou de um dado; mtodos modernos que
utilizam efeitos qunticos, rudo trmico em circuitos eltricos, o
calendrio de decaimento radioativo, etc.

89 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.1 Geradores de NPA's

Existem fundamentalmente duas classes de mtodos diferentes para


gerar nmeros aleatrios (NA's):
1 Nmeros aleatrios gerados usando algo fenmeno fsico de natureza
aleatria, que podem ser lentos e dispendiosos; exemplos clssicos:
lanamento de uma moeda ou de um dado; mtodos modernos que
utilizam efeitos qunticos, rudo trmico em circuitos eltricos, o
calendrio de decaimento radioativo, etc.
2 Nmeros Pseudo-Aleatrios gerados por programas computacionais, que
se revelam rpidos e reproduzveis, mas sempre de tipo determinsitco e
com output aparentemente aleatrio.

89 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.1 Geradores de NPA's

Existem fundamentalmente duas classes de mtodos diferentes para


gerar nmeros aleatrios (NA's):
1 Nmeros aleatrios gerados usando algo fenmeno fsico de natureza
aleatria, que podem ser lentos e dispendiosos; exemplos clssicos:
lanamento de uma moeda ou de um dado; mtodos modernos que
utilizam efeitos qunticos, rudo trmico em circuitos eltricos, o
calendrio de decaimento radioativo, etc.
2 Nmeros Pseudo-Aleatrios gerados por programas computacionais, que
se revelam rpidos e reproduzveis, mas sempre de tipo determinsitco e
com output aparentemente aleatrio.
Em ECS consideraremos apenas os NPA's.

89 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Denio (1.1 - Gerador NPA)


Um gerador NPA um algoritmo que produz como output
sequncias de nmeros que podem ser usados em substituio de
uma sucesso iid de verdadeiros NA's.

Tendo reconhecido que uma sequncia de NPA's cclica, Lehmer


sugeriu, em 1943, que se usasse a teoria dos nmeros para tentar
fazer esse perodo o mais longo possvel. Hoje em dia, a quase
totalidade dos geradores de NPA's baseia-se nesta ideia.

90 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Gerador Congruencial Linear (de Lehmer)

Algoritmo:
input: m > 1 (mdulo),
a {1, 2, , m 1} (multiplicativo)
c {0, 1, , m 1} (incremento)
X0 {0, 1, , m 1} (a semente)
output: X1 , X2 , X3 , uma sequncia de NPA's

1: for n = 1, 2, 3, do
2: Xn (aXn1 + c ) mod m
3: output Xn

4: end for

Observao: a expresso x congruente (y) mdulo (m) signica


que x o resto da diviso inteira de y por m

91 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

A sequncia gerada pelo algoritmo de Lehmar consiste nos inteiros


Xn {0, 1, , m 1}
O output depende fortemente dos parmetros m, a, c , X0 (seed ); caso sejam
escolhidos convenientemente a sequncia resultante comporta-se
"semelhante"ao de uma sucesso de v.a.'s iid uniformes.
Exemplo (1.1 -m = 8, a = 5, c = 1, X0 = 0)
n 5 Xn1 + 1 Xn
1 1 1
2 6 6
3 31 7
4 36 4
5 21 5
6 26 2
7 11 3
8 16 0
9 1 1
10 6 6

92 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

No R um possvel script relativo sada anterior seria:


LCG <- function(n, m, a, c, X0) {
X <- c()
Xn <- X0
for (i in 1:n) {
Xn <- (a*Xn + c) %% m
X[i] <- Xn
}
return(X)
}

m <- 8;a <- 5;c <- 1;seed <- 0;N<-10


X<-numeric();Y<-numeric()
X[1]<-seed
#X <- LCG(N, m, a, c, seed)
cat("m = 8; a = 5; c = 1; X0 = 0","\n")
cat("n 5X[n-1]+1 X[n]","\n")
for(n in 2:(N+1)) {
X[n] <- LCG(1, m, a, c, X[n-1])
Y[n]<-5*X[n-1]+1
cat(n-1, 5*X[n-1]+1, X[n],"\n")
}
X[2:(N+1)]; Y[2:(N+1)]
Congruencial <- data.frame(n=c(1:N),Yn=Y[2:(N+1)],Xn=X[2:(N+1)])
Congruencial
list(X0=seed,m=m,a=a,c=c,N=N,Y=Y[2:(N+1)],X=X[2:(N+1)])

93 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Dado que cada valor Xn s depende do anterior Xn1 a srie gerada


replicar-se- indenidamente a partir do momento que atinja um valor Xn j
gerado anteriormente.

No exemplo (1.1) X8 = X0 e consectivamente X9 = X1 , X10 = X2 e assim


sucessivamente.

Dado que Xn pode assumir apenas m valores distintos o output de um gerador


congruencial comea a repetir-se depois de m passos, no mximo - peridico.
Para ultrapassar este problema os valores tpicos para m so da ordem de
m = 232 4 109 .

Os valores de a e c so xados de forma a que o gerador atinja o perodo


mximo m.

94 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Podemos assim usar o output de um gerador congruencial como


substituto para uma sequncia de nmeros aleatrios iid uniformes
U{1,2, ,n} .

Como iremos ver a seguir, a maioria dos mtodos de simulao


reqquerem NPA's uniformes  U[0,1] .

Podemos obter uma sucesso e NPA's {Un }nN em substituio de


uma sucesso iid U[0,1] fazendo

Xn
Un =
m
onde {Xn }nN o output do gerador congruencial.

95 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Qualidade dos NPA's


Os NPA's usados nos Packages de software como o R so mais sosticados que
o mtodo congruencial linear apresentado, mas partilham as seguintes
caractersticas (em R ver help para .Random.seed) -
a sequncia dos NPA's gerada depende da "semente"X0 : diferentes
sequncias obtidas de acordo com a semente; por outro lado, obtm-se
resultados reproduzceis xando a semente num valor conhecido.
A periodicidade uma propriedade partilhada por todos os geradores
computacionais. O comprimento do perodo uma medidadea da
qualidade dos geradores de NPA's.
outro problema dos geradores diz respeito independncia, j que Xn
depende deterministicamente de Xn1 . Existem mtodos para avaliar e
quanticar este efeito.
Finalmente, uma vez que os NPA's so supostos constituior um substituio de
sucesses de iid NA's, uma forma usual de testar NPA's aplicar testes
estatsticos de uniformidade e de independncia s amostras geradas.
Actualmente, os geradores de usados passam nestes testes.
96 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Em R o gerador dee NPA's uniformes o runif.


A instruo
u <- runif(n)
produz n NPA's uniformes em [0, 1]  U[0,1] .
u <- runif(n,a,b)
produz n NPA's uniformes em [a, b]  U[a,b] .
set.seed(439) xa a "seed"ou "semente"; resultados
reproduzveis.

97 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

NPA's - Histograma vs fdp U(0,1)

> # gerar 10^6 NPA's UNIFORMES(0,1)


> n <- 10^6
> # tempo de gerao
> system.time(u<-runif(n))
user system elapsed
0.04 0.00 0.04
>
> # histograma da amostra de NPA's
> hist(u, prob = TRUE)
> # f.d.p. da UNIFORME(0,1)
> abline(h=1,col="red")
> text(0.5,0.5,"10^6 NPA's UNIFORMES - runif(10^6)")
> text(0.85,.95, "fdp U(0,1)",col="red");
98 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

NPA's - Histograma vs fdp U(0,1)

99 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Exemplo (1.2  Amostragem de uma populao nita)


> # Lanamento de moedas
> sample(0:1, size=10,replace=T)
[1] 0 1 0 0 0 0 1 1 0 1
>
> # Escolha aleatria de 8 inteiros entre 1 e 10 sem reposio
> sample(1:10, size=8,replace=F) # igual a sample(1:10, size=8)
[1] 6 5 2 10 8 3 9 7
> sample(1:10, size=8)
[1] 2 5 9 7 1 10 6 3

> # Escolha aleatria de 8 inteiros entre 1 e 10 com reposio


> sample(1:10, size=10,replace=T)
[1] 8 2 5 1 8 6 2 2 10 10

100 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Exemplo (1.3  Amostragem de uma populao nita)


> # permutao das letras de a-z
> sample(letters)
[1] "v" "r" "a" "k" "l" "j" "n" "z" "q" "x" "f" "c" "h"
[14] "w" "b" "o" "y" "d" "s" "g" "p" "m" "u" "i" "e" "t"
>
> # amostragem da multinomial
> x<- sample (1:3,size=20,replace=T,prob=c(.6,.2,.2) )
> x
[1] 1 1 1 1 3 1 1 2 1 1 3 2 1 1 3 1 3 3 1 1
> table(x)
x
1 2 3
13 2 5

101 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.2 Mtodo de Transformao Inversa


Trata-se de um mtodo de gerar va's usando como input os valores
NPA's uniformes em [0, 1].
Teorema (2.1 - Transformao Inversa)
Seja FX uma funo de distribuio (fd). Dena-se a inversa
generalizada de FX

FX1 (u ) = inf {x R|FX (x ) u }, u (0, 1)

e seja U U[0,1] . Dena-se X := FX1 (U ). Ento X tem df FX .

Demonstrao.
P [X x ] = P [FX1 (U ) x ] = P [inf {t R|FX (t ) U } x ]; ora
inf {t R|FX (t ) U } x sse FX (x ) U , pelo que
P [X x ] = P [U FX (x )] = FX (x ).
102 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Algoritmo da Transformao Inversa(INV)


input: F 1 inversa de F
usar: U U[0,1]
output: X F
1: X = F 1 (U )

Exemplo (2.1)
Para gerar a va com fdp f (x ) = 3x 2 , x [0, 1], basta notar que
para x [0, 1[, F (x ) = x 3 que invertvel, F 1 (u ) = u 1/3 para
u (0, 1).
X = U 1/3 , U U[0,1]

103 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

O R inclui funes para as distribuies mais usuais.


Para cada modelo existem 4 funes associadas:

Modelo Descrio
rxxx random generation
dxxx density function
pxxx cumulative probability function
qxxx quantile function

Por exemplo, no modelo Normal


rnorm  gerador
dnorm  funo densidade
pnorm  funo de distribuio
qnorm  funo quantil (inversa da fd).

104 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Algumas funes disponveis em R

Modelos
Uniform runif dunif punif qunif
Normal rnorm dnorm pnorm qnorm
t-Student t rt dt pt qt
Exponential rexp dexp pexp qexp
Log normal rlnorm dlnorm plnorm qlnorm
Beta rbeta dbeta pbeta qbeta
Binomial rbinom dbinom pbinom qbinom
Poisson rpois dpois ppois qpois

Para detalhes faa o comando


> ??distribution

105 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

NPA's - grco de barras vs fmp Binomial(n, p )

par(mfrow = c(2, 2))

# 5000 NPA's BINOMIAL(10,0.5)


n=5000
k=10
plot(table(rbinom(n,size=k,prob=0.5))/n, type = "h",xlim=c(0,k),ylim=c(0,0.3), lwd=8,col="grey")
title(main = list("5000 NPA's BINOMIAL(10,0.5)", cex=1.5, col="grey", font=1))

# f.m.p.BINOMIAL(10,0.5)
t<-seq(0,k,by=1)
lines(t,dbinom(t,size=k, prob=0.5),type="h", lwd=3,col="red")
text(k/2,0.28,"f.m.p.BINOMIAL(10,0.5)", cex=1, font=2,col="red")

# 5000 NPA's BINOMIAL(20,0.25)


n=5000
k=20
plot(table(rbinom(n,size=k,prob=0.25))/n, type = "h",xlim=c(0,k),ylim=c(0,0.3), lwd=8,col="grey")
title(main = list("5000 NPA's BINOMIAL(20,0.25)", cex=1.5, col="grey", font=1))

#f.m.p.BINOMIAL(20,0.25)
t<-seq(0,k,by=1)
lines(t,dbinom(t,size=k, prob=0.25),type="h", lwd=3,col="red")
text(k/2,0.28,"f.m.p.BINOMIAL(20,0.25)", cex=1, font=2,col="red")

106 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

NPA's - grco de barras vs fmp Binomial(n, p )

107 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Mtodo de TI  caso contnuo

Exemplo (2.2  continuao do Ex 2.1 )


Gerar 1000 valores do modelo f (x ) = 3x 2 , x [0, 1], representar o
histograma e sobrepor a f.d.p.

n <- 1000
u <- runif(n)
x <- u^(1/3)
# density histogram of sample
hist(x, prob = TRUE, main = bquote(f(x)==3*x^2))
y <- seq(0, 1, .01)
lines(y, 3*y^2) #density curve f(x)

108 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

109 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Mtodo de TI  Modelo exponencial

Exemplo (2.3  Modelo exponencial )


Gerar n valores do modelo FX (x ) = 1 e x , x > 0,

Se X EXP () ento FX1 (u ) = 1 log (1 u );


note-se que
d
U =1 U
com U U[0,1] , pelo que
x <- -log(runif(n))/lambda

110 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Mtodo de TI  caso discreto

Seja X v.a. discreta e

< xi 1 < xi < xi +1 <

os pontos de descontinuidade de FX (x );
para cada valor gerado de X faa-se
1 gerar u do modelo U U[0,1]
2 sair com xi se FX (xi 1 ) < u FX (xi )

111 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Mtodo de TI  Bernoulli(p )
Exemplo (2.4  Bernoulli(p ) )
Gerar pelo Mtodo TI 10 valores do modelo Bernoulli (p = 0.4),
calcular a mdia e a varincia.
FX (0) = 1 p e FX (1) = 1; ento FX1 (u ) = 1, se u > 0.6 e FX1 (u ) = 0, se u 0.6.
> p <- 0.4
> n <- 20
> u <- runif(n)
> u>0.6
[1] FALSE TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE TRUE FALSE
[13] TRUE FALSE FALSE TRUE FALSE FALSE FALSE TRUE
> x <- as.integer(u > 0.6) #(u > 0.6) is a logical vector
> x
[1] 0 1 1 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 1
> mean(x) # valor terico E[X]=0.4=p
[1] 0.4
> var(x) # valor terico var[X]=0.24=(0.4)(0.6)=p(1-p)
[1] 0.2526316

112 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

modelo Bernoulli(p ) em R

Exemplo (2.5  Bernoulli (p ) em R (continuao))


O modelo Bernoulli(p) pode ser gerado de outras formas
alternativas; por exemplo, n valores Binomial(p=0.4) so gerados
atravs de cada uma das seguintes instrues
rbinom(n, size=1, prob=0.4)

sample(c(0,1), size=n, replace = TRUE, prob=c(.6,.4))

113 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Mtodo de TI  modelo Geomtrico(p )


Exemplo (2.6  Geomtrico(p ))
Usar o mtodo TI para gerar uma amostra de n valores do modelo
Geomtrico(p = 1/4)
A fmp fx (x ) = (1 p )x p , x = 0, 1, 2, , e a fd
FX (x ) = 1 (1 p )x +1 .
Ento, face gerao do NPA uniforme u , x tal que
1 (1 p )x < u 1 (1 p )x +1
ou, equivalentemente,
x < log(1 u )/ log((1 p ) x + 1
pelo que
x + 1 = dlog(1 u )/ log(1 p )e
onde dt e a funo ceiling, ie, o menor inteiro maior ou igual a t .
114 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Mtodo de TI  modelo Geomtrico(p )


> # mtodo TI para gerar uma amostra do modelo Geomtrico(p=1/4)
> n <- 1000
> p <- 0.25
> u <- runif(n)
> k <- ceiling(log(1-u) / log(1-p)) - 1
>
> mean(k) #E[X] = (1-p)/p = .75/.25 =3
[1] 2.945
> var(k) #Var[X] = (1-p)/p2 =.75/.25^2 = 12
[1] 12.98896
> # mais eficiente
> k <- floor(log(u) / log(1-p))
> mean(k)
[1] 2.997
> var(k)
[1] 12.04103

115 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Mtodo de TI  modelo Logartmico()

Exemplo (5.2  Logartmico())


Usar o mtodo TI para gerar uma amostra de n valores do modelo
Logartmico( = 0.5)

Uma v.a. X tem fmp


a x
fX (x ) = P [X = x ] = , x = 1, 2, , 0 < < 1, a = 1/ log(1).
x
Frmula recursiva para a fmp
x
fX (x + 1) = f (x ), x = 1, 2, .
x +1 X
No entanto, para x elevado a utilizao desta frmula recursiva
produz valores fX (x ) = 0 para os quais FX (x ) < 1.
116 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Mtodo de TI  modelo Logartmico()


Alternativamente, de forma a cometer menor erro, utilizar fmp
fX (x ) = exp(log a + x log log x ).
Seguidamente, guardar num vector os valores
FX (x ), x = 1, 2, , N (elevado )
Se necessrio aumentar N . Para resolver FX (x 1) < u FX (x )
para um dado u , necessrio contar o # de valores x para os quais
FX (x 1) < u .
Se F um vector e ui um escalar ento em R a instruo F < ui
produz um vector lgico com elementos TRUE ou FALSE, e
as.integer(TRUE) toma o valor 1 e as.integer(FALSE) o
valor 0.
A soma dos valores 1 que indicam que no vector a relao TRUE
exactamente # dos x 1. 117 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Mtodo de TI  modelo Logartmico()


### function para uma amostra n do modelo logaritmico(theta)
rlogarithmic <- function(n, theta) {
u <- runif(n)
N <- ceiling(-16 / log10(theta)) #dimenso inicial do vector F(fd)
k <- 1:N
a <- -1/log(1-theta)
fk <- exp(log(a) + k * log(theta) - log(k))
Fk <- cumsum(fk)
x <- integer(n)
for (i in 1:n) {
x[i] <- as.integer(sum(u[i] > Fk))
while (x[i] == N) { # aumentar N para N+1 se necessrio
logf <- log(a) + (N+1)*log(theta) - log(N+1)
fk <- c(fk, exp(logf))
Fk <- c(Fk, Fk[N] + fk[N+1])
N <- N + 1
x[i] <- as.integer(sum(u[i] > Fk))
}
}
x + 1
}
118 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Mtodo de TI  modelo Logartmico()


Exemplo (Continuao do ex 5.2  Logartmico())
gerar 1000 valores do modelo logaritmico( = 0.5) e comparar
numa tabela as frequncias relativas observadas com a fmp
n <- 1000
theta <- 0.5
x <- rlogarithmic(n, theta)
#calcular a fmp para a logaritmica(theta) para comparao
k <- sort(unique(x)) # unique(x) remove os valores distintos de x
fmp <- -1 / log(1 - theta) * theta^k / k
freq<-table(x)/n

> round(rbind(freq, fmp),3)


1 2 3 4 5 6 7
freq 0.729 0.188 0.044 0.026 0.006 0.006 0.001
fmp 0.721 0.180 0.060 0.023 0.009 0.004 0.002

119 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Mtodo de TI  modelo Poisson()

No modelo Poisson() com fmp

e x
fX (x ) = P [X = x ] = , x = 0, 1, 2, , > 0
x!
o mtodo TI pode ser utilizado semelhante ao Logaritmico.
Exerccio:
Para o modelo de Poisson() fazer um programa semelhante ao
caso anterior e comparar ainda com os NPA's Poisson gerados pelo
R atravs da instruo rpois().

Iremos dar a seguir um modo alternativo de gerao da Poisson, atravs da sua


relao com a Exponencial.

120 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Mtodo de Transformao  modelo Poisson()

Proposio
Dados {Xi }, i 1, NPA's exponenciais unitrios independentes,
N :="maior inteiro tal que N X Poisson().
P
i =1 i

Algoritmo de gerao de NPA Poisson()


Entrada:
1. Faa-se s = 0 e i = 1
2. Gerar ui ; Calcular s := s ln ui
3. Enquanto s faa-se i := i + 1 e volte-se a 2;
caso contrrio, continue-se.
Sada: N = i 1

121 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Mtodo de Transformao  modelo Poisson()

Alternativamente podemos escrever:

Algoritmo alternativo de gerao de NPA Poisson()


Entrada:
1'. Faa-se s = 1, i = 1 e p = e
2'. Gerar ui ; Calcular s := s ui
3'. Enquanto s p faa-se i := i + 1 e volte-se a 2';
caso contrrio, continue-se.
Sada: N := i 1

122 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Mtodo de Transformao  modelo Poisson()

Em R um algoritmo mais eciente o que se obtem do seguinte


algoritmo (substituindo o loop):

Algoritmo mais eciente de gerao de NPA Poisson()


Entrada:
1. Faa-se S1 = 0
2. Para i = 1, 2, enquanto Si 1:
(a) gerar Ti EXP ( 1 )
(b) Seja Si = T1 + + Ti
Sada: N := mini (Si > 1) 1

123 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Mtodo de Transformao  modelo Poisson()

poisson<- function(n,lambda){
N<-integer(n)
for(i in 1:n) {
Tn=-log(runif(100))/lambda
Sn<-cumsum(Tn)
N[i]<- min(which(Sn>1))-1
}
return(N)
}

> X<-poisson(1000,5)
> mean(X)
[1] 5.048
> var(X)
[1] 5.060757

124 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Exerccio
Implemente em R um algoritmo para gerao de n = 1000 NPA's
Poisson(), sem usar a instruo rpois.
Calcule a mdia e varincia amostrais de forma a comparar com .
Represente gracamente a fmp do modelo e o grco de barras
associado amostra gerada.

125 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.3 Mtodo de Rejeio - modelo truncado


Muitas vezes til trabalhar com um modelo clssico, mas truncado nas
pontas, quer da direita quer da esquerda, ou apenas de um dos lados.

Denio (3.1  v.a. truncada)


Seja X uma va com fd F (.) e fdp f (.). A v.a. denida por

X[a,b] := X |a X b

designa-se v.a. truncada esquerda de a e direita de b, com fdp


f (x )
f[a,b] (x ) = , para x [a, b].
F (b) F (a)
Na denio anterior pode ser tomado um dos extremos a =
ou b = +, produzindo modelos truncados direita de b ou
esquerda de a, respectivamente.
126 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Gerao de um modelo truncado

Algoritmo: NPA TRUNCADO


Repita
gerar x NPA com fd F (.)
at que x [a, b]
Sada: xab := x

O # mdio de valores x gerados necessrios para uma observao


xab
1/(F (b) F (a)),
pelo que se revela muito til quando o objectivo o de cortar
apenas as "pontas"do modelo original.

127 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

NPA's N(0,1) truncados em [a,b]

### 1000 NPA's da NORMAL TRUNCADA em[a,b])


a=-3;b=3; n <- 1000
k <- 0 # contador para as observaes aceites
j <- 0 # iteraes
y <- numeric(n)
while (k < n) {
x <- rnorm(1) #va Normal(0,1)
j <- j + 1
if (x >= a & x<=b ) {
# aceita x
k <- k + 1
y[k] <- x
}
}
j # contador das iteraes
#HISTOGRAMA DOS NPA'S N(0,1) TRUNCADA
hist(y, prob = TRUE,main = NULL,,ylim=c(0,0.4))
text(0,0.2,"1000 NPA's NORMAL(0,1) truncados em [-3,3]")
#N(0,1) truncada em [-3,3]
t<-seq(-3,3,by=0.1)
lines(t,dnorm(t)/(pnorm(3)-pnorm(-3)),col="red")
text(2,.3, "fdp N(0,1) truncada em [-3,3]",col="red")

128 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.3 Mtodo de Rejeio - Caso Geral


Sejam X e Y v.a.'s com fdp ou fmp f e g , resp., e c uma
constante tal que
f (t )
c, t : f (t ) > 0.
g (t )
Ento possvel aplicar o Mtodo de Rejeio para gerar a va X , a
partir de Y mais fcil de gerar.
Algoritmo do Mtodo de Rejeio (REJ)
Entrada: c
1. Y fdp g tal que f (t ) cg (t ), t : f (t ) > 0.
2. Para cada valor gerado para X , fazer:
a) Gerar y com fdp g
b) Gerar u , NPA uniforme(0,1)
c) Se u < f (y )/(cg (y )) aceitar y ;
caso contrrio, rejeitar y e repetir 2.
Sada: x := y
129 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.3 Mtodo de Rejeio


Note-se que na etapa 2.c) a probabilidade de ACEITAO condicional a Y
dada por
f (Y ) f (Y )
 
P [ACEITAO|Y ] = P U < |Y = .
cg (Y ) cg (Y )
a Probabilidade Total para cada iterao dada por
f (Y ) f (y ) f (y ) 1
  Z Z
P [ACEITAO] = P U < = g (y )dy = dy = .
cg (Y ) R cg ( y ) R c c
De facto, a va em jogo no mais do que
P U < cgf ((YY)) |Y = y g (y ) f (y )
h i
f (Y ) cg (y ) g (y )
X := Y |U < , com fX (y ) = = = f (y )
cg (Y ) P U < cgf ((YY)) 1/c
h i

por aplicao do T. Bayes; sendo


N := #{geraes de Y com fdp g necessrios para obter 1 valor de gerado X },
N Geomtrica(P [ACEITAO]), vindo E [N ] = c ,
f (t )
designada por Constante de Rejeio; convm ento escolher c = supt
g (t )
130 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.3 Mtodo de Rejeio


Exemplo (densidade de Epanechnikov)
Gerar NPA's provenientes da densidade de kernel de Epanechnikov dada por
f (x ) = 34 (1 x 2 ), |x | 1.

O modelo auxiliar Y ser aqui desempenhado pela Uniforme(-1,1) e c = 3/2.

131 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.3 Mtodo de Rejeio


No algoritmo geral a expresso
f (y )/(cg (y )) = 34 (1 y 2 )/(3/4) = 1 y 2 .

Algoritmo: NPA Epanechnikov


Repita
gerar y NPA U(-1,1) e u NPA U(0,1) independentes
at que u < 1 y 2
Sada: x := y

O # mdio de NPA's U(0,1) necessrios para gerar 1 com fdp f


de c = 3/2.
Exerccio (densidade de Epanechnikov)
Implemente em R uma function que lhe permita gerar uma amostra
de dimenso n de va's com fdp f (x ) 132 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.3 Mtodo de Rejeio

Exerccio (Modelo Beta(, )  implementao em R)


Considere para X , o modelo Beta(, ) = Beta(2, 2) com fdp dada
por f (x ) = 6x (1 x ), 0 < x < 1.
Em mdia, quantos NPA's U(0,1) sero necessrios (que veriquem a
condio) para gerar 1000 valores de uma va pelo Mtodo da Rejeio,
escolhendo para Y o modelo Uniforme(0,1)?
Insira um contador para o # de iteraes que efectivamente foram
necessrias quando o programa correu e compare com o valor esperado.
Compare ainda pontualmente os percentis empricos com os percentis
tericos da Beta(2,2).
Aumente o nmero de valores gerados para n = 10000 e comente os
resultados.
Represente gracamente os histogramas associados para cada valor de n e
sobreponha a curva da fdp da Beta(2, 2)

133 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.4 Mtodos de Transformao


Muitos tipos de transformao alm da Transformao Inversa
podem ser aplicados para a simulao de va's. Resultados de
representao distribucional so aqui importantes:

134 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.4 Mtodos de Transformao


Muitos tipos de transformao alm da Transformao Inversa
podem ser aplicados para a simulao de va's. Resultados de
representao distribucional so aqui importantes:
Se Z N (0, 1), ento V = Z 2 2 (1)

134 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.4 Mtodos de Transformao


Muitos tipos de transformao alm da Transformao Inversa
podem ser aplicados para a simulao de va's. Resultados de
representao distribucional so aqui importantes:
Se Z N (0, 1), ento V = Z 2 2 (1)
V /m F
Se V 2 (m) e W 2 (n) independentes, ento F = W /n m,n

134 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.4 Mtodos de Transformao


Muitos tipos de transformao alm da Transformao Inversa
podem ser aplicados para a simulao de va's. Resultados de
representao distribucional so aqui importantes:
Se Z N (0, 1), ento V = Z 2 2 (1)
V /m F
Se V 2 (m) e W 2 (n) independentes, ento F = W /n m,n
2
Se Z N (0, 1) e V (n) independentes, ento
T = Z t student (n)
V /n

134 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.4 Mtodos de Transformao


Muitos tipos de transformao alm da Transformao Inversa
podem ser aplicados para a simulao de va's. Resultados de
representao distribucional so aqui importantes:
Se Z N (0, 1), ento V = Z 2 2 (1)
V /m F
Se V 2 (m) e W 2 (n) independentes, ento F = W /n m,n
2
Se Z N (0, 1) e V (n) independentes, ento
T = Z t student (n)
V /n
Se U , V Unif (0, 1) independentes, ento
Z1 = 2 log U cos(2 V ), Z1 = 2 log U sin(2 V )
p p

so independentes N (0, 1) (Algoritmo Box-Muller)

134 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.4 Mtodos de Transformao


Muitos tipos de transformao alm da Transformao Inversa
podem ser aplicados para a simulao de va's. Resultados de
representao distribucional so aqui importantes:
Se Z N (0, 1), ento V = Z 2 2 (1)
V /m F
Se V 2 (m) e W 2 (n) independentes, ento F = W /n m,n
2
Se Z N (0, 1) e V (n) independentes, ento
T = Z t student (n)
V /n
Se U , V Unif (0, 1) independentes, ento
Z1 = 2 log U cos(2 V ), Z1 = 2 log U sin(2 V )
p p

so independentes N (0, 1) (Algoritmo Box-Muller)


Se U , V Unif (0, 1) independentes, ento
log(V )
 
1+
log(1 (1 )U )
tem distribuio Logaritmica(), onde bx c denota a parte inteira de x .
134 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Modelo Logartmico  Algoritmo alternativo em R

Exerccio (Modelo Logartmico  implementao em R)


Utilize a representao distribucional anterior para o modelo
Logartmico, de forma a implementar em R um algoritmo
competitivo com o construdo inicialmente, atravs do Mtodo de
Transformao Inversa.
Construa uma tabela de frequncias relativas respectivas e ainda a
funo massa de probabilidade nos pontos simulados do suporte do
modelo.

135 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

Mtodos de Transformao - QQplot NPA's vs Beta(a,b)

Se U Gama(a, ) e # draw the fit line on the plot


# abline(myline.fit)
V Gama(b, ) independentes,
U Beta(a, b)
ento U + V

n <- 200
a <- 2
b <- 2
u <- rgamma(n, shape=a, rate=1)
v <- rgamma(n, shape=b, rate=1)
x <- u / (u + v)
q <- qbeta(ppoints(n), a, b)
qqplot(q, x, cex=0.5, xlab="Beta(2, 2)", ylab="amostra")
abline(0, 1,col="red")

# qqplot corresponde a um plot das eo's xi:n vs. F-1(pi)


# pi:= plotting positions
# x <-sort(x)
# plot(q,x,type = "p")
# myline.fit<- lm(q~x)

OBS: ppoints(n) uma funo do R que calcula o vector de n


plotting positions p[i] = (i - 3/8) / (n + 1/4).
136 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.5 Somas e Misturas

Denio (5.1 - Produto de Convoluo)


Sejam X1 , , Xn v.a.'s independentes com fd F1 , , Fn ,
respectivamente. A fd da soma ni=1 Xi designa-se por produto de
P
convoluo, e denota-se por F1 Fn . Em particular, se alm de
independentes tambm forem igualmente distribuidas com fd F , a
fd da ni=1 Xi designa-se por potncia de convoluo de grau n e
P
n
denota-se por FX .

Por exemplo, a soma de n va's EXP() independentes uma


Gama(n, ). Diz-se que a potncia de convoluo de grau n da
EXP() uma Gama(n, ).

137 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.5 Somas e Misturas

Exemplo (distribuio 2 ())


Gerar n = 1000 NPA's 2 () atravs da convoluo de quadrados
de Normais
P standard; ie, se Z1 , , Z so iid N(0,1) ento
V = i =1 Zi tem uma distribuio 2 ().
2

1 Matriz Z (n ) com n va's N(0,1)


2 Matriz X de elementos dados pelo quadrado cada elemento da
Matriz Z
3 Calcular as somas por linha, da matriz anterior.
4 Sair como vector das somas por linha.
Se Y 2 (), tem-se E [Y ] = e Var [Y ] = 2 , e poder-se-
comparar com os valores empricos respectivos. Este exemplo,
servir tambm para introduzir a instruo apply em R.
138 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.5 Somas e Misturas

n <- 1000
nu <- 2
X <- matrix(rnorm(n*nu), n, nu)^2 # matriz dos quadrados das N(0,1)
# mtodo 1: Soma por linhas da matriz anterior
y <- rowSums(X)
# mtodo 2
y <- apply(X, MARGIN=1, FUN=sum) # vector de dimenso n

> mean(y) # dever ser prximo de nu=2


[1] 2.026085
> var(y) # dever ser prximo de 2 nu=4
[1] 4.153428

139 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.5 Somas e Misturas


Outro conceito por vezes erradamente confundido com o anterior
o de uma mistura de modelos.
Denio (5.2 - Modelo de Mistura)
Uma va X diz-se que uma mistura discreta de modelos se
k k
FX (x ) = i Fi (x ), com i > 0 e
X X
i = 1.
i =1 i =1
Os valores i so designados por pesos ou probabilidades da mistura.
Uma va X diz-se que uma mistura contnua de modelos se
Z + Z +
F X (x ) = FX |Y =y (x )fY (y )dy , com fy > 0, fY (y )dy = 1.

fy designada por funo de mistura.

140 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.5 Somas e Misturas

Exemplo (5.2)
Gerar n = 1000 de NPA's para cada uma das seguintes situaes e
comparar com os respectivos modelos tericos.
1

1 2
X := X1 + X2 ,
3 3
sendo X1 N (0, 1) e X2 N (3, 1) independentes.
2

1 2
fX (x ) = fX1 (x ) + fX2 (x ),
3 3
sendo X1 N (0, 1) e X2 N (3, 1).

141 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.5 Somas e Misturas

Algoritmo NPA X := 13 X1 + 23 X2
1. Gerar x1 NPA N(0,1)
2. Gerar x2 NPA N(3,1)
3. Sada: x := 13 x1 + 23 x2

Algoritmo NPA fX (x ) = 13 fX1 (x ) + 23 fX2 (x )


1. Gerar um inteiro k {1, 2}, onde P (1) = 31 e P (2) = 2
3

2. Se k = 1 Sada: x NPA do modelo N (0, 1)


se k = 2 Sada: x NPA do modelo N (3, 1)

142 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.5 Somas e Misturas

### MISTURA DE 2 NORMAIS #########


n <- 1000
mu<-c(0,3)
k <- sample(1:2, size=n, replace=TRUE, prob=c(1/3,2/3))
m <- mu[k] # vector dim=n (mu_k1,...,mu_kn), elementos mu[1]=0 ou mu[2]=3
x <- rnorm(n, m, 1)

par(mfrow = c(2, 2))


# plot da densidade da mistura dos NPA's
plot(density(x),xlim=c(-6,6),ylim=c(0,.5),
lwd=3,xlab="x",main="",col="grey20")
text(1.9,0.05,"1000 NPA's mistura",col="grey20")
# fdp N(0,1)e N(3,1)
for (i in 1:2)
lines(density(rnorm(n, mu[i], 1)),lty=2)
text(-2.5,.3, "fdp N(0,1)")
text(4.5,.3, "fdp N(3,1)")
# fx=1/3 N(0,1) + 2/3 N(3,1)
t<-seq(-6,6,by=0.1)
lines(t,dnorm(t,0,1)/3+2*dnorm(t,3,1)/3,lwd=1,col="red")
text(0,.45, "fdp mistura fx=1/3 N(0,1) + 2/3 N(3,1)",col="red")
#HISTOGRAMA DOS NPA'S MISTURA 1/3 N(0,1) + 2/3 N(3,1)
hist(x, prob = TRUE,main = NULL,ylim=c(0,0.4),col="grey20")
text(0,0.38, " HISTOGRAMA")
text(0,0.32,"1000 NPA's mistura 1/3 N(0,1) + 2/3 N(3,1)")

143 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.5 Somas e Misturas

144 / 145
2.1 Geradores de NPA's
2.2 Mtodo de Transformao Inversa
2. Gerao de NPA's (Nmeros Pseudo-Aleatrios) 2.3 Mtodo de Rejeio
2.4 Mtodos de Transformao
2.5 Somas e Misturas

2.5 Somas e Misturas


Exerccio
Implementar em R programa semelhante ao anterior para o caso de
NPA's com a distribuio de
1 2
X := X1 + X2 .
3 3
Como que podia alterar o problema para obter uma mistura
semelhante com a ilustrao do Principezinho de Saint-Exupry

145 / 145

Das könnte Ihnen auch gefallen