24
Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos Fogo Seja X uma v.a. contínua, então X tem distribuição uniforme no intervalo (a, b), b a, , se a probabilidade de ocorrência de X em subintervalos de mesmos tamanhos, contidos em (a, b), for constante. Considere um ponto qualquer ) , ( 0 b a x e sejam os intervalos: ) , ( ) , ( b a k k e ) , ( ) , ( b a , então, se X tem distribuição uniforme(a, b): ) , ( ) , ( 0 0 x P k k x P . A função de distribuição de probabilidade (fdp) e função de distribuição, ou função distribuição acumulada (fda) de X, são dadas por: Função distribuição de probabilidade (fdp) Função de distribuição (fda) b x b x a a b a x x f , 0 , 1 , 0 ) ( b x b x a a b a x a x x F , 1 , , 0 ) ( Por definição, a função de distribuição (fda) é dada por dt t f x F x R ) ( ) ( e, no caso da uniforme em ) , ( b a temos: ) , ( , 1 ) ( ) ( b a x a b a x dt a b dt t f x F x a x a . Notação: se X tem distribuição uniforme no intervalo ) , ( b a , usamos a seguinte notação: X ~ ) , ( b a U ou X ~ ) , ( b a uniforme .

Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

Embed Size (px)

Citation preview

Page 1: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme

Prof. José Carlos Fogo

Seja X uma v.a. contínua, então X tem distribuição uniforme no intervalo (a, b), ba, ℝ, se a

probabilidade de ocorrência de X em subintervalos de mesmos tamanhos, contidos em (a, b), for constante.

Considere um ponto qualquer ),(0 bax e sejam os intervalos:

),(),( bakk e ),(),( ba ,

então, se X tem distribuição uniforme(a, b):

),(),( 00 xPkkxP .

A função de distribuição de probabilidade (fdp) e função de distribuição, ou função distribuição

acumulada (fda) de X, são dadas por:

Função distribuição de probabilidade (fdp) Função de distribuição (fda)

bx

bxaab

ax

xf

,0

,1

,0

)(

bx

bxaab

axax

xF

,1

,

,0

)(

Por definição, a função de distribuição (fda) é dada por dttfxF

xR

)()( e, no caso da uniforme em

),( ba temos:

),(,1

)()( baxab

axdt

abdttfxF

x

a

x

a

.

Notação: se X tem distribuição uniforme no intervalo ),( ba , usamos a seguinte notação:

X ~ ),( baU ou X ~ ),( bauniforme .

Page 2: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

A distribuição uniforme(0, 1).

Caso especial da uniforme em ),( ba quando 0a e 1b , tem função de distribuição de

probabilidade e função de distribuição dadas por:

Função distribuição de probabilidade (fdp) Função de distribuição (fda)

10

101

0,0

)(

x

x

x

xf

11

10

0,0

)(

x

xx

x

xF

Notação: X ~ )1,0(U .

A distribuição )1,0(uniforme é muito importante na geração de valores pseudoaleatórios pois ela

servirá de base para a geração de todas as demais distribuições de probabilidade.

Se 0 ≤ u ≤ 1 é um valor obtido a partir de um gerador de números pseudoaleatórios, então u segue uma

distribuição uniforme no intervalo (0, 1) e,

uuFuXP )( .

Logo, com técnicas apropriadas, geramos a distribuição de probabilidade de qualquer v.a. X, a partir da

geração de u.

Page 3: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

Gerando de distribuições discretas

Caso 1: a distribuição de Bernoulli(p) – (gerando um sucesso)

Se pretendemos simular a ocorrência de um fenômeno que aparece em uma população numa proporção

p ( 0 ≤ p ≤ 1), então, geramos um valor u ~ )1,0(U , e se ),0( pu dizemos que geramos um sucesso,

caso contrário, foi gerado um fracasso.

Note que gerar sucesso ou fracasso equivale na geração de uma v.a. de Bernoulli com parâmetro p, em

que, p = P(sucesso).

Como o intervalo ),0( p está contido em )1,0( , podemos gerar um sucesso com qualquer intervalo de

tamanho p que também esteja contido em )1,0( . Por exemplo, seja o intervalo:

)1,0(),( pkk ,

então, se o valor gerado ),( pkku , foi gerado um sucesso.

Código em R para a geração de ensaios de Bernoulli com probabilidade de sucesso p:

# Bernoulli(p)

#

# m = número de amostras

# p = probab. de sucesso

#########################

# 1a. situação: gerando sucesso no intervalo (0, p)

####################################################

bernoulli.1 <- function(m,p){

x <- rep(NA,m)

for(i in 1:m){

k <- 0

if(runif(1)<=p) k <- 1

x[i] <- k

}

return(x)

}

# verificando

##############

m <- 1000

pr <- 0.65

y <- bernoulli.1(m,pr)

mean(y)

var(y)

pr*(1-pr)

Page 4: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

# 2a. situação: gerando sucesso no intervalo (p0, p0 + p)

#########################################################

bernoulli.2 <- function(m,p){

po <- runif(1)

while(po+p > 1) po <- runif(1)

x <- rep(NA,m)

for(i in 1:m){

k <- 0

u <- runif(1)

if(u>=po & u<po+p) k <- 1

x[i] <- k

}

return(list(x=x,intervalo=c(po,p+po)))

}

# verificando

##############

m <- 1000

pr <- 0.36

y <- bernoulli.2(m,pr)

y$intervalo

mean(y$x)

var(y$x)

pr*(1-pr)

Page 5: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

Caso 2: a distribuição de binomial(n, p)

Para a geração de uma v.a. binomial(n, p), devemos gerar n v.a.´s de Bernoulli (ou ensaios) e contar

quantos sucessos ocorrem nesses n ensaios.

Código em R para a geração de m amostras binomiais com parâmetros n e p:

# binomial(n,p)

#

# m = número de amostras

# n = ensaios de Bernoulli

# p = probabilidade de sucesso

#################################

# 1a. situação

###############

binomial.1 <- function(m,n,p){

x <- rep(NA,m)

for(i in 1:m){

k <- runif(n)

v <- which(k <= p)

x[i]<-length(v)}

return(x)

}

# verificando

##############

m <- 1000

n <- 10

p <- 2/3

b1 <- binomial.1(m,n,p)

mean(b1)/n

mean(b1)

var(b1)

# 2a. situação: modo simplificado

##################################

binomial <- function(m,n,p){

x <- rep(NA,m)

for(i in 1:m)x[i]<-length(which(runif(n)<=p))

return(x)

}

Page 6: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

# verificando

##############

m <- 1000

n <- 8

p <- 0.62

b2 <- binomial(m,n,p)

mean(b2)/n

mean(b2)

var(b2)

Page 7: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

Caso 3: a distribuição binomial negativa, BN(r, p)

Para a geração de uma v.a. BN(r, p), devemos gerar v.a.´s de Bernoulli e contar os fracassos até a

ocorrência do r-ésimo sucesso.

Obs: a v.a. binomial negativa pode, ainda, ser definida como o número de ensaios até o r-ésimo sucesso.

Nesse caso, devemos contar os ensaios e não apenas os fracassos.

Código em R para a geração de m amostras binomiais negativas com parâmetros r e p:

# binomial negativa: BN(r,p)

# (contando fracassos)

#

# m = número de amostras

# r = número de sucessos

# p = probab. de sucesso

#############################

b.neg <- function(m,r,p){

x <- rep(NA,m)

for(i in 1:m){

f <- 0

s <- 0

while(s < r){

k <- runif(1)

while(k > p){

f <- f+1

k <- runif(1)

}

s <- s+1

}

x[i] <- f

}

return(x)

}

# verificando

##############

m <- 1000

r <- 3

p <- 0.25

bn <- b.neg(m,r,p)

mean(bn)

var(bn)

Page 8: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

Caso 4: a distribuição Poisson(λ)

Para a geração de uma v.a. Poisson(λ), vamos explorar uma relação entre existente entre as distribuições

exponencial e Poisson.

Considere um evento qualquer como por exemplo chegadas de pessoas numa fila de banco, decolagens

de aviões num aeroporto, recebimentos de chamadas numa central telefônica ou até mesmo defeitos na

superfície de um tecido. Considere, ainda, que a taxa de ocorrência deste evento por unidade de tempo, é λ.

Se definirmos uma v.a. T para quantificar o tempo “entre duas ocorrências sucessivas” deste evento,

então, T terá uma distribuição exponencial com parâmetro λ, ou seja,

T ~ exponencial(λ).

Por outro lado, se definirmos uma v.a. X que conta o número de ocorrências do evento num intervalo de

tempo fixo (igual à unidade de tempo), X terá uma distribuição de Poisson com o mesmo parâmetro λ

X ~ Poisson(λ).

Obs: em muitas situações a distribuição de Poisson considera intervalos de tempos Δt. Nessas situações, o

parâmetro da distribuição será dado por λΔt.

Exemplo 1: Se o tempo entre chegadas de clientes na fila de um banco tem distribuição exponencial com

taxa λ = 5 chegadas/minuto, ou seja, T ~ exponencial(5), então, a v.a. que conta o número de pessoas que

chegam na fila a cada intervalo de um minuto tem distribuição de Poisson(5).

Desta forma, a v.a. que conta o número de pessoas que chegam na fila:

i) a cada intervalo Δt = 3 minuto, tem distribuição de Poisson(5·3), ou seja, Poisson(15);

