• Nenhum resultado encontrado

Estatística Computacional e Simulação

N/A
N/A
Protected

Academic year: 2021

Share "Estatística Computacional e Simulação"

Copied!
67
0
0

Texto

(1)

MEIO  MSc ESTATÍSTICA e INVESTIGAÇÃO OPERACIONAL MGI  MSc GESTÃO DE INFORMAÇÃO

MAEG  MSc MATEMÁTICA APLICADA À ECONOMIA E GESTÃO

DEIO - FCUL

10 Ano - 20 Semestre - 2012/2013

Créditos: 6 ECTS; Carga Horária: 2T + 2P Maria Isabel Fraga Alves

mailto:mialves@fc.ul.pt

http://docentes.deio.fc.ul.pt/fragaalves/ Gabinete 6.4.8

(2)

Introdução

Neste capítulo abordaremos o assunto de como gerar num computador amostras "aleatórias"provenientes de uma dada distribuição.

Um vez que os programas computacionais são inerentemente determinísticos, há que tomar algum cuidado com o modo como se geram números

"aleatórios"em computador.

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

1 gerar observações de v.a.'s U1,U2, · · · i.i.duniformente distribuídasem

[0, 1]  U[0,1], ou

{1, 2, · · · , n}  U{1,2,··· ,n} ;

2 transformar as v.a.'spara construir amostras de distribuições mais complexas.

(3)

2. Geração de NPA's (Números Pseudo-Aleatórios)

2.1 Geradores de NPA's

2.2 Método de Transformação Inversa 2.3 Método de Rejeição

2.4 Métodos de Transformação 2.5 Somas e Misturas

2.1 Geradores de NPA's

