1 ) Em uma pesquisa eleitoral com n=2000 indivíduos para verificar o percentual de votos em um candidato espera-se que as proporções observadas estejam até 2 pontos percentuais do verdadeiro valor (p), mas isso não ocorrerá em todas. Se fizermos r=100 dessas pesquisas, espera-se que em até 95% delas a diferença esteja até 2 pontos e 5% acima de 2 pontos percentuais.

a) Justifique teoricamente o texto acima;

Resposta:

Segundo o Teorema Central do Limite, diz que quando temos uma amostra de tamanho considerável (\(n=2000\)), a distribuição das proporções amostrais tende a uma Distribuição Normal, o que nos permite prever o comportamento dos resultados com precisão, sem a necessidade direta de um censo. A diferença de 2 pontos percentuais é a “Margem de Erro”, calculado através da relação entre o valor crítico da distribuição (\(z\)), a variabilidade dos dados e o tamanho da amostra.

\[E = z \cdot \sqrt{\frac{p(1-p)}{n}}\]

Ao fixarmos um nível de confiança de 95% (onde \(z \approx 1,96\)), o cálculo para essa amostra resulta em um erro aproximado de 0,02 (ou 2%). Portanto, ao fazer essa pesquisa 100 vezes, espera-se que 95 apresentem resultados dentro dessa margem e 5 fiquem fora dela.

b) Simule esse processo no R com p=0,5 e r=10000.

n = 2000          # amostra por teste
p = 0.5           # proporção real na população
r = 10000         # testes
margem = 0.02     # erro

set.seed(579)

s = rbinom(r, size = n, prob = p)

pesquisas = s / n

diferencas = abs(pesquisas - p)

dentrodoesperado = sum(diferencas <= margem) / r * 100
foradoesperado = sum(diferencas > margem) / r * 100
## pesquisas dentro esperado: 92.68 %
## pesquisas fora esperado: 7.32 %

2 ) Lançam-se dois dados perfeitos. X indica o máximo dos dois resultados e Y a soma dos dois dados.

a) Encontre a distribuição de probabilidade conjunta de (X,Y).

Resposta:

\(X = \max(D_1, D_2)\): O maior valor entre os dois dados.

\(Y = D_1 + D_2\): A soma dos valores dos dois dados.

Temos:

\(X=1\): \((1,1)\).\(Y = 1+1 = 2\).

\(X=2\): \(Y=3\): \((2,1), (1,2)\); \(Y=4\): \((2,2)\).

\(X=3\): \(Y=4\): \((3,1), (1,3)\); \(Y=5\): \((3,2), (2,3)\); \(Y=6\): \((3,3)\).

\(X=4\): \((4,1), (4,2), (4,3), (4,4), (3,4), (2,4), (1,4)\); \(Y=5, 6, 7\): 2 ocorrências cada. \(Y=8\): 1 ocorrência.

\(X=5\): Pares \((5,1) \dots (5,5) \dots (1,5)\). \(Y=6, 7, 8, 9\): 2 ocorrências cada. \(Y=10\): 1 ocorrência.

\(X=6\): Pares \((6,1) \dots (6,6) \dots (1,6)\). \(Y=7, 8, 9, 10, 11\): 2 ocorrências cada. \(Y=12\): 1 ocorrência.

Tabela de probabilidade:

X  Y 2 3 4 5 6 7 8 9 10 11 12 Total (X)
1 1/36 0 0 0 0 0 0 0 0 0 0 1/36
2 0 2/36 1/36 0 0 0 0 0 0 0 0 3/36
3 0 0 2/36 2/36 1/36 0 0 0 0 0 0 5/36
4 0 0 0 2/36 2/36 2/36 1/36 0 0 0 0 7/36
5 0 0 0 0 2/36 2/36 2/36 2/36 1/36 0 0 9/36
6 0 0 0 0 0 2/36 2/36 2/36 2/36 2/36 1/36 11/36
Total (Y) 1/36 2/36 3/36 4/36 5/36 6/36 5/36 4/36 3/36 2/36 1/36 1

b) Simule esse processo no R e obtenha as frequências relativas, repetindo r=10000 vezes. Comente o código e indique se as frequências relativas observadas de (X,Y) na simulação estão próximas das probabilidades exatas.

r = 10000
set.seed(579)
d1 = sample(1:6, size = r, replace = TRUE)
d2 = sample(1:6, size = r, replace = TRUE)
X = pmax(d1, d2)
Y = d1 + d2

tabela_freq = table(X, Y)