ii) a cada intervalo Δt = 24 segundos, tem distribuição de Poisson(2).

Então, para a geração de uma v.a. Poisson(λ), devemos seguir os seguintes passos:

i) definir o intervalo de tempo Δt para contagem dos eventos da Poisson e fixar o limite superior do

intervalo com o valor Δt ;

ii) inicializar o relógio (normalmente com o tempo 0);

iii) inicializar o contador;

iv) gerar t da distribuição exponencial(λ) pelo processo da transformação inversa e incrementar o

relógio fazendo: relógio = relógio + t ;

v) repetir (iv), acumulando a contagem, até o relógio ultrapassar o limite superior do intervalo;

vi) incrementar o limite superior do intervalo com Δt , para avançar para o próximo intervalo;

vii) repetir os passos (iii) a (v) até completar o número de amostras desejadas.

Page 9: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

Código em R para a geração de m amostras de Poisson com parâmetro λ:

# Poisson(lamb)

#

# m = número de amostras

# lamb = taxa de ocorrência

############################

gera.poisson <- function(m,lamb){

x <- rep(NA,m)

tempo <- -log(1-runif(1))/lamb

dt <- 1

for(i in 1:m){

cont <- 0

while(tempo <= dt){

cont <- cont+1

t <- -log(1-runif(1))/lamb

tempo <- tempo+t

}

x[i] <- cont

dt <- dt+1 }

return(x) }

