MAE0399 - An´alise de Dados e Simula¸c˜ao - 1o semestre de 2018 - IME - USP 1a Lista de Exerc´ıcios
1) Simulando de uma X ∼Poisson(λ) . Considerepi =P(X =i) a) Verifique a rela¸c˜ao recursiva apresentada nos slides de aula:
pi+1 = λ
i+ 1pi, i= 0,1,2,3,· · · Solu¸c˜ao: Assumindop0 =e−λ e usando a forma recursiva,
p1 = λ
1p0 =λe−λ p2 = λ
1 + 1p1 = λ2 2∗1e−λ p3 = λ
2 + 1p2 = λ3 3∗2∗1e−λ ...
pK = λ
(K −1) + 1pK−1 = λK K!e−λ
Portanto, temos que essa rela¸c˜ao recursiva gera probabilidades de uma Poisson com parˆametro λ.
b) Implemente o algoritmo indicado nos slides usando a linguagem R . Considere dois valores distintos deλ a sua escolha.
Solu¸c˜ao: Implementa¸c˜ao para qualquer valor de λ: C´odigo R:
r.pois <- function(N, lambda ){
x <- numeric(N) for(j in 1:N){
U <- runif(1)
Pois <- exp(-lambda) FPois <- Pois ; i <- 0 while(U >= FPois){
Pois <- lambda*Pois/(i+1) FPois <- Pois + FPois i <- i+1 }
x[j] <- i } return(x)}
c) Use o seu algoritmo para simular uma amostra de tamanho n = 100 de X.
Obtenha a m´edia da amostra e compare com o verdadeiro valor deλ. Fa¸ca um gr´afico de barras para os valores simulados usando como altura as frequˆencias relativas observadas e compare com as probabilidades exatas da Poisson.
Solu¸c˜ao: Foi gerada uma amostra de tamanho 100 de uma Poisson com parˆametro igual a 2 e o valor amostral da m´edia e da variˆancia foram respectiva- mente 1.88 e 2.167. As estimativas da m´edia, da variˆancia e das probabilidades
s˜ao relativamente pr´oximas dos valores reais e poderiam ser melhoradas com o aumento do tamanho da amostra.
d) Repita o item(c), usando a fun¸c˜aorpois do R e compare os resultados e tempo de processamento.
Usando a fun¸c˜ao system.time() obtemos que a fun¸c˜ao r.pois apresentou um tempo de execu¸c˜ao de 0.001 segundos e a fun¸c˜ao rpois apresentou um tempo de execu¸c˜ao de 0.0 segundos. A fun¸c˜ao padr˜ao do R foi mais r´apida do que a
fun¸c˜ao apresentada no item b). As estimativas da m´edia e da variˆancia para as duas fun¸c˜oes s˜ao:
Fun¸c˜ao E(X) Var(X) r.pois 2.1 2.60
rpois 2.13 2.04
2) Simule o valor da constante π usando o algoritmo de simula¸c˜ao proposto em sala.
Apresente uma tabela com os valores estimados para diferentes tamanhos de amos- tras.
Solu¸c˜ao: O valor de π at´e a quarta casa decimal ´e 3.1415 e para simular o valor de π podemos proceder da seguinte forma:
Para calcular um valor aproximado de π considere que o vetor aleat´orio (X,Y) ´e uniformemente distribu´ıdo em um quadrado de ´areaAQ= 4 definido pelos pontos (- 1,-1),(-1,1), (1,-1) e (1,1). Considere tamb´em que um c´ırculo de raio 1 (X2+Y2 ≤1), cujo a ´area ´e Acirc =π, est´a circunscrito a esse quadrado.
Com tais informa¸c˜oes, e desde que o vetor (X,Y) esteja uniformemente distribu´ıdo no quadrado, a probabilidade de um ponto estar dentro do c´ırculo ´e dada por,
Pcirc =P(X2+Y2 ≤1) = Acirc
AQ = π 4.
Assumindo que os pontos tenham a mesma probabilidade de atingir qualquer regi˜ao da ´area definida por −1 ≤ X ≤ 1 e −1 ≤ Y ≤ 1 podemos assumir que X ∼ U(−1,1) e Y ∼ U(−1,1). Deste modo, podemos reescrever as vari´aveis aleat´orias independentes X e Y em fun¸c˜ao de U1 ∼(0,1) e U2 ∼(0,1) respectivamente,
X = 2U1 −1, Y = 2U2 −1.
Para obter o valor aproximado de π temos que definir a seguinte vari´avel aleat´oria
I =
1, se X2+Y2 ≤1 0, se c.c.
(1)
Assim, I ∼ Bernoulli(π4) e o valor de π aproximado ´e dado simulando essa distri- bui¸c˜ao a partir de (1) e calculando sua m´edia de modo queπ = 4E(I)≈4∗1
n
n
X
i=1
Ii.
C´odigo R:
n <- c(100,500,1000,10^4, 10^7) pi_aprox <- numeric(5)
for(i in 1:5){
U1 <- runif(n[i]) U2 <- runif(n[i])
I <- (2*U1-1)^2 + (2*U2-1)^2
pi_aprox[i] <- 4*length(I[I<= 1])/n[i]
}
n 100 500 1000 104 107
Aproxima¸c˜ao doπ 3.0000 3.1440 3.1475 3.1488 3.1411
3) Use simula¸c˜ao para aproximar as integrais abaixo, partindo sempre da simula¸c˜ao de um n´umero aleat´orio b´asico, isto ´e, de U ∼U(0,1). Compare com os resultados exatos (se vocˆe puder obtˆe-los).
a) R1
0(1−x2)3/2dx Solu¸c˜ao:
Solu¸c˜ao da integral:
Fazendo a transforma¸c˜aou=x2, chegaremos a seguinte integral:
1 2
Z 1 0
(1−u)3/2u−1/2du= 1
2B(5/2,1/2) = 1 2
Γ(5/2)Γ(1/2)
Γ(3) = 3π
16 = 0.5890486, em que Γ(1/2) =√
π, Γ(5/2) = 3
√π
4 e Γ(3) = 2.
M´etodo de Monte Carlo:
Z 1 0
(1−x2)3/2dx=E((1−X2)3/2)≈ 1 n
n
X
i=1
(1−Xi2)3/2. em que X∼U(0,1).
C´odigo R:
n <- 10^7 X <- runif(n)
mean(((1-X^2))^(3/2)) [1] 0.5892025
Comparando com o valor exato, temos que ´e uma boa aproxima¸c˜ao at´e a terceira casa decimal.
b) R2
−2ex+x2dx
Solu¸c˜ao: No item b) devemos aplicar uma transforma¸c˜ao de vari´avel de modo que o espa¸co de integra¸c˜ao seja o espa¸co (0,1). Fazendo a transforma¸c˜ao u =
x+2
4 chegaremos a seguinte integral,
Z 2
−2
ex+x2dx= 4 Z 1
0
exp 4u−2 + (4u−2)2
du = 4E exp 4U −2 + (4U−2)2)
≈ 4 n
n
X
i=1
exp 4Ui−2 + (4Ui−2)2).
em que U ∼U(0,1).
C´odigo R:
n <- 10^7 U <- runif(n)
4*mean(exp(4*U - 2 +(4*U - 2)^2 )) [1] 93.11628
c) R1 0
R1
0 exp(x+y)2dxdy Solu¸c˜ao
No item c) podemos ver a integral como sendo Z 1
0
Z 1 0
exp(x+y)2dxdy =EXY(exp(X+Y)2)≈ 1 n2
n
X
i=1 n
X
j=1
exp(Xi+Yj)2 em que X∼U(0,1) e Y ∼U(0,1).
C´odigo R:
n <- 10^4 x <- runif(n) y <- runif(n)
mean(sapply(x,FUN = function(x) exp((x + y)^2))) [1] 5.017221
d) R2
0 exp(x2/2)dx
Solu¸c˜ao: No item d) devemos fazer a transforma¸c˜ao u = x2. E assim, chega- remos a seguinte integral,
Z 2 0
exp(x2/2)dx= 2 Z 1
0
exp(2u2)du= 2E(exp(2U2))≈ 2 n
n
X
i=1
exp(2Ui2) Para encontrar o valor aproximado devemos executar o seguinte c´odigo no R, C´odigo R:
n <- 10^7 U <- runif(n) 2*mean(exp(2*U^2)) [1] 4.727395
4) Seja U ∼ U(0,1) use simula¸c˜ao para aproximar Cov(U, eU). Obtenha a resposta exata e compare com sua aproxima¸c˜ao.
Solu¸c˜ao:
Cov(U, eU) = E(U eU)−E(U)E(eU)
= 1− e−1
2 = 3−e
2 = 0.14085 C´odigo R:
n <- 10^7 U <- runif(n) cov(U,exp(U)) [1] 0.1408358
Como podemos ver, a aproxima¸c˜ao ´e boa at´e a quarta casa decimal.
5) A partir de um n´umero aleat´orio b´asico, apresente um algoritmo eficiente (ordenando as probabilidades) para simular da v.a. X abaixo.
X 2 4 6 8 10
Prob 0.10 0.30 0.40 0.15 0.05
a) Implemente o algoritmo e obtenha uma amostra de tamanho n = 100 dessa dis- tribui¸c˜ao. Compare as frequˆencias relativas observadas com as probabilidades exatas.
Solu¸c˜ao: As frequˆencias relativas para a amostra de tamanho 100 foram pr´oximas dos valores das probabilidades.
X 2 4 6 8 10
Frequˆencia relativa 0.09 0.29 0.45 0.12 0.05
b) Repetir (a) para n = 1000.
Solu¸c˜ao: As frequˆencias relativas com a amostra de tamanho 1000 foram de um modo geral mais pr´oximas dos valores das probabilidades.
X 2 4 6 8 10
Frequˆencia relativa 0.11 0.29 0.40 0.16 0.05
C´odigo R:
RX <- function(n){
px <- c(0.4,0.3,0.15,0.1,0.05) # porbabilidades ordenadas X <- c(6,4,8,2,10)
x <- numeric(n) Fx <- cumsum(px)
for(i in 1:n){ U <- runif(1) k = 1
while(U > Fx[k]){ k = k + 1 } x[i] = X[k] }
return(x)}
6) Um baralho possui 100 cartas numeradas 1,2, ...,100. As cartas s˜ao embaralhadas e ent˜ao retiradas, uma `a uma. Ocorre uma coincidˆencia quando a i-´esima carta aparece na i-´esima retirada, i = 1,2, ...,100. Escreva um programa para simular o processo e estimar a m´edia e variˆancia do total de coincidˆencias. Compare os valores simulados com os valores reais de m´edia e variˆancia
Solu¸c˜ao:
Primeiramente, calcularemos os valores reais da m´edia e da variˆancia. Considere as vari´aveis X1, ..., Xn, tais que:
x=
1,se ocorreu coincidˆencia na i-´esima carta 0,c.c
Temos que P(Xi = 1) = 1n e P(Xi = 1, Xj = 1) = (n−2)!n!
Desse forma, X1, ..., Xn s˜ao identicamente distribu´ıdas com distribui¸c˜aoBer(1/n) e n˜ao s˜ao independentes. Seja N =
n
X
i=1
Xi o n´umero de coincidˆencias obtidas.
E(N) =E n
X
i=1
Xi
=
n
X
i=1
E(Xi) =
n
X
i=1
1 n = 1 Como X1,· · · , Xn n˜ao s˜ao independentes temos que:
Cov(Xi, Xj) = E(XiXj)−E(Xi)E(Xj) =P(Xi = 1, Xj = 1)−P(Xi = 1)P(Xj = 1)
= (n−2)!
n! − 1
n2 = 1 n2(n−1) V ar(N) = V ar
n X
i=1
Xi
=
n
X
i=1
V ar(Xi) +
n
X
i=1
X
j=1 i6=j
Cov(Xi, Xj)
=
n
X
i=1
1 n
1− 1
n
+n(n−1) 1
n2(n−1) = 1− 1 n + 1
n = 1
O problema de embaralhamento das cartas pode ser relacionado ao problema de permuta¸c˜ao da sequˆencia 1,2,· · · ,100, uma vez que cada carta ´e retirada sem re- posi¸c˜ao. Utilizando o algoritmo descrito em aula para a simula¸c˜ao de permuta¸c˜oes aleat´orias, temos o seguinte algoritmo para simular o processo de embaralhamento das cartas.
1 Consideramos a sequˆencia P1,· · · , P100, tal que Pi =i, para i= 1,· · · ,100 2 Fa¸ca k= 100
3 Enquanto k >1 fa¸ca
4 Simule U ∼U nif(0,1) e fa¸caI =Int[k∗u] + 1 5 Troque os PI e Pk entre si
6 Fa¸ca k=k−1 C´odigo R
# Maneira 1
embaralhar <- function(n){
x <- seq(1:n) k <- n
while(k > 1){
u <- runif(1,0,1)
posicao <- floor(k*u)+1 aux <- x[posicao]
x[posicao] <- x[k]
x[k] <- aux k <- k-1 } return(x)
}
a <- seq(1:100) c<- vector() for(i in 1:1000){
x <- embaralhar(100) c[i] <- sum(x==a) }
> mean(c) [1] 0.968
> var(c) [1] 0.989966
# maneira 2
baralho <- 1:100
coincid <- numeric(10^7)
for(i in 1:10^7){ coincid[i] <- sum(sample(baralho,100) == baralho) }
> mean(coincid) [1] 1.000253
> var(coincid) [1] 1.000643
Como podemos ver, os valores simulados foram pr´oximos dos valores reais.
7) Usando o m´etodo da Transformada Inversa, derivar um algoritmo para gerar das vari´aveis aleat´orias com as seguintes fun¸c˜oes densidades de probabilidades. N˜ao precisa implementar no R
a) f(x) = e−1ex , 0≤x≤1.
Solu¸c˜ao: A distribui¸c˜ao acumulada do item a) ´e dada por, F(x) =
Z x 0
ey
e−1dy= ex−1 e−1 e sua inversa ´e dada por,
ex−1
e−1 = U
x = log(U(e−1) + 1), (2)
em que 0≤U ≤1. Assim, para gerar uma amosta da distribui¸c˜ao de X, basta gerar uma amostra deU ∼U(0,1) e aplicar em (2).
b) f(x) = x−22 , se 2≤x≤3 e f(x) = 2−x/32 ,se 3< x≤6
Solu¸c˜ao: Neste item, a distribui¸c˜ao acumulada est´a dividida em dois casos:
∗ Para 2≤x≤3
F(x) = Z x
2
y−2
2 dy= x2
4 −x+ 1
e
x2
4 −x+ 1 = U x2−4x+ 4(1−U) = 0
Resolvendo a equa¸c˜ao encontraremos duas ra´ızes, mas somente a raiz x= 2 + 2√
U ser´a usada, pois gera valores no intervalo 2 ≤ x ≤ 3, para 0≤U ≤1/4.
∗ Para 3 < x≤6 F(x) =
Z x 3
2−y/3
2 dy+F(3) =x− x2
12−3 + 9 12+1
4 =x− x2 12 −2 e
x− x2
12−2 = U x− x2
12 −(2 +U) = 0
Essa equa¸c˜ao possui duas ra´ızes, mas somente a raizx= 6−2p
3(1−U) = 6
1−q
1− 2+U3
ser´a usada, pois gera valores no intervalo 3 < x ≤ 6, para 1/4< U ≤1.
Portanto, para gerar uma amostra da distribui¸c˜ao deX basta gerar uma amos- tra da distribui¸c˜aoU ∼U(0,1) e aplicar em
x=
2 + 2√
U , se 0≤U ≤1/4 6−2p
3(1−U), se 1/4< U ≤1.
c) f(x) =e2x, sex≤0 e f(x) =e−2x, se x >0.
Solu¸c˜ao: A distribui¸c˜ao acumulada ´e,
F(x) =
e2x
2 , se x≤0 1− e−2x2 , se x >0
Invertendo a distribui¸c˜ao acumulada para cada caso, teremos que
x=
1
2log(2U), se 0≤U ≤ 12
−12log(2(1−U)), se 12 < U ≤1 em que U ∼U(0,1) .
8) Deseja-se gerar de uma distribui¸c˜ao Gama com a seguinte densidade f(x) = 1
2x2e−x x >0.
Para isso, vamos usar o m´etodo de rejei¸c˜ao com proposta exponencial com taxa λ. Encontre o valor de λ que minimiza o n´umero esperado de itera¸c˜oes do algoritmo.
Solu¸c˜ao: Pelo m´etodo de rejei¸c˜ao, f(x)
g(x) =
1 2x2e−x
λe−λx = 1
2λx2e−(1−λ)x ≤C.
Fazendo dxd
f(x) g(x)
= 0 e simplificando chegaremos a 2x−(1−λ)x2 = 0, cujo as ra´ızes s˜aox1 = 0 e x2 = 1−λ2 . O valor deλque minimiza o n´umero esperado de itera¸c˜oes do algoritmo ´e dado minimizando a seguinte fun¸c˜ao,
f(1−λ2 )
g(1−λ2 ) = 2
λ(1−λ)2e−2 =C(λ).
Minimizando a fun¸c˜aoC(λ) encontraremos que o m´ınimo ocorre quandoλ= 13.