freq_relativas = prop.table(tabela_freq)

round(freq_relativas, 4)
##    Y
## X        2      3      4      5      6      7      8      9     10     11
##   1 0.0273 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
##   2 0.0000 0.0608 0.0278 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
##   3 0.0000 0.0000 0.0567 0.0560 0.0261 0.0000 0.0000 0.0000 0.0000 0.0000
##   4 0.0000 0.0000 0.0000 0.0547 0.0524 0.0532 0.0249 0.0000 0.0000 0.0000
##   5 0.0000 0.0000 0.0000 0.0000 0.0583 0.0596 0.0556 0.0573 0.0245 0.0000
##   6 0.0000 0.0000 0.0000 0.0000 0.0000 0.0596 0.0543 0.0590 0.0526 0.0528
##    Y
## X       12
##   1 0.0000
##   2 0.0000
##   3 0.0000
##   4 0.0000
##   5 0.0000
##   6 0.0265

Após repetir a simulação 10000 vezes chegas a frequências como \((X = 1, Y = 2)= 0,0268\). Que comparando com a tebela de probabilidade, temos \((X = 1, Y = 2)= 1/36\). Comparando eles, temos:

\[\frac{1}{36}=0,0278\approx0,0268\]

Então sim, as probabilidades são bem próximas.

3 ) Há problema tradicionais na área de Probabilidade e Estatística. Apresente e simule os problemas abaixo:

a) Aniversários:

Resposta:

O problema do “Aniversário” consiste em uma questão que induz a mente ao erro. Ao sermos indagados sobre “em um grupo de 23 pessoas, qual a probabilidade de duas pessoas terem a mesma data de aniversário?”, intuitivamente pensamos que essa probabilidade é baixa, pois, para haver uma coincidência entre 365 dias, seria necessário haver mais do que 23 pessoas. Porém, fazendo o cálculo estatístico, chegamos a uma conclusão bem diferente.

Calculando a probabilidade de se “não” fazer aniversário no mesmo dia, temos:

Chance de nascer em qualquer dia é \(\frac{365}{365}\). A de não nascer no mesmo dia que o anterior é \(\frac{365-1}{365}=\frac{364}{365}\). Seguimos a lógica até a 23º pessoa:

\[P= 1 - \left( \frac{365}{365} \cdot \frac{364}{365} \cdot \frac{363}{365} \dots \cdot \frac{343}{365} \right)\approx0,507 \]

Com o resultado apróximada de \(0,507\), temos uma probabilidade de 50,7% de em um grupo de 23 haver duas pessoas com a mesma data de aniversário. Uma probabilidade bem alta. Se aumentarmos o número de pessoas para 57, essa probabilidade sobe para cerca de 99%, quebrando a expectativa inicial de que se trata de uma probabilidade baixa.

- Testes no R -

Em 10000 testes com \(23\) pessoas, temos:

set.seed(579)
r = 10000   # twstes
n = 23       # nº de pessoas
sucessos = 0

for (i in 1:r) {
  grupo = sample(1:365, size = n, replace = TRUE)
  if (any(duplicated(grupo))) {
    sucessos = sucessos + 1
  }
}

prob = sucessos / r
## Testes com pelo menos uma coincidência: 5032
## Probabilidade estimada: 50.32 %
## Probabilidade teórica: 50.73 %

Em 10000 testes com \(57\) pessoas, temos:

set.seed(579)
r = 10000   # twstes
n = 57      # nº de pessoas
sucessos = 0

for (i in 1:r) {
  grupo = sample(1:365, size = n, replace = TRUE)
  if (any(duplicated(grupo))) {
    sucessos = sucessos + 1
  }
}

prob = sucessos / r
## Testes com pelo menos uma coincidência: 9893
## Probabilidade estimada: 98.93 %
## Probabilidade teórica: 99.01 %

b) Namorada Desconfiada.

c) A cabra e o Carro.

Resposta:

O problema da “Cabra e do Carro” consiste em um cenário no qual devemos escolher uma porta entre três. Atrás de uma das portas há um carro, e atrás das outras duas há uma cabra. Após a escolha de uma porta, alguém que sabe o que há atrás de todas elas abre uma das portas que contém uma cabra. Em seguida, temos a opção de trocar ou manter a porta escolhida anteriormente. A grande questão é, “é melhor trocar a porta ou manter?”.

A intuição nos leva a crer que, como restaram apenas duas portas, tanto faz trocar ou manter, pois as probabilidades aparentam ser de \(1/2\).