# verificando

##############

m <- 1000

lamb <- 2.5

poi <- gera.poisson(m,lamb)

mean(poi)

var(poi)

Page 10: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

Geração de distribuições contínuas.

O processo anterior é apropriado para a geração de variáveis aleatórias discretas, especialmente

binomiais.

Para o caso contínuo, há uma relação funcional entre a função de distribuição F(x) (fda) de uma v.a.

com a distribuição )1,0(uniforme que permite a geração de amostras de qualquer distribuição contínua de

probabilidade.

A geração de v.a’s contínuas é feita com a aplicação de técnicas apropriadas que exploram esta relação,

dentre as quais destacamos: transformação inversa, relações entre v.a’s (somas e funções) e

envelopamento.

Caso 1: A técnica da transformação inversa

Teorema: Seja uma v.a. X com função distribuição de probabilidade )(xf . Então a sua função de

distribuição acumulada )(xF segue uma distribuição )1,0(uniforme , ou seja,

F(x) ~ )1,0(uniforme .

Desta forma, se gerarmos um valor 0 ≤ u ≤ 1, podemos obter uma amostra de X a partir da

transformação inversa:

seja u ~ )1,0(uniforme ;

então, )(1 uFx tem distribuição )(xF .

Nota: Para a utilização do método da transformação inversa, a fda F(x), da v.a. X, precisa ser determinada

algebricamente. Nos casos em que não é possível se determinar F(x) devemos utilizar outra técnica para a

geração de valores de X.

Exemplo 2: Seja uma v.a. X com função distribuição de probabilidade exponencial(λ) cuja )(xf é da forma

.0,0,e)( xxf x

Então, a sua função distribuição acumulada é dada por

.e1)(

e)(

0

x

t

x

xF

dtxF

Para gerar uma amostra de valores com distribuição exponencial(λ) utilizamos o seguinte procedimento:

a) gerar u ~ )1,0(U ;

b) fazer )(xFu , ou seja, xu e1 ;

Page 11: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

c) determinar o valor de x pela transformação inversa:

)1ln( ux .

Desta forma, teremos x ~ exponencial(λ).

Assumindo λ = 2, xxf 2e2)( e xxF 2e1)( .

Então, gerando u ~ )1,0(U , 2

)1ln( ux

tem distribuição exponencial(2).

Caso 2: Relação entre variáveis

Podemos utilizar a relação entre v.a.´s, tais como somas ou funções para a geração de algumas variáveis

aleatórias cujas F(x) não podem ser determinadas algebricamente ou não permitem a obtenção da inversa

)(1 F .

A seguir vamos apresentar alguns casos que exploram estas relações:

i) geração de v.a gama(α, λ), cujo parâmetro α é um valor inteiro.

Seja X uma v.a. com distribuição gama com parâmetros α e λ, ou seja X ~ ),( gama , então sua fdp é

dada por:

xxxf

e)( 1

, x ≥ 0, α > 0, λ > 0,

em que )( é a função gama, sendo que

0

1 e)( dxx x .

Resultado 1: seja a v.a. X1 com distribuição ),( 1 gama e a v.a. X2 com distribuição ),( 2 gama então,

asoma X1 + X2 tem distribuição ),( 21 gama .

Resultado 2: a distribuição exponencial(λ), é um caso especial da gama para α = 1, ou seja:

exponencial(λ) ≡ gama(1, λ).

Resultado 3: sejam X1, X2, . . . , Xn v.a.´s independentes e identicamente distribuídas (iid) segundo uma

exponencial(λ), então, a soma:

n

i

iXS1

,

tem distribuição gama com parâmetros n e λ, ou seja: S ~ ),( ngama .

Para gerar uma v.a. ),( ngama , com n inteiro, basta gerar n valores da exponencial(λ) e somá-los.

ii) geração de v.a normal(μ, σ2), em que μ é a média da distribuição e σ

