2023/01/31 (updated: 2024-08-19)
…
\[P(\mbox{prêmio na primeira}) = \frac{1}{3}\] \[P(\mbox{pegadinha na primeira}) = \frac{2}{3}\]
Se a estratégia for não trocar, temos: \[P(\mbox{prêmio}|\mbox{prêmio na primeira})=1\] \[P(\mbox{prêmio}|\mbox{pegadinha na primeira})=0\]
Logo, com a estratégia de não trocar: \[P(\mbox{prêmio}) = 1\times \frac{1}{3} + 0\times \frac{2}{3} = \frac{1}{3}\]
Se a estratégia for trocar, temos: \[P(\mbox{prêmio}|\mbox{prêmio na primeira})=0\] \[P(\mbox{prêmio}|\mbox{pegadinha na primeira})=1\]
Logo, com a estratégia de não trocar: \[P(\mbox{prêmio}) = 0\times \frac{1}{3} + 1\times \frac{2}{3} = \frac{2}{3}\]
library(tidyverse)
sims <- 1000
portas <- c("pegadinha", "pegadinha", "premio")
result.trocar <- result.naotrocar <- rep(NA, sims)
for (i in 1:sims){
#escolha inicial
primeira.escolha <- sample(1:3, size=1)
result.naotrocar[i] <- portas[primeira.escolha]
restante <- portas[-primeira.escolha]
#Mallandro abre uma porta com pegadinha
if(portas[primeira.escolha]=="premio") #escolhe uma das duas com pegadinha
mallandro <- sample(1:2, size=1)
else #só sobrou uma com pegadinha
mallandro <- (1:2)[restante == "pegadinha"]
result.trocar[i] <- restante[-mallandro]
}
mean(result.naotrocar == "premio")
## [1] 0.319
mean(result.trocar == "premio")
## [1] 0.681
dunif() calcula a PDF de uma distribuição uniforme (não é bem isso…).dunif(0.5, min=0, max=1)
## [1] 1
dunif(1, min=-2, max=2)
## [1] 0.25
punif() calcula a CDF de uma distribuição uniforme.punif(1, min=-2, max=2)
## [1] 0.75
punif(0, min=-1, max=1)
## [1] 0.5
punif(0.6, min=0, max=1)
## [1] 0.6
punif(0.3, min=0, max=1)
## [1] 0.3
punif(0.8, min=0, max=1)
## [1] 0.8
runif() retorna realizações de uma variável aleatória uniforme.sims <- 1000 x <- runif(sims, min=0, max=1) head(x, n=10)
## [1] 0.62057045 0.09925934 0.05381671 0.47710145 0.84383801 0.17367794 ## [7] 0.59088189 0.93001976 0.93484379 0.52380061
runif()e o resultado que em uma distribuição uniforme entre zero e um a probabilidade de obter um valor menor do que \(x\) é igual a \(x\) para \(0 \leq x \leq 1\) permitem simular uma variável aleatória Bernoulli.p <- 0.5 y <- as.integer(x <= p) head(y, n=10)
## [1] 0 1 1 1 0 1 0 0 0 0
mean(y)
## [1] 0.505
sims <- 1000 x <- runif(sims, min=0, max=1) head(x, n=10)
## [1] 0.9605424 0.1671382 0.7176837 0.8647481 0.2157826 0.9740300 0.1497770 ## [8] 0.7388156 0.7448919 0.7287388
p <- 0.3 y <- as.integer(x <= p) head(y, n=10)
## [1] 0 1 0 0 1 0 1 0 0 0
mean(y)
## [1] 0.297
dbinom() retorna a PMF (probabilidade) de uma binomialdbinom(2, size=3, prob=0.5)
## [1] 0.375
dbinom(0:3, size=3, prob=0.5)
## [1] 0.125 0.375 0.375 0.125
pbinom() retorna a CDF de um binomialpbinom(2, size=3, prob=0.5)
## [1] 0.875
pbinom(0:3, size=3, prob=0.5)
## [1] 0.125 0.500 0.875 1.000
\[P(-k \leq Z \leq k)=P(Z \leq k) - P(Z \leq -k)= F(k)-F(-k)\]
pnorm(1)-pnorm(-1)
## [1] 0.6826895
pnorm(2)-pnorm(-2)
## [1] 0.9544997
mu <- 5 sigma <- 2 pnorm(mu+sigma, mean=mu, sd = sigma) - pnorm(mu-sigma, mean=mu, sd=sigma)
## [1] 0.6826895
pnorm(mu+2*sigma, mean=mu, sd = sigma) - pnorm(mu-2*sigma, mean=mu, sd=sigma)
## [1] 0.9544997
\[V(X)=E(X^2)-[E(X)]^2=\int_a^b \frac{x^2}{b-a} - \left(\frac{a+b}{2} \right)^2\\=\frac{x^3}{3(b-a)}\Bigg|_a^b-\left(\frac{a+b}{2} \right)^2=\frac{1}{12}(b-a)^2\]
p <- 0.5 p * (1-p)
## [1] 0.25
y <- runif(500, 0,1) >= p var(y)
## [1] 0.2493427
a <- 1 b <- 5 (1/12)*(b-a)^2
## [1] 1.333333
var(runif(500, min=1, max=5))
## [1] 1.284216
cumsum() que calcula a soma cumulativa de um vetor.cumsum(c(1,2,3,4))
## [1] 1 3 6 10
cumsum(1:10)
## [1] 1 3 6 10 15 21 28 36 45 55
sims <- 5000
p <- 0.2
size <- 10
lln_bin <- tibble(n = seq_len(sims),
x = rbinom(sims, prob=p, size=size),
mean = cumsum(x)/n,
distrib = str_c("Binomial (", size, ", ", p, ")"))
head(lln_bin, n=10)
## # A tibble: 10 × 4 ## n x mean distrib ## <int> <int> <dbl> <chr> ## 1 1 4 4 Binomial (10, 0.2) ## 2 2 2 3 Binomial (10, 0.2) ## 3 3 4 3.33 Binomial (10, 0.2) ## 4 4 0 2.5 Binomial (10, 0.2) ## 5 5 4 2.8 Binomial (10, 0.2) ## 6 6 3 2.83 Binomial (10, 0.2) ## 7 7 3 2.86 Binomial (10, 0.2) ## 8 8 0 2.5 Binomial (10, 0.2) ## 9 9 1 2.33 Binomial (10, 0.2) ## 10 10 2 2.3 Binomial (10, 0.2)
tail(lln_bin, n=10)
## # A tibble: 10 × 4 ## n x mean distrib ## <int> <int> <dbl> <chr> ## 1 4991 0 1.97 Binomial (10, 0.2) ## 2 4992 1 1.97 Binomial (10, 0.2) ## 3 4993 1 1.96 Binomial (10, 0.2) ## 4 4994 3 1.97 Binomial (10, 0.2) ## 5 4995 4 1.97 Binomial (10, 0.2) ## 6 4996 5 1.97 Binomial (10, 0.2) ## 7 4997 2 1.97 Binomial (10, 0.2) ## 8 4998 2 1.97 Binomial (10, 0.2) ## 9 4999 3 1.97 Binomial (10, 0.2) ## 10 5000 1 1.97 Binomial (10, 0.2)
lln_bin %>% ggplot() + geom_line(aes(x=n, y=mean)) + geom_hline(yintercept = 2, lty= "dashed") + labs(title = "Binomial (10, 0,2)", x="Sample size", y="Sample mean") + theme_classic()
lln_unif <- tibble(n = seq_len(sims),
x = runif(sims),
mean = cumsum(x)/n,
distrib = str_c("Uniforme (0, 1)"))
head(lln_unif, n=10)
## # A tibble: 10 × 4 ## n x mean distrib ## <int> <dbl> <dbl> <chr> ## 1 1 0.120 0.120 Uniforme (0, 1) ## 2 2 0.497 0.309 Uniforme (0, 1) ## 3 3 0.234 0.284 Uniforme (0, 1) ## 4 4 0.0573 0.227 Uniforme (0, 1) ## 5 5 0.948 0.371 Uniforme (0, 1) ## 6 6 0.621 0.413 Uniforme (0, 1) ## 7 7 0.231 0.387 Uniforme (0, 1) ## 8 8 0.300 0.376 Uniforme (0, 1) ## 9 9 0.605 0.402 Uniforme (0, 1) ## 10 10 0.988 0.460 Uniforme (0, 1)
tail(lln_unif, n=10)
## # A tibble: 10 × 4 ## n x mean distrib ## <int> <dbl> <dbl> <chr> ## 1 4991 0.227 0.500 Uniforme (0, 1) ## 2 4992 0.518 0.500 Uniforme (0, 1) ## 3 4993 0.459 0.500 Uniforme (0, 1) ## 4 4994 0.347 0.500 Uniforme (0, 1) ## 5 4995 0.387 0.500 Uniforme (0, 1) ## 6 4996 0.00917 0.500 Uniforme (0, 1) ## 7 4997 0.672 0.500 Uniforme (0, 1) ## 8 4998 0.504 0.500 Uniforme (0, 1) ## 9 4999 0.210 0.500 Uniforme (0, 1) ## 10 5000 0.211 0.500 Uniforme (0, 1)
lln_unif %>% ggplot() + geom_line(aes(x=n, y=mean)) + geom_hline(yintercept = 0.5, lty= "dashed") + labs(title = "Uniforme (0, 1)", x="Sample size", y="Sample mean") + theme_classic()
sims <- 1000
n.samp <- 1000
z.binom <- z.unif <- rep(NA, sims)
for (i in 1:sims){
x <- rbinom(n.samp, p=0.2, size=10)
z.binom[i] <- (mean(x)-2)/sqrt(1.6/n.samp)
x <- runif(n.samp, min=0, max=1)
z.unif[i] <- (mean(x)-0.5)/sqrt(1/(12*n.samp))
}
results <- tibble(z.binom = z.binom,
z.unif = z.unif,
n.samp = seq(1:n.samp))
results %>%
ggplot() +
geom_histogram(aes(x=z.binom, y=after_stat(density)), bins=20) +
stat_function(fun = dnorm, color = "blue") +
labs(title = "Binomial (0,2, 10)",
x="z-score", y="Density") +
theme_classic()
results %>%
ggplot() +
geom_histogram(aes(x=z.unif, y=after_stat(density)), bins=20) +
stat_function(fun = dnorm, color = "blue") +
labs(title = "Uniforme (0, 1)",
x="z-score", y="Density") +
theme_classic()