Porém, ao fazer uma análise com mais calma, chegamos à conclusão de que é mais vantajoso trocar. Inicialmente, temos \(1/3\) de chance de escolher o carro e \(2/3\) de chance de escolher uma cabra. Se você escolheu uma porta que contém uma cabra (com probabilidade \(2/3\)), a outra pessoa irá revelar a porta onde está a outra cabra. Assim, se você trocar de porta, ganhará o carro. Por outro lado, se você escolheu a porta que contém o carro (com probabilidade \(1/3\)), ao trocar de porta, você perde.

- Testes no R -

Em 10000 testes, temos:

r = 10000    # testes

fportas = function(trocar = TRUE) {
  portas = 1:3
  carro = sample(portas, 1)
  portaescolhida = sample(portas, 1)
  portasfaltando = portas[portas != carro & portas != portaescolhida]

  if(length(portasfaltando) > 1) {
    portan = sample(portasfaltando, 1)
  } else {
    portan = portasfaltando
  }
  
  
  if(trocar) {
    nporta = portas[portas != portaescolhida & portas != portan]
  } else {
    nporta = portaescolhida
  }
  
  return(nporta == carro)
}

set.seed(579) 
vitoriast = replicate(r, fportas(trocar = TRUE))
vitoriasm = replicate(r, fportas(trocar = FALSE))

taxa_trocar = mean(vitoriast)
taxa_manter = mean(vitoriasm)

As chances de conseguir o carro se trocar a porta é:

## 66.71 %

As chances de conseguir o carro mantendo a mesma porta é:

## 33.68 %

5 ) Diz-se que a soma de n v.a.i.i.d. Bernoulli(p) tem distribuição Binomial(n,p). No R, use n=10 e p=0.3 e obtenha a soma S. Repita este processo r=10000 réplicas e obtenha as frequências relativas de 0 a 10. Plote junto a Bin(n=10, p=0.3). O que você acha da afirmação?

Resposta:

- Teste no R -

# parâmetros
n = 10
p = 0.3
r = 10000
set.seed(579)

simulacoes = replicate(r, sum(rbinom(n, 1, p)))

freqrelativas = table(factor(simulacoes, levels = 0:n)) / r

prob_teorica = dbinom(0:n, size = n, prob = p)

frequências relativas (de 0 a 10).

## 0.0292 0.118 0.2326 0.2589 0.2064 0.1047 0.0375 0.0103 0.0021 3e-04 0

probabilidades da Binomial (n, p).

## 0.02824752 0.1210608 0.2334744 0.2668279 0.2001209 0.1029193 0.03675691 0.009001692 0.001446701 0.000137781 5.9049e-06

Gráfico:

# gráfico
coords = barplot(freqrelativas, 
                  main = "Frequência Simulada x Distribuição Binomial",
                  xlab = "Número de Sucessos", 
                  ylab = "Probabilidade",
                  col = "blue",
                  ylim = c(0, max(prob_teorica) + 0.05))

points(coords, prob_teorica, col = "red", pch = 16, cex = 1.5)
lines(coords, prob_teorica, col = "red", lwd = 2)

legend("topright", legend = c("Simulado (Soma de Bernoullis)", "Binomial"),
       fill = c("blue", NA), pch = c(NA, 16), col = c(NA, "red"), bty = "n")

Como o número de testes (\(r=10000\)) é alto, a frequência relativa converge para a probabilidade real (Lei dos Grandes Números). Após analisar o gráfico, vemos que afirmação é verdadeira. A simulação comprova que a distribuição Binomial nada mais é do que a contagem de sucessos em \(n\) experimentos de Bernoulli independentes, cada um com probabilidade \(p\) de sucesso.

6 ) Diz-se que a soma de Poissons \(X_1\) e \(X_2\) independentes também é Poisson, mas qual o parâmetro?. Escolha valores de \(λ_1\) e \(λ_2\) (por exemplo, \(λ_1\)=1 e \(λ_2\)=2) para verificar via simulação se a afirmação é verdadeira.

Rsposta:

Se \(X_1 \sim \text{Poisson}(\lambda_1)\) e \(X_2 \sim \text{Poisson}(\lambda_2)\) são independentes, a soma \(S = X_1 + X_2\) possui distribuição \(\text{Poisson}(\lambda_1 + \lambda_2)\).

Usando (\(\lambda_1 = 1\) e \(\lambda_2 = 2\)), o parâmetro da soma deve ser \(\lambda_s = 3\).

- Teste no R -