2 é a sua variância.

Seja X uma v.a. com distribuição normal com parâmetros μ e σ2, ou seja X ~ normal(μ, σ

2), então sua

fdp é dada por:

Page 12: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

2

2

2

)(exp

2

1)(

xxf , − < x < , − < μ < , σ > 0.

Resultado 1: Seja X ~ normal(μ, σ2) e seja a variável padronizada

XZ , então Z tem distribuição

normal(0, 1), ou normal padrão. Z é um caso especial da normal(μ, σ2) quando μ = 0 e σ

2 = 1 e sua fdp é:

2/2

e2

1)( zzf

, − < z < .

Resultado 2, transformação Box-Muller: sejam v.a.´s U1 e U2 com distribuição )1,0(uniforme , então, as v.a.´s

Z1 e Z2 , resultantes das transformações

)ln(2)2cos( 121 UUZ

)ln(2)2sen( 122 UUZ ,

são independentes com distribuição )1,0(normal .

Desta forma, gerando u1 e u2 da )1,0(uniforme , a partir da transformação de Box-Muller, obtemos duas

amostras, z1 e z2, da normal(0, 1).

E, para gerar uma v.a. normal(μ, σ2), utilizamos a relação inversa da padronização da normal: se Z tem

distribuição normal(0, 1), então, ZX tem distribuição normal(μ, σ2).

iii) geração de v.a quiquadrado com ν graus de liberdade, 2

.

Seja X uma v.a. com distribuição quiquadrado com ν graus de liberdade, ou seja X ~ 2 , então sua fdp

é dada por:

2/12/ e

2/2