Existem fundamentalmente duas classes de métodos diferentes para gerar números aleatórios (NA's):

utilizam efeitos quânticos, ruído térmico em circuitos elétricos, o calendário de decaimento radioativo, etc.

2 Números Pseudo-Aleatóriosgerados por programas computacionais, que se revelam rápidos e reproduzíveis, mas sempre de tipo determinísitco e com output aparentemente aleatório.

Em ECS consideraremos apenas os NPA's.

(4)

2. Geração de NPA's (Números Pseudo-Aleatórios)

2.1 Geradores de NPA's

2.2 Método de Transformação Inversa 2.3 Método de Rejeição

2.4 Métodos de Transformação 2.5 Somas e Misturas

2.1 Geradores de NPA's

Existem fundamentalmente duas classes de métodos diferentes para gerar números aleatórios (NA's):

1 Números aleatóriosgerados usando algo fenómeno físico de natureza aleatória, que podem ser lentos e dispendiosos; exemplos clássicos: lançamento de uma moeda ou de um dado; métodos modernos que utilizam efeitos quânticos, ruído térmico em circuitos elétricos, o calendário de decaimento radioativo, etc.

(5)

2. Geração de NPA's (Números Pseudo-Aleatórios)

2.1 Geradores de NPA's

2.2 Método de Transformação Inversa 2.3 Método de Rejeição

2.4 Métodos de Transformação 2.5 Somas e Misturas

2.1 Geradores de NPA's

Existem fundamentalmente duas classes de métodos diferentes para gerar números aleatórios (NA's):

1 Números aleatóriosgerados usando algo fenómeno físico de natureza aleatória, que podem ser lentos e dispendiosos; exemplos clássicos: lançamento de uma moeda ou de um dado; métodos modernos que utilizam efeitos quânticos, ruído térmico em circuitos elétricos, o calendário de decaimento radioativo, etc.

2 Números Pseudo-Aleatóriosgerados por programas computacionais, que se revelam rápidos e reproduzíveis, mas sempre de tipo determinísitco e com output aparentemente aleatório.

(6)

2.1 Geradores de NPA's

Existem fundamentalmente duas classes de métodos diferentes para gerar números aleatórios (NA's):

1 Números aleatóriosgerados usando algo fenómeno físico de natureza aleatória, que podem ser lentos e dispendiosos; exemplos clássicos: lançamento de uma moeda ou de um dado; métodos modernos que utilizam efeitos quânticos, ruído térmico em circuitos elétricos, o calendário de decaimento radioativo, etc.

2 Números Pseudo-Aleatóriosgerados por programas computacionais, que se revelam rápidos e reproduzíveis, mas sempre de tipo determinísitco e com output aparentemente aleatório.

(7)

Denição (1.1 - Gerador NPA)

Um gerador NPA é um algoritmo que produz como output sequências de números que podem ser usados em substituição de uma sucessão iid de verdadeiros NA's.

Tendo reconhecido que uma sequência de NPA's é cíclica, Lehmer sugeriu, em 1943, que se usasse a teoria dos números para tentar fazer esse período o mais longo possível. Hoje em dia, a quase totalidade dos geradores de NPA's baseia-se nesta ideia.

(8)

Gerador Congruencial Linear (de Lehmer)

Algoritmo: input: m > 1 (módulo), a ∈ {1, 2, · · · , m − 1} (multiplicativo) c ∈ {0, 1, · · · , m − 1} (incremento) X0∈ {0, 1, · · · , m − 1} (a semente) output: X1,X2,X3· · ·, uma sequência de NPA's 1: for n = 1, 2, 3, · · · do

2: Xn← (aXn−1+c) mod m 3: output Xn

4: end for

Observação: a expressão x congruente (y) módulo (m) signica que x é o resto da divisão inteira de y por m

(9)

A sequência gerada pelo algoritmo de Lehmar consiste nos inteiros Xn∈ {0, 1, · · · , m − 1}

O output depende fortemente dos parâmetros m, a, c, X0(seed); caso sejam

escolhidos convenientemente a sequência resultante comporta-se "semelhante"ao de uma sucessão de v.a.'s iid uniformes.

Exemplo (1.1 -m = 8, a = 5, c = 1, X0=0) n 5Xn−1+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

(10)

No R um possível script relativo à saída 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)])

(11)

Dado que cada valor Xn só depende do anterior Xn−1 a série 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 começa a repetir-se depois de m passos, no máximo - é periódico. Para ultrapassar este problema os valores típicos para m são da ordem de m = 2324 · 109.

Os valores de a e c são xados de forma a que o gerador atinja o período máximo m.

(12)

Podemos assim usar o output de um gerador congruencial como substituto para uma sequência de números aleatórios iid uniformes U{1,2,··· ,n} .

Como iremos ver a seguir, a maioria dos métodos de simulação reqquerem NPA's uniformes U[0,1] .

Podemos obter uma sucessão e NPA's {Un}n∈N em substituição de

uma sucessão iid U[0,1] fazendo

Un = Xn m

(13)

Qualidade dos NPA's

Os NPA's usados nos Packages de software como o R são mais sosticados que o método congruencial linear apresentado, mas partilham as seguintes

características (em R ver help para .Random.seed)

-a sequênci-a dos NPA's ger-ad-a depende d-a "semente"X0: diferentes

sequências obtidas de acordo com a semente; por outro lado, obtêm-se resultados reproduzíceis xando a semente num valor conhecido. A periodicidade é uma propriedade partilhada por todos os geradores computacionais. O comprimento do período é uma medidadea da qualidade dos geradores de NPA's.

outro problema dos geradores diz respeito à independência, já que Xn

depende deterministicamente de Xn−1. Existem métodos para avaliar e

quanticar este efeito.

Finalmente, uma vez que os NPA's são supostos constituior um substituição de sucessões de iid NA's, uma forma usual de testar NPA's é aplicar testes estatísticos de uniformidade e de independência às amostras geradas. Actualmente, os geradores de usados passam nestes testes.

(14)

Em R o gerador dee NPA's uniformes é orunif. A instrução

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 reproduzíveis.

(15)

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

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

> # tempo de geração

> 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");

(16)
(17)

Exemplo (1.2  Amostragem de uma população nita)

> # Lançamento de moedas

> sample(0:1, size=10,replace=T) [1] 0 1 0 0 0 0 1 1 0 1

>

> # Escolha aleatória de 8 inteiros entre 1 e 10 sem reposição > 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 aleatória de 8 inteiros entre 1 e 10 com reposição > sample(1:10, size=10,replace=T)

[1] 8 2 5 1 8 6 2 2 10 10

(18)

Exemplo (1.3  Amostragem de uma população nita)

> # permutação 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

(19)

2.2 Método de Transformação Inversa

Trata-se de um método de gerar va's usando como input os valores NPA's uniformes em [0, 1].

Teorema (2.1 - Transformação Inversa)

Seja FX uma função de distribuição (fd). Dena-se a inversa

generalizada de FX

F−1

X (u) = inf{x ∈ R|FX(x) ≥ u}, ∀u ∈ (0, 1)

e seja U ∼ U[0,1]. Dena-se X := FX−1(U). Então X tem df FX.

Demonstração.

P[X ≤ x] = P[F−1

X (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).

(20)

Algoritmo da Transformação 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) = 3x2, x ∈ [0, 1], basta notar que

para x ∈ [0, 1[, F (x) = x3 que é invertível, F−1(u) = u1/3 para

u ∈ (0, 1).

(21)

O R inclui funções para as distribuições mais usuais. Para cada modelo existem 4 funções associadas:

Modelo Descrição

rxxx random generation

dxxx density function

pxxx cumulative probability function

qxxx quantile function

Por exemplo, no modeloNormal rnorm gerador

dnorm função densidade

pnorm função de distribuição

qnorm função quantil (inversa da fd).

(22)

Algumas funções disponíveis 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

(23)

NPA's - gráco 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")

(24)
(25)

Método de TI  caso contínuo

Exemplo (2.2  continuação do Ex 2.1 )

Gerar 1000 valores do modelo f (x) = 3x2, 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)

(26)
(27)

Método de TI  Modelo exponencial

Exemplo (2.3  Modelo exponencial )

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

Se X ∼ EXP(λ) então F−1

X (u) = −λ1log (1 − u);

note-se que

U=d1 − U com U ∼ U[0,1], pelo que

x <- -log(runif(n))/lambda

(28)

Método 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 faça-se 1 gerar u do modelo U ∼ U[0,1]

(29)

Método de TI  Bernoulli(p)

Exemplo (2.4  Bernoulli(p) )

Gerar pelo Método TI 10 valores do modelo Bernoulli (p = 0.4), calcular a média e a variância.

FX(0) = 1 − p e FX(1) = 1; então FX−1(u) = 1, se u > 0.6 e FX−1(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 teórico E[X]=0.4=p [1] 0.4

> var(x) # valor teórico var[X]=0.24=(0.4)(0.6)=p(1-p) [1] 0.2526316

(30)

modelo Bernoulli(p) em R

Exemplo (2.5  Bernoulli (p) em R (continuação))

O modelo Bernoulli(p) pode ser gerado de outras formas

alternativas; por exemplo, n valores Binomial(p=0.4) são gerados através de cada uma das seguintes instruções

rbinom(n, size=1, prob=0.4)

(31)

Método de TI  modelo Geométrico(p)

Exemplo (2.6  Geométrico(p))

Usar o método TI para gerar uma amostra de n valores do modelo Geométrico(p = 1/4)

A fmp é fx(x) = (1 − p)xp, x = 0, 1, 2, · · · , e a fd é FX(x) = 1 − (1 − p)x+1.

Então, face à geração 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 dte é a função ceiling, ie, o menor inteiro maior ou igual a t.

(32)

Método de TI  modelo Geométrico(p)

> # método TI para gerar uma amostra do modelo Geométrico(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)

(33)

Método de TI  modelo Logarítmico(θ)

Exemplo (5.2  Logarítmico(θ))

Usar o método TI para gerar uma amostra de n valores do modelo Logarítmico(θ = 0.5)

Uma v.a. X tem fmp fX(x) = P[X = x] = aθ

x

x , x = 1, 2, · · · , 0 < θ < 1, a = −1/ log(1−θ). Fórmula recursiva para a fmp

fX(x + 1) = θ x

x + 1fX(x), x = 1, 2, · · · .

No entanto, para x elevado a utilização desta fórmula recursiva produz valores fX(x) = 0 para os quais FX(x) < 1.

(34)

Método de TI  modelo Logarítmico(θ)

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 necessário aumentar N. Para resolver FX(x − 1) < u ≤ FX(x)

para um dado u, é necessário contar o # de valores x para os quais FX(x − 1) < u.

Se F é um vector e ui um escalar então em R a instrução F < ui

produz um vector lógico com elementosTRUEou FALSE, e as.integer(TRUE)toma o valor 1e as.integer(FALSE)o valor0.

(35)

Método de TI  modelo Logarítmico(θ)

### function para uma amostra n do modelo logaritmico(theta) rlogarithmic <- function(n, theta) {

u <- runif(n)

N <- ceiling(-16 / log10(theta)) #dimensão 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 necessário 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

(36)

Método de TI  modelo Logarítmico(θ)

Exemplo (Continuação do ex 5.2  Logarítmico(θ))

gerar 1000 valores do modelo logaritmico(θ = 0.5) e comparar numa tabela as frequências relativas observadas com a fmp

n <- 1000 theta <- 0.5

x <- rlogarithmic(n, theta)

#calcular a fmp para a logaritmica(theta) para comparação

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

(37)

Método de TI  modelo Poisson(λ)

No modelo Poisson(λ) com fmp fX(x) = P[X = x] = e

−λλx

x! , x = 0, 1, 2, · · · , λ > 0 o método TI pode ser utilizado semelhante ao Logaritmico.

Exercício:

Para o modelo de Poisson(λ) fazer um programa semelhante ao caso anterior e comparar ainda com os NPA's Poisson gerados pelo R através da instruçãorpois().

Iremos dar a seguir um modo alternativo de geração da Poisson, através da sua relação com a Exponencial.

(38)

Método de Transformação  modelo Poisson(λ)

Proposição

Dados {Xi},i ≥ 1, NPA's exponenciais unitários independentes,

N :="maior inteiro tal que PNi=1Xi ≤ λ” é Poisson(λ).

Algoritmo de geração de NPA Poisson(λ)

Entrada: λ

1. Faça-se s = 0 e i = 1

2. Gerar ui; Calcular s := s − ln ui

3. Enquanto s ≤ λ faça-se i := i + 1 e volte-se a 2; caso contrário, continue-se.

(39)

Método de Transformação  modelo Poisson(λ)

Alternativamente podemos escrever:

Algoritmo alternativo de geração de NPA Poisson(λ)

Entrada: λ

1'. Faça-se s = 1, i = 1 e p = e−λ

2'. Gerar ui; Calcular s := s · ui

3'. Enquanto s ≥ p faça-se i := i + 1 e volte-se a 2'; caso contrário, continue-se.

Saída: N := i − 1

(40)

Método de Transformação  modelo Poisson(λ)

Em R um algoritmo mais eciente é o que se obtem do seguinte algoritmo (substituindo o loop):

Algoritmo mais eciente de geração de NPA Poisson(λ)

Entrada: λ

1. Faça-se S1 =0

2. Para i = 1, 2, · · · enquanto Si ≤1:

(a) gerar Ti ∼EXP(1λ)

(b) Seja Si =T1+ · · · +Ti

(41)

Método de Transformação  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

(42)

Exercício

Implemente em R um algoritmo para geração de n = 1000 NPA's Poisson(λ), sem usar a instruçãorpois.

Calcule a média e variância amostrais de forma a comparar com λ. Represente gracamente a fmp do modelo e o gráco de barras associado à amostra gerada.

(43)

2.3 Método de Rejeição - modelo truncado

Muitas vezes é útil trabalhar com um modelo clássico, mas truncado nas pontas, quer da direita quer da esquerda, ou apenas de um dos lados.

Denição (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[a,b](x) = F (b) − F (a)f (x) , para x ∈ [a, b].

Na denição anterior pode ser tomado um dos extremos a = −∞ ou b = +∞, produzindo modelos truncados à direita de b ou à esquerda de a, respectivamente.

(44)

Geração de um modelo truncado

Algoritmo: NPA TRUNCADO

Repita

gerar x NPA com fd F (.) até que x ∈ [a, b]

Saída: xab := x

O # médio de valores x gerados necessários para uma observação xab é

1/(F (b) − F (a)),

pelo que se revela muito útil quando o objectivo é o de cortar apenas as "pontas"do modelo original.

(45)

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 observações aceites j <- 0 # iterações

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 iterações #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")

(46)

2.3 Método de Rejeição - 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)

g(t) ≤c, ∀t : f (t) > 0.

Então é possível aplicar o Método de Rejeição para gerar a va X , a partir de Y mais fácil de gerar.

Algoritmo do Método de Rejeição (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 ;

(47)

2.3 Método de Rejeição

Note-se que na etapa 2.c) a probabilidade de ACEITAÇÃO condicional a Y é dada por P[ACEITAÇÃO|Y ] = P  U < fcg(Y )(Y )|Y  = f (Y ) cg(Y ). a Probabilidade Total para cada iteração é dada por

P[ACEITAÇÃO] = P  U < fcg(Y )(Y )  = Z R f (y) cg(y)g(y)dy = Z R f (y) c dy = 1c. De facto, a va em jogo não é mais do que

X := Y |U < fcg(Y )(Y ) , com fX(y) =

PhU < f (Y ) cg(Y )|Y = yi g(y) PhU < f (Y ) cg(Y ) i = f (y) cg(y)g(y) 1/c =f (y) por aplicação do T. Bayes; sendo

N := #{gerações de Y com fdp g necessários para obter 1 valor de gerado X }, N ∼ Geométrica(P[ACEITAÇÃO]), vindo E[N] = c,

designada porConstante de Rejeição; convém então escolherc = suptg(t)f (t) 130 / 145

(48)

2.3 Método de Rejeição

Exemplo (densidade de Epanechnikov)

Gerar NPA's provenientes da densidade de kernel de Epanechnikov dada por f (x) =3

4(1 − x2), |x| ≤ 1.

(49)

2.3 Método de Rejeição

No algoritmo geral a expressão f (y)/(cg(y)) = 3

4(1 − y2)/(3/4) = 1 − y2.

Algoritmo: NPA Epanechnikov

Repita

gerar y NPA U(-1,1) e u NPA U(0,1) independentes até que u < 1 − y2

Saída: x := y

O # médio de NPA's U(0,1) necessários para gerar 1 com fdp f é de c = 3/2.

Exercício (densidade de Epanechnikov)

Implemente em R uma function que lhe permita gerar uma amostra

(50)

2.3 Método de Rejeição

Exercício (Modelo Beta(α, β)  implementação em R)

Considere para X , o modelo Beta(α, β) = Beta(2, 2) com fdp dada por f (x) = 6x(1 − x), 0 < x < 1.

Em média, quantos NPA's U(0,1) serão necessários (que veriquem a condição) para gerar 1000 valores de uma va pelo Método da Rejeição, escolhendo para Y o modelo Uniforme(0,1)?

Insira um contador para o # de iterações que efectivamente foram necessárias quando o programa correu e compare com o valor esperado. Compare ainda pontualmente os percentis empíricos com os percentis teóricos da Beta(2,2).

Aumente o número de valores gerados para n = 10000 e comente os resultados.

(51)

2. Geração de NPA's (Números Pseudo-Aleatórios)

2.1 Geradores de NPA's

2.2 Método de Transformação Inversa 2.3 Método de Rejeição

2.4 Métodos de Transformação

2.5 Somas e Misturas

2.4 Métodos de Transformação

Muitos tipos de transformação além da Transformação Inversa podem ser aplicados para a simulação de va's. Resultados de representação distribucional são aqui importantes:

Se Z ∼ N(0, 1) e V ∼ χ (n) independentes, então T = Z

V /n ∼t − student(n)

Se U, V ∼ Unif (0, 1) independentes, então

Z1=p−2 log U cos(2πV ), Z1=p−2 log U sin(2πV )

são independentes N(0, 1) (Algoritmo Box-Muller) Se U, V ∼ Unif (0, 1) independentes, então



1 +log(1 − (1 − θ)log(V ) U )



tem distribuição Logaritmica(θ), onde bxc denota a parte inteira de x.

(52)

2. Geração de NPA's (Números Pseudo-Aleatórios)

2.1 Geradores de NPA's

2.2 Método de Transformação Inversa 2.3 Método de Rejeição

2.4 Métodos de Transformação

2.5 Somas e Misturas

2.4 Métodos de Transformação

Muitos tipos de transformação além da Transformação Inversa podem ser aplicados para a simulação de va's. Resultados de representação distribucional são aqui importantes:

Se Z ∼ N (0, 1), então V = Z2∼ χ2(1)

V /n

Se U, V ∼ Unif (0, 1) independentes, então

Z1=p−2 log U cos(2πV ), Z1=p−2 log U sin(2πV )

são independentes N(0, 1) (Algoritmo Box-Muller) Se U, V ∼ Unif (0, 1) independentes, então



1 +log(1 − (1 − θ)log(V ) U )



(53)

2. Geração de NPA's (Números Pseudo-Aleatórios)

2.1 Geradores de NPA's

2.2 Método de Transformação Inversa 2.3 Método de Rejeição

2.4 Métodos de Transformação

2.5 Somas e Misturas

2.4 Métodos de Transformação

Muitos tipos de transformação além da Transformação Inversa podem ser aplicados para a simulação de va's. Resultados de representação distribucional são aqui importantes:

Se Z ∼ N (0, 1), então V = Z2∼ χ2(1)

Se V ∼ χ2(m) e W ∼ χ2(n) independentes, então F = V /m W /n∼Fm,n

Se U, V ∼ Unif (0, 1) independentes, então

Z1=p−2 log U cos(2πV ), Z1=p−2 log U sin(2πV )

são independentes N(0, 1) (Algoritmo Box-Muller) Se U, V ∼ Unif (0, 1) independentes, então



1 +log(1 − (1 − θ)log(V ) U )



tem distribuição Logaritmica(θ), onde bxc denota a parte inteira de x.

(54)

2. Geração de NPA's (Números Pseudo-Aleatórios)

2.1 Geradores de NPA's

2.2 Método de Transformação Inversa 2.3 Método de Rejeição

2.4 Métodos de Transformação

2.5 Somas e Misturas

2.4 Métodos de Transformação

Muitos tipos de transformação além da Transformação Inversa podem ser aplicados para a simulação de va's. Resultados de representação distribucional são aqui importantes:

Se Z ∼ N (0, 1), então V = Z2∼ χ2(1) Se V ∼ χ2(m) e W ∼ χ2(n) independentes, então F = V /m W /n∼Fm,n Se Z ∼ N(0, 1) e V ∼ χ2(n) independentes, então T = Z V /n ∼t − student(n)

são independentes N(0, 1) (Algoritmo Box-Muller) Se U, V ∼ Unif (0, 1) independentes, então



1 +log(1 − (1 − θ)log(V ) U )



(55)

2. Geração de NPA's (Números Pseudo-Aleatórios)

2.1 Geradores de NPA's

2.2 Método de Transformação Inversa 2.3 Método de Rejeição

2.4 Métodos de Transformação

2.5 Somas e Misturas

2.4 Métodos de Transformação

Muitos tipos de transformação além da Transformação Inversa podem ser aplicados para a simulação de va's. Resultados de representação distribucional são aqui importantes:

Se Z ∼ N (0, 1), então V = Z2∼ χ2(1) Se V ∼ χ2(m) e W ∼ χ2(n) independentes, então F = V /m W /n∼Fm,n Se Z ∼ N(0, 1) e V ∼ χ2(n) independentes, então T = Z V /n ∼t − student(n)

Se U, V ∼ Unif (0, 1) independentes, então

Z1=p−2 log U cos(2πV ), Z1=p−2 log U sin(2πV )

são independentes N(0, 1) (Algoritmo Box-Muller)

tem distribuição Logaritmica(θ), onde bxc denota a parte inteira de x.

(56)

2.4 Métodos de Transformação

Muitos tipos de transformação além da Transformação Inversa podem ser aplicados para a simulação de va's. Resultados de representação distribucional são aqui importantes:

Se Z ∼ N (0, 1), então V = Z2∼ χ2(1) Se V ∼ χ2(m) e W ∼ χ2(n) independentes, então F = V /m W /n∼Fm,n Se Z ∼ N(0, 1) e V ∼ χ2(n) independentes, então T = Z V /n ∼t − student(n)

Se U, V ∼ Unif (0, 1) independentes, então

Z1=p−2 log U cos(2πV ), Z1=p−2 log U sin(2πV )

são independentes N(0, 1) (Algoritmo Box-Muller) Se U, V ∼ Unif (0, 1) independentes, então



1 + log(V ) log(1 − (1 − θ)U

(57)

Modelo Logarítmico  Algoritmo alternativo em R

Exercício (Modelo Logarítmico  implementação em R)

Utilize a representação distribucional anterior para o modelo Logarítmico, de forma a implementar em R um algoritmo

competitivo com o construído inicialmente, através do Método de Transformação Inversa.

Construa uma tabela de frequências relativas respectivas e ainda a função massa de probabilidade nos pontos simulados do suporte do modelo.

(58)

Métodos de Transformação - QQplot NPA's vs Beta(a,b)

Se U ∼ Gama(a, β) e V ∼ Gama(b, β) independentes, então U U+V ∼Beta(a, b) 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)

# draw the fit line on the plot # abline(myline.fit)

(59)

2.5 Somas e Misturas

Denição (5.1 - Produto de Convolução)

Sejam X1, · · · ,Xn v.a.'s independentes com fd F1, · · · ,Fn,

respectivamente. A fd da soma Pni=1Xi designa-se por produto de

convolução, e denota-se por F1∗ · · · ∗Fn. Em particular, se além de

independentes também forem igualmente distribuidas com fd F , a fd da Pni=1Xi designa-se por potência de convolução de grau n e

denota-se por F∗n X .

Por exemplo, a soma de n va's EXP(λ) independentes é uma Gama(n, λ). Diz-se que a potência de convolução de grau n da EXP(λ) é uma Gama(n, λ).

(60)

2.5 Somas e Misturas

Exemplo (distribuição χ2(ν))

Gerar n = 1000 NPA's χ2(ν)através da convolução de ν quadrados

de Normais standard; ie, se Z1, · · · ,Zν são iid N(0,1) então

V = Pν

i=1Zi2 tem uma distribuição χ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.

(61)

2.5 Somas e Misturas

n <- 1000 nu <- 2

X <- matrix(rnorm(n*nu), n, nu)^2 # matriz dos quadrados das N(0,1) # método 1: Soma por linhas da matriz anterior

y <- rowSums(X) # método 2

y <- apply(X, MARGIN=1, FUN=sum) # vector de dimensão n > mean(y) # deverá ser próximo de nu=2

[1] 2.026085

> var(y) # deverá ser próximo de 2 nu=4 [1] 4.153428

(62)

2.5 Somas e Misturas

Outro conceito por vezes erradamente confundido com o anterior é o de uma mistura de modelos.

Denição (5.2 - Modelo de Mistura)

Uma va X diz-se que é uma mistura discreta de modelos se FX(x) = k X i=1 θiFi(x), com θi >0 e k X i=1 θi =1.

Os valores θi são designados por pesos ou probabilidades da mistura.

Uma va X diz-se que é uma mistura contínua de modelos se FX(x) = Z +∞ −∞ FX |Y =y(x)fY(y)dy, com fy >0, Z +∞ −∞ fY(y)dy = 1.

(63)

2.5 Somas e Misturas

Exemplo (5.2)

Gerar n = 1000 de NPA's para cada uma das seguintes situações e comparar com os respectivos modelos teóricos.

1 X := 13X1+2 3X2, sendo X1∼N(0, 1) e X2 ∼N(3, 1) independentes. 2 fX(x) = 13fX1(x) + 2 3fX2(x), sendo X1∼N(0, 1) e X2 ∼N(3, 1). 141 / 145

(64)

2.5 Somas e Misturas

Algoritmo NPA X :=13X1+23X2 1. Gerar x1 NPA N(0,1) 2. Gerar x2 NPA N(3,1) 3. Saída: x := 1 3x1+23x2 Algoritmo NPA fX(x) = 13fX1(x) +23fX2(x) 1. Gerar um inteiro k ∈ {1, 2}, onde P(1) = 1

3 e P(2) = 23

2. Se k = 1 Saída: x NPA do modelo N(0, 1) se k = 2 Saída: x NPA do modelo N(3, 1)

(65)

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)")

(66)
(67)

2.5 Somas e Misturas

Exercício

Implementar em R programa semelhante ao anterior para o caso de NPA's com a distribuição de

X := 1 3X1+

2 3X2.

Como é que podia alterar o problema para obter uma mistura semelhante com a ilustração do Principezinho de Saint-Exupéry

??

Referências

Documentos relacionados

Assim, este estudo buscou identificar a adesão terapêutica medicamentosa em pacientes hipertensos na Unidade Básica de Saúde, bem como os fatores diretamente relacionados

[r]

◦ Os filtros FIR implementados através de estruturas não recursivas têm menor propagação de erros. ◦ Ruído de quantificação inerente a

Desta maneira, observando a figura 2A e 2C para os genótipos 6 e 8, nota-se que os valores de captura da energia luminosa (TRo/RC) são maiores que o de absorção (ABS/RC) e

Correlação entre a expressão do gene PRV-1 e de genes relacionados à apoptose em leucócitos de pacientes com Trombocitemia Essencial e Mielofibrose.... As

ABSTRACT: The toxicological effects of crude ethanolic extracts (CEE) of the seed and bark of Persea americana have been analyzed on larvae and pupae of

In: VI SEMINÁRIO NACIONAL DE PESQUISADORES DA HISTÓRIA DAS COMUNIDADES TEUTO-BRASILEIRAS (6: 2002: Santa Cruz do Sul).. BARROSO, Véra Lúcia

Os resultados obtidos nas experimentações são surpreendentemente semelhantes ao que se apresenta em cursos sobre o crescimento de espeleotemas em cavernas o que auxilia no