# parâmetros
lambda1 = 1
lambda2 = 2
lambdasoma = lambda1 + lambda2
r = 10000

set.seed(579)
x1 = rpois(r, lambda1)
x2 = rpois(r, lambda2)

soma = x1 + x2

valormax= 15

freq_relativa = table(factor(soma, levels = 0:valormax)) / r

prob_pois = dpois(0:valormax, lambda = lambdasoma)

Frequência realtiva:

## 0.0496 0.1519 0.2195 0.2144 0.1766 0.1057 0.0486 0.0225 0.008 0.0018 9e-04 5e-04 0 0 0 0

Probabilidade téorica:

## 0.04978707 0.1493612 0.2240418 0.2240418 0.1680314 0.1008188 0.05040941 0.02160403 0.008101512 0.002700504 0.0008101512 0.0002209503 5.523758e-05 1.274713e-05 2.731529e-06 5.463057e-07

Gráfico:

#gráfico
coords <- barplot(freq_relativa, 
                  main = expression(paste("Simulação da Soma: ", X[1] + X[2])),
                  xlab = "Valor da Soma", 
                  ylab = "Probabilidade",
                  col = "blue",
                  ylim = c(0, max(prob_teorica) + 0.05))

points(coords, prob_pois, col = "red", pch = 18, cex = 1.5)
lines(coords, prob_pois, col = "red", lwd = 2)

legend("topright", legend = c("Soma Simulada", "Poisson (3)"),
       fill = c("blue", NA), pch = c(NA, 18), col = c(NA, "red"), bty = "n")

Se \(X_1\) é o número de eventos em um intervalo de tempo e \(X_2\) é o número de eventos (do mesmo tipo) em outro intervalo (ou processo independente), a soma é simplesmente o total de eventos acumulados. Logo, a afirmação é verdadeira.

A Função Geradora de Momentos (FGM) de uma Poisson(\(\lambda\)) é:

\[M_X(t) = e^{\lambda(e^t - 1)}\]

Como \(X_1\) e \(X_2\) são independentes, a FGM da soma é o produto das FGMs:

\[M_{X_1+X_2}(t) = e^{\lambda_1(e^t - 1)} \cdot e^{\lambda_2(e^t - 1)} = e^{(\lambda_1 + \lambda_2)(e^t - 1)}\]

Esta é precisamente a FGM de uma distribuição Poisson com parâmetro \(\lambda_1 + \lambda_2\).

7 ) Diz-se que a distribuição Normal é fechada para combinações lineares. Verifique nos casos de \(Z = X+Y\) e \(V = X-Y\), com \(X\) e \(Y\) sendo \(N(0,1)\). \(Z\) e \(V\) também têm distribuição Normal?

Resposta:

- Teste no R -

r = 10000
set.seed(579)

x = rnorm(r, mean = 0, sd = 1)
y = rnorm(r, mean = 0, sd = 1)

z = x + y
v = x - y

Gráfico 1:

# Z = X + Y
hist(z, breaks = 50, probability = TRUE, col = "blue", 
     main = "Z = X + Y", xlab = "Valores de Z")
curve(dnorm(x, mean = 0, sd = sqrt(2)), add = TRUE, col = "red", lwd = 2)

legend("topright", legend = c("X + Y", "N(o,2)"),
       fill = c("blue", NA), pch = c(NA, 18), col = c(NA, "red"), bty = "n")

Gráfico 2:

# V = X - Y
hist(v, breaks = 50, probability = TRUE, col = "blue", 
     main = "V = X - Y", xlab = "Valores de V")
curve(dnorm(x, mean = 0, sd = sqrt(2)), add = TRUE, col = "red", lwd = 2)

legend("topright", legend = c("X - Y", "N(o,2)"),
       fill = c("blue", NA), pch = c(NA, 18), col = c(NA, "red"), bty = "n")

Os gráficos se comportam como uma Normal e tabém segue os mesmo padrão da \(N(0,2)\). Comprovando, assim, que \(Z\) e \(V\), converge em uma Normal.

8 ) Suponha que a variável aleatória \((X,Y)\) tenha fdp conjunta dada por \(f(x,y)=exp⁡(-(x+y))\), \(x>0\),\(y>0\).

a) Resolva analiticamente (teoricamente) mostrando que \(P(X>Y)=1/2\).

Resposta:

Se \((X > 0)\) e (\(Y > 0\)) significa que (\(X > Y > 0\)), logo, \(Y\) varia de \(0\) a \(X\).

Temos a integral:

\[P(X > Y) = \int_{0}^{\infty} \int_{0}^{x} e^{-(x+y)} \, dy \, dx\]