1)( xxxf

, x > 0 e ν > 0.

Resultado 1: A distribuição quiquadrado com ν graus de liberdade é um caso especial da gama(a, b), quando

2/a e 2/1b , ou seja, )2/1,2/(2 gama .

Resultado 2: Seja X ~ normal(0, 1), então 2XY tem distribuição quiquadrado com ν = 1 grau de liberdade,

ou seja: Y ~ 21 e sua fdp é dada por:

2/12/1 e

2/12

1)( yyxf

, y > 0.

Resultado 3: Do resultado 1 da distribuição gama, se X1, X2, . . . , Xk são v.a.´s independentes e identicamente

distribuídas21 , então a soma

k

i

iXS1

tem distribuição quiquadrado com k graus de liberdade: S ~ 2k .

Então, para gerar uma v.a. quiquadrado com k graus de liberdade (k inteiro), basta gerar k valores 21 da

relação da quiquadrado com a gama (resultado 1) ou com a normal (resultado 2) e somá-las.

Page 13: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

Caso 3: O método do envelopamento

Considere que desejamos gerar valores de uma distribuição de probabilidade f(x) e que não é possível

utilizar nenhum os métodos anteriores. Uma possibilidade seria utilizar o método do envelopamento.

Para a aplicação do envelopamento precisamos de uma função g(x), tal que: xxfxg )()( .

Os passos para gerar de um valor de f(x) pelo método do envelopamento são:

i) definir um intervalo (a, b) tal que 1)( b

a

dxxf ;

ii) encontrar uma função g(x) tal que ),(),()( baxxfxg .

Uma possibilidade (não muito prática) é considerar a função g(x) = m, em que )](max[ xfm ,

num processo chamado envelopamento uniforme (ver exemplo);

iii) gerar u1 ~ ),( baU e u2 ~ )](,0[ 1ugU ;

se u2 > f(u1), então, o valor u1 é descartado;

se u2 ≤ f(u1), então, u1 é um valor de f(x) e,

o processo é repetido até que o total de amostras de f(x) seja obtido.

Exemplo 3: Gerar uma amostra aleatória de uma v.a. X com distribuição de Cauchy pelo método do

envelopamento uniforme.

A fdp de X, dada pela linha vermelha, é: )1(

1)(

2xxf

, − < x < ;

O intervalo (a, b) foi definido como (−5, 5);

O ponto máximo de f(x) ocorre em x = 0, sendo é igual a m = 0.31831;

A função g(x), linha azul, é dada por: g(x) = m = 0.31831 (constante).

No exemplo apresentado pela Figura 1, o valor u1 foi gerado de uma uniforme(−5, 5) e o valor u2 de

uma uniforme(0, m), formando o ponto identificado como P.

Como f(u1) < u2, então o valor u1 (atual) deve ser descartado, um novo par (u1, u2) deve ser gerado e o

processo repetido até a obtenção da amostra completa da Cauchy.

Observe que, com o envelope uniforme uma quantidade muito grande de pontos será descartada, como

podemos observar pela região não pintada na figura, entre as linhas vermelha e azul.

Figura 1: Método do envelopamento para a distribuição de Cauchy com envelope uniforme.

Page 14: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

Avaliando geradores pseudoaleatórios

A avaliação dos geradores pseudoaleatórios é feita de maneira exaustiva, segundo diferentes critérios e

teste, desenvolvidos especialmente para tal.

Um “bom” gerador deve passar por todos esses critérios e testes para garantir que os valores gerados

atendem aos requisitos de “aleatoriedade” exigidos para sua aplicação em pesquisas científicas avançadas.

Nesta disciplina vamos apresentar dois testes elementares para a verificação da “aderência” de uma

amostra à uma distribuição de probabilidade: o teste quiquadrado de Pearson e o teste de Kolmogorov-

Smirnov. Estes testes não devem ser vistos em hipótese alguma como testes para a avaliação dos geradores,

mas podem servir para uma rápida verificação se os dados gerados seguem, de fato, a distribuição de

probabilidade desejada.

Caso 1: o teste de quiquadrado de Pearson

Considere uma v.a. X com função distribuição de probabilidade discretizada em k classes, sendo que a

probabilidade de ocorrência de X em cada classe é igual a pi, i = 1, 2, . . ., k, em que 11

k

i

ip .

Classes de X pi

classe 1 p1

classe 2 p2

classe 3 p3

⁞ ⁞

classe k pk

soma 1

Obs: Para o caso de X ser uma v.a. contínua, as classes são intervalos na imagem de X, contidos em R,

normalmente do mesmo tamanho e, para o caso discreto, as classes são os valores possíveis de X.

A seguir apresentaremos a aplicação do teste quiquadrado de Pearson para o caso discreto.

i) o teste quiquadrado de Pearson para o caso discreto:

Seja uma v.a.discreta X assumindo k valores distintos, definidos segundo uma distribuição discreta p(x).

Considere uma amostra de X, de tamanho n, obtida através de um gerador pseudoaleatório cujas

frequências observadas oi , i = 1, 2, . . . , k, são apresentadas na tabela.

Valores de X frequências observadas

(oi)

x1 o1

x2 o2

x3 o3

⁞ ⁞

xk ok

soma n

Tendo sido observadas as frequências o1, o2, o3, . . ., ok , podemos considerar que a distribuição de

probabilidade de X é p(x)?

Page 15: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

Para responder a esta pergunta vamos comparar as frequências observadas o1, o2, o3, . . ., ok com as

frequências esperadas (ou teóricas) caso a distribuição de X seja, de fato, p(x).

As frequências esperadas dos valores de X serão calculadas a partir das suas probabilidades de

ocorrências

kipxXPxp iii ,2,1,)()(

e serão dadas por: kinpe ii ,2,1, , conforme mostra a tabela:

Valores de X Probabilidade de

ocorrência

frequências esperadas

segundo p(x)

x1 p1 e1 = np1

x2 p2 e2 = np2

x3 p3 e3 = np3

⁞ ⁞ ⁞

xk pk ek = npk

soma 1 n

Desta forma, podemos concluir pela “aderência” da amostra à distribuição de probabilidade p(x) a partir

da proximidade das frequências esperadas e observadas (ver tabela abaixo):

se os valores oi estiverem muito afastados de ei , então, teremos uma evidência de que a

distribuição de X não é p(x);

por outro lado, se os valores oi estiverem próximos (o suficiente) de ei , então, a evidência será a

favor de p(x), ou seja, a evidência será de que a distribuição de probabilidade de X pode ser p(x).

Valores de X frequências observadas

(oi)

frequências esperadas

segundo p(x)

x1 o1 e1

x2 o2 e2

x3 o3 e3

⁞ ⁞ ⁞

xk ok ek

soma n n

A avaliação da distância entre as frequências observadas e esperadas pode ser feita pela medida X2 de

Pearson, definida por:

k

i i

ii

e

eo

1

22 )(

X .

Valores elevados de X2 serão evidência de que a distribuição de probabilidade de X não é p(x), enquanto

que, valores baixos, serão evidência de que p(x) pode ser a distribuição de probabilidade de X.

Como a medida X2 de Pearson tem distribuição de probabilidade quiquadrado com k − 1 graus de

liberdade, ou seja, X2 ~

21k , podemos comparar o seu valor calculado a partir da amostra com um valor

tabelado da distribuição 2

1k . Normalmente utiliza-se a tabela para um nível de significância de 5% (0.05).

Page 16: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

Assim, o teste quiquadrado de Pearson será definido por:

se 2X ≤ valor tabelado a 5% da distribuição 21k há evidência suficiente na amostra para

concluirmos que a distribuição de

probabilidade de X pode ser p(x).

se 2X > valor tabelado a 5% da distribuição 21k a amostra nos dá evidência de que a

distribuição de probabilidade de X não

é p(x).

Obs: o teste acima foi apresentado de maneira simplificada, para um nível de significância de 0.05, apenas

para atender o escopo da disciplina.

Exemplo 3: Considere n = 100 valores gerados segundo uma distribuição binomial(8, 0.62). Tendo

observado esses 100 valores, podemos concluir que os mesmos seguem a distribuição de probabilidade

proposta?

Ou seja, se n é uma amostra de uma v.a. X, a distribuição de X pode ser considerada como sendo uma

binomial(8, 0.62)?

Como X ~ binomial(8, 0.62), então X {0, 1, 2, 3, 4, 5, 6, 7, 8} e as probabilidades de ocorrência dos

valores de X é dada por:

.8,,1,0,)62.01()62.0(8

)(8

i

xx

i

ii xx

xXPp ii

A tabela com os valores observados e esperados segundo a binomial(8, 0.62) é apresentada abaixo:

xi oi pi ei = n pi

0 1 0.00043 0.04

1 1 0.00568 0.6

2 3 0.03241 3.2

3 9 0.10575 10.6

4 21 0.21567 21.6

5 34 0.28151 28.2

6 19 0.22965 23.0

7 12 0.10706 10.7

8 0 0.02183 2.2

Totais 100 0.99999 100.1

Assim, a estatística do teste quiquadrado de Pearson é calculada por:

X2 = 23.0400 + 0.2667 + 0.0125 + 0.2415 + 0.01667 + 1.1929 + 0.6957 + 0.1579 + 2.2000

X2 = 27.8239

Como temos k = 9 valores possíveis para X, o valor da distribuição quiquadrado com k – 1 = 8 graus de

liberdade, para um nível de significância 0.05 (5%), é igual a 15.507.

Portanto, como X2 = 27.8239 > 15.507 , há evidência na amostra para concluirmos que a distribuição de

probabilidade dos valores gerados não é a binomial(8, 0.62).

Page 17: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

Com o Exemplo 3 não podemos concluir que o gerador utilizado não é bom. O que ocorreu foi que,

tendo havido uma observação numa categoria com probabilidade muito baixa (no caso a categoria x = 0), o

resultado final acabou sendo afetado, pois, pelo cálculo do X 2

, a parcela referente a esta categoria foi

dividida por um valor esperado muito pequeno (0.04), gerando uma parcela muito elevada (23.04), que por si

só ultrapassa o valor de comparação tabelado. Vamos apresentar um segundo exemplo onde não ocorre essa

Exemplo 4: Considere, ainda, n = 100 valores gerados pela binomial(8, 0.62), utilizando a semente 909090.

Podemos concluir que os dados gerados são, de fato, uma amostra da binomial(8, 0.62)?

Como X ~ binomial(8, 0.62), então X {0, 1, 2, 3, 4, 5, 6, 7, 8} e as probabilidades de ocorrência dos

valores de X é dada por:

.8,,1,0,)62.01()62.0(8

)(8

i

xx

i

ii xx

xXPp ii

A tabela com os valores observados e esperados é apresentada abaixo:

xi oi pi ei = n pi

0 0 0.00043 0.04

1 1 0.00568 0.6

2 2 0.03241 3.2

3 12 0.10575 10.6

4 20 0.21567 21.6

5 33 0.28151 28.2

6 15 0.22965 23.0

7 13 0.10706 10.7

8 4 0.02183 2.2

Totais 100 0.99999 100.1

Assim, a estatística do teste quiquadrado de Pearson é calculada por:

X2 = 0.040 + 0.267 + 0.450 + 0.185 + 0.119 + 0.817 + 2.783 + 0.494 + 1.473

X2 = 6.628

Com k = 9 categorias, valor de comparação , para um nível de significância 0.05 (5%), é igual a 15.507.

Portanto, como X2 = 6.628 < 15.507 , há evidência na amostra para concluirmos que a distribuição de

probabilidade dos valores gerados pode ser a binomial(8, 0.62).

Page 18: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

Exemplo 5: Como exemplo de um modelo contínuo vamos avaliar se os dados obtidos de um gerador

pseudoaleatório construído para a disciplina podem ser considerados como vindos de uma U(0,1)

Vamos considerar o seguinte gerador congruencial misto: M = 102816, a = 1429 e b = 1691.

Inicialmente, vamos avaliar se o gerador tem período máximo:

i) M = 25 3

3 7 17 e b = 19 89, portanto M e b são primos entre si;

ii) a = (22 3 7 17) + 1

Como o valor de M não é excessivamente elevado, podemos, ainda, fazer o teste pelo programa criado

para este fim.

Obs: o programa, apresentado na sequência, NÃO DEVE ser utilizado para avaliar geradores cujo valor de

M seja muito elevado, pois a operação poderá demorar em demasia.

Saída do programa para a avaliação do gerador:

z$per # período

[1] 102816

z$aviso

[1] "Período completo"

tempo # tempo (s) da avaliação

elapsed 127.22

Como foi constatado, o gerador é de período completo, tendo a avaliação demorado 17.22 segundos, ou

seja, aproximadamente 2 minutos e 7 segundos (num notebook Toshiba Satellite Pro, centrinho core 2 duo).

Vamos, então, gerar uma amostra de tamanho n = 120 observações com o “nosso” gerador com uma

semente , y0 = 999. Para isso, vamos utilizar o segundo programa: gerador.eca().

Para as contagens das frequências observadas utilizamos o comando hist() com as opções

plot=FALSE e rigth=FALSE.

Neste caso, como a escala é contínua, vamos trabalhar com intervalos de classes de amplitude h = 0.10.

Além disso, as probabilidades de ocorrências nas classes serão todas iguais a p0 = 0.10 e as frequências