Resolvendo a integral:

\[\int_{0}^{x} e^{-x} e^{-y} \, dy = e^{-x} \int_{0}^{x} e^{-y} \, dy\]

\[e^{-x} \left[ -e^{-y} \right]_{0}^{x} = e^{-x} (-e^{-x} - (-e^{0})) = e^{-x}(1 - e^{-x})\] \[= e^{-x} - e^{-2x}\]

Integral do resultado de \(0\) a \(\infty\):

\[\int_{0}^{\infty} (e^{-x} - e^{-2x}) \, dx\]

\[\left[ -e^{-x} - \left( -\frac{1}{2}e^{-2x} \right) \right]_{0}^{\infty} = \left[ -e^{-x} + \frac{1}{2}e^{-2x} \right]_{0}^{\infty}\]

Qunado \(X\) tende a infinito ambos os termos \(e^{-x}\) e \(e^{-2x}\) tendem a \(0\).

Quando \(x = 0\):

\[(-e^{0} + \frac{1}{2}e^{0}) = -1 + \frac{1}{2} = -\frac{1}{2}\]

Subtraindo os limites:

\[0 - \left( -\frac{1}{2} \right) = \frac{1}{2}\]

\[P(X>Y)=\frac{1}{2}\]

b ) Simule no R valores de \((X,Y)\) e verifique a proporção de vezes que ocorre o evento \((X>Y)\).

Resposta:

- Teste no R -

r = 100000
set.seed(579)
x = rexp(r, rate = 1)
y = rexp(r, rate = 1)

xmaior = x > y
cat(mean(xmaior))
## 0.50136

A proporção foi \(0.5\), assim como o esperado.

9 ) Gere n=10000 resultados da Mega-Sena (6 números inteiros de 1 a 60, sem repetição) e obtenha a distribuição das SEIS Estatísticas de Ordem, ou seja, Mínimo ATÉ o Máximo. Apresente a Média, Desvio-Padrão, Assimetria e Curtose.

Resposta:

- Teste no R -

library(moments)
set.seed(579)
r = 10000

sorteios = t(replicate(r, sort(sample(1:60, 6))))

resultados = data.frame(
  Ordem = paste0("X(", 1:6, ")"),
  Media = apply(sorteios, 2, mean),
  DP = apply(sorteios, 2, sd),
  Assimetria = apply(sorteios, 2, skewness),
  Curtose = apply(sorteios, 2, kurtosis)
)

Medidas de tendencias centrais:

##    Media     DP Assimetria Curtose
## 1  8.735  7.105      1.292   4.693
## 2 17.458  9.149      0.602   2.902
## 3 26.109 10.037      0.182   2.485
## 4 34.773 10.032     -0.176   2.463
## 5 43.568  9.122     -0.621   2.949
## 6 52.183  7.089     -1.267   4.573

10 ) A Caixa Econômica Federal disponibiliza os Resultados de suas Loterias. Faça o Download de Resultados da Mega-Sena e obtenha a distribuição das SEIS Estatísticas de Ordem. Apresente a Média, Desvio-Padrão, Assimetria e Curtose e compare com os valores em (9).

Resposta:

- Teste no R -

library(moments)
library(readxl)

ms = "C:/Users/PC/Downloads/Mega-Sena.xlsx"
dados = read_excel(ms)

dn = as.matrix(dados[, 3:8])
dn = apply(dn, 2, as.numeric)
dados2 = t(apply(dn, 1, sort))

resultados2 = data.frame(
  Ordem = paste0("X(", 1:6, ")"),
  Media = apply(dados2, 2, mean, na.rm = TRUE),
  DP    = apply(dados2, 2, sd, na.rm = TRUE),
  Assimetria = apply(dados2, 2, skewness, na.rm = TRUE),
  Curtose    = apply(dados2, 2, kurtosis, na.rm = TRUE)
)

Tendêmcias centrais reais:

##       Ordem  Media     DP Assimetria Curtose
## Bola1  X(1)  8.591  6.952     1.3598   5.128
## Bola2  X(2) 17.398  9.132     0.6011   2.891
## Bola3  X(3) 26.354 10.007     0.1436   2.435
## Bola4  X(4) 35.102  9.828    -0.1880   2.540
## Bola5  X(5) 43.598  9.003    -0.5530   2.842
## Bola6  X(6) 52.218  6.946    -1.2222   4.347

A diferença das tendencias simuladas com as reais são bem baixas, quase imperceptiveis.