esperadas, todas iguais a ei = 120/10 = 12. Os resultados, já com as frequências observadas oi, são

apresentados na tabela abaixo.

Tabela com os valores observados e esperados segundo a U(0, 1).

xi oi ei = n pi

0.0 |-- 0.1 13 12

0.1 |-- 0.2 13 12

0.2 |-- 0.3 11 12

0.3 |-- 0.4 13 12

0.4 |-- 0.5 16 12

0.5 |-- 0.6 12 12

0.6 |-- 0.7 11 12

0.7 |-- 0.8 12 12

0.8 |-- 0.9 10 12

0.9 |-- 1.0 9 12

Totais 120 120

Page 19: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

Os resultados obtidos através do R são apresentados a seguir:

a <- 0

b <- 1

k <- 10

m <- 120

classe <- seq(0,1,by=0.1)

amostra <- gerador.eca(m,999)

oi <- hist(amostra, breaks=classe, right=F, plot=F)$count

pi <- (b-a)/10

ei <- m*pi

x2.parcelas <- (oi-ei)^2/ei

x2 <- sum(x2.parcelas)

vt <- qchisq(0.95,k-1)

x2

[1] 2.833333 # valor da estatística X2

vt

[1] 16.91898 # valor de comparação com k1 = 9 g.l.

A estatística teste é X 2 = 2.833 e o valor da distribuição quiquadrado com k – 1 = 9 graus de liberdade,

para um nível de significância 0.05 (5%), é igual a 16.919.

Portanto, como 2.833 < 16.919, há evidência para concluirmos que a distribuição de probabilidade dos

valores gerados pode ser a U(0, 1).

Figura 1: Histograma dos valores gerados segundo uma U(0, 1).

Page 20: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

Exemplo 6: Gerar uma amostra com n = 125 valores da distribuição exponencial(1.6) e aplicar o teste

quiquadrado para avaliar a aderência dos dados.

Vamos considerar o seguinte gerador congruencial misto com M = 102816, a = 1429 e b = 1691 e

aplicar o método da transformação inversa: x = F 1

(u), em que u U(0, 1).

Procedimento:

a) gerar uma amostra de tamanho n = 125 valores u U(0, 1) com o gerador.eca(), tendo como

semente y0 = 111;

b) com a transformação

)1ln( ux obter a amostra da exponencial( 6.1 ).

Comandos do R:

u <- gerador.eca(125,111)

n <- 125

lambda <- 1.6

amostra <- -log(1-u)/lambda

max(amostra)

[1] 2.564313

Vamos considerar k = 8 classes de amplitude h = 0.35, sendo as probabilidades de ocorrências em cada

classe dadas por:

iiii supinfsupinfi

iii

p

infFsupFp

6.16.1eee1e1

)()(

em que supi e infi , i = 1, 2, . . ., k, são, respectivamente, os limites superior e inferior das classes.

Tabela com os valores observados e esperados segundo a exponencial(1.6).

xi oi ei = n pi

0.00 |-- 0.35 55 53.6

0.35 |-- 0.70 33 30.6

0.70 |-- 1.05 17 17.5

1.05 |-- 1.40 9 10.0

1.40 |-- 1.75 4 5.7

1.75 |-- 2.10 4 3.3

2.10 |-- 2.45 1 1.9

2.45 |-- 2.80 2 1.1

Totais 125 125

Os resultados obtidos através do R são apresentados a seguir:

k <- 8

classe <- seq(0,2.8,by=0.35)

oi <- hist(amostra, breaks=classe, right=F, plot=F)$count

n <- sum(oi)

pi <- rep(NA,k)

lambda <- 1.6

F.i <- exp(-1.6*classe[1])

Page 21: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

for(i in 1:k){

F.s <- exp(-1.6*classe[i+1])

pi[i] <- F.i-F.s

F.i <- F.s

}

ei <- round(n*pi,1)

x2.parcelas <- (oi-ei)^2/ei

x2 <- sum(x2.parcelas)

vt <- qchisq(0.95,k-1)

x2

[1] 2.15727

vt

[1] 14.06714

A estatística teste é X 2 = 2.157 e o valor da distribuição quiquadrado com k – 1 = 8 graus de liberdade,

para um nível de significância 0.05 (5%), é igual a 14.067.

Portanto, como 2.157 < 14.067, há evidência para concluirmos que a distribuição de probabilidade dos

valores gerados pode ser a exponencial(1.6).

Figura 2: Histograma dos valores gerados segundo uma exponencial(1.6).

Page 22: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

Programas em R para os exemplos 5 e 6:

## Teste para avaliar se o

## gerador tem período completo

###############################

teste.gerador <- function(a,b,M,y0){

nota <- "Período não completo"

y <- as.vector((a*y0 + b) %% M)

n <- 1

final <- TRUE

while(final){

k <- (a*y[n] + b) %% M

if(k!=y[1]){y <- c(y,k)

n <- n+1

print(n)}

else {final <- FALSE}

}

if(n==M) nota <- "Período completo"

return(list(per=n,aviso=nota))

}

y0 <- 12345

tempo <- system.time({z <- teste.gerador(1419,1691,102816,y0)})[3]

z$per

z$aviso

tempo

########################

### Gerador E.C.A. ###

########################

gerador.eca <- function(n,y0){

if(y0 <= 0)print("Argumento inválido: semente deve ser positiva e

diferente de zero")

else{

y <- rep(NA,n)

for(i in 1:n){

y[i]<- (1429*y0+1691)%%102816

y0 <- y[i]

}

y <- y/M

return(y)}

}

Page 23: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

Distribuições de Probabilidade no R

Distribuição fdp fd (fda) quantil gerador

uniforme dunif punif qunif runif

normal dnorm pnorm qnorm rnorm

exponencial dexp pexp qexp rexp

Weibull dweibull pweibull qweibull rweibull

χ 2 (quiquadrado) dchisq pchisq qchisq rchisq

F de Snedcor df pf qf rf

tStudent dt pt qt rt

gama dgamma pgamma qgamma rgamma

beta dbeta pbeta qbeta rbeta

binomial dbinom pbinom qbinom rbinom

geométrica dgeom pgeom qgeom rgeom

binomial negativa dnbinom pnbinom qnbinom rnbinom

hipergeométrica dhyper phyper qhyper rhyper

Poisson dpois ppois qpois rpois

Legenda e Sintaxe:

I. A primeira letra identifica cada comando, assim:

d - é a função distribuição de probabilidade ou de densidade (fdp);

p - é a função distribuição acumulada ou (fda);

q - é a função quantil (inversa da fda);

r - é a função geradora de valores pseudoaleatórios.

II. A sintaxe dos comandos segue a mesma regra para todos os casos, variando apenas o nome da

distribuição:

dnome(x, parâmetros), x = quantil (valor) da variável;

pnome(q, parâmetros), q = quantil (valor) da variável;

qnome(p, parâmetros), p = probabilidade;

rnome(n, parâmetros), n = número de valores e serem gerados.

Page 24: Estatística Computacional A - Aula Geradores - ufscar.br · Estatística Computacional A - Aula Geradores Geradores pseudoaleatórios – a distribuição uniforme Prof. José Carlos

Exemplos:

a) Para a uniforme, os comandos dunif, punif, qunif e runif têm como default a U(0, 1):

dunif(x) retorna f(x);

punif(q) retorna P(X ≤ q) = F(q);

qunif(p) retorna xp = F −1

(p), sendo que P(X ≤ xp) = p;

runif(n) retorna n valores com distribuição U(0, 1).

Para a distribuição U(a, b), os comandos devem indicar os parâmetros:

dunif(x,a,b), punif(q,a,b), qunif(p,a,b) e runif(n,a,b).

b) Para a binomial, o comandos dbinom, pbinom, qbinom e rbinom retornam a binomial(n, pr):

dbinom(x,n,pr) retorna p(x);

pbinom(q,n,pr) retorna P(X ≤ q) = F(q);

qbinom(p,n,pr) retorna xp = F 1

(p), sendo que P(X ≤ xp) = p;

rbinom(m,n,pr) retorna m valores com distribuição binomial(n, p).

Obs: pr é a probabilidade de sucesso.

c) Para a normal, o comandos dnorm, pnorm, qnorm e rnorm tem como default a Normal(0, 1):

dnorm(x) retorna ϕ(x);

pnorm(q) retorna P(X ≤ q) = Φ(q);

qnorm(p) retorna xp = Φ 1

(p), sendo que P(X ≤ xp) = p;

rnorm(n) retorna n valores com distribuição Normal(0, 1).

Para a distribuição Normal(µ, σ), os comandos devem indicar os parâmetros:

dnorm(x,µ,σ), pnorm(q,µ,σ), qnorm(p,µ,σ) e rnorm(n,µ,σ).