Prior Beta(1,1)
Verosimiltud Binomial (20,14)
Posterior verdadera Beta(15,7)
library(ggplot2)
# Parámetros de la distribución beta
a <- 1 + 14
b <- 1 + 6
# Generar datos desde una distribución beta
x <- seq(0, 1, length = 1000)
y <- dbeta(x, shape1 = a, shape2 = b)
# Crear un marco de datos con los datos
df <- data.frame(x, y)
# Graficar la distribución beta con ggplot2
ggplot(df, aes(x, y)) +
geom_line(color = "blue", size = 1) +
labs(title = "Distribución posterior verdadera Beta(15,7)", x = "Valores", y = "Densidad")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## i Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
media = 0.68182
sigma = 0.00943
set.seed(123)
n <- 20
h <- 14 # numero de exitos
it <- 1000 # numero de interaciones
samples <- numeric()
for (i in 1:it) {
prior_sample <- rbeta(1, 1, 1) # genera un numero aleatorio de una distribucion beta(1,1)
heads_sample <- rbinom(1, n, prior_sample) # genera el numero de exitos de una distribucion bernoulli
if (heads_sample == h) { # verifica condición si el numero de exitos de la simulación coincide con el número de exitos observados
samples <- c(samples, prior_sample) # guarda el valor del parámetro si cumple la condición
}
}
# Crear un marco de datos con los datos
df <- data.frame(samples)
# Graficar el histograma y la densidad
ggplot(df, aes(x = samples)) +
geom_density(color = "red", size = 1) + # Agregar densidad
labs(title = "Rejection Sampling - Distribución de la Muestra 1000 de iteraciones",
x = "Valor de la Muestra",
y = "Densidad")+
xlim(0, 1)
mean(samples)
## [1] 0.6302586
var(samples)
## [1] 0.01042802
set.seed(123)
n <- 20
h <- 14 # numero de exitos
it <- 10000 # numero de interaciones
samples <- numeric()
for (i in 1:it) {
prior_sample <- rbeta(1, 1, 1) # genera un numero aleatorio de una distribucion beta(1,1)
heads_sample <- rbinom(1, n, prior_sample) # genera el numero de exitos de una distribucion bernoulli
if (heads_sample == h) { # verifica condición si el numero de exitos de la simulación coincide con el número de exitos observados
samples <- c(samples, prior_sample) # guarda el valor del parámetro si cumple la condición
}
}
# Crear un marco de datos con los datos
df <- data.frame(samples)
# Graficar el histograma y la densidad
ggplot(df, aes(x = samples)) +
geom_density(color = "red", size = 1) + # Agregar densidad
labs(title = "Rejection Sampling - Distribución de la Muestra 10000 de iteraciones",
x = "Valor de la Muestra",
y = "Densidad")+
xlim(0, 1)
mean(samples)
## [1] 0.6809181
var(samples)
## [1] 0.009268504
set.seed(123)
n <- 20
h <- 14 # numero de exitos
it <- 100000 # numero de interaciones
samples <- numeric()
for (i in 1:it) {
prior_sample <- rbeta(1, 1, 1) # genera un numero aleatorio de una distribucion beta(1,1)
heads_sample <- rbinom(1, n, prior_sample) # genera el numero de exitos de una distribucion bernoulli
if (heads_sample == h) { # verifica condición si el numero de exitos de la simulación coincide con el número de exitos observados
samples <- c(samples, prior_sample) # guarda el valor del parámetro si cumple la condición
}
}
# Crear un marco de datos con los datos
df <- data.frame(samples)
# Graficar el histograma y la densidad
ggplot(df, aes(x = samples)) +
geom_density(color = "red", size = 1) + # Agregar densidad
labs(title = "Rejection Sampling - Distribución de la Muestra 100000 de iteraciones",
x = "Valor de la Muestra",
y = "Densidad")+
xlim(0, 1)
mean(samples)
## [1] 0.6827453
var(samples)
## [1] 0.009610484
set.seed(123)
n <- 20
h <- 14
it <- 100000
samples <- numeric()
mean_evolution <- numeric() # Vector para almacenar la evolución de la media
for (i in 1:it) {
prior_sample <- rbeta(1, 1, 1)
heads_sample <- rbinom(1, n, prior_sample)
if (heads_sample == h) {
samples <- c(samples, prior_sample)
}
# Calcular la media en cada iteración y almacenarla
mean_evolution <- c(mean_evolution, mean(samples))
}
# Crear un marco de datos con los datos de la evolución de la media
df_evolution <- data.frame(iteration = 1:it, mean = mean_evolution)
# Graficar la evolución de la media
ggplot(df_evolution, aes(x = iteration, y = mean)) +
geom_line(color = "red", size = 1) +
labs(title = "Sampling Rejection - Evolución de la Media a lo largo de las Iteraciones",
x = "Iteración",
y = "Media")
## Warning: Removed 14 rows containing missing values (`geom_line()`).
# Establece la semilla para la reproducibilidad
set.seed(123)
# Parámetros
n <- 20
h <- 14
it <- 1000
samples <- numeric()
current_sample <- 0.5
rejection_count <- 0
# Bucle de simulación
for (i in 1:it) {
prop_sample <- pmax(0, pmin(1, rnorm(1, current_sample, 0.1)))
current_prob <- dbinom(h, n, current_sample)
prop_prob <- dbinom(h, n, prop_sample)
accept_ratio <- prop_prob / current_prob
rand <- runif(1)
if (rand <= accept_ratio) {
current_sample <- prop_sample
} else {
rejection_count <- rejection_count + 1
}
samples <- c(samples, current_sample)
}
# Crear un marco de datos con los datos
df <- data.frame(samples)
# Graficar la densidad kernel
ggplot(df, aes(x = samples)) +
geom_density(color = "blue", size = 1) +
labs(title = "Metropolis Hastings - Distribución de la Muestra 1000 iteraciones",
x = "Valor de la Muestra",
y = "Densidad") +
xlim(0, 1)
mean(samples)
## [1] 0.6844295
var(samples)
## [1] 0.0101563
# Establece la semilla para la reproducibilidad
set.seed(123)
# Parámetros
n <- 20
h <- 14
it <- 10000
samples <- numeric()
current_sample <- 0.5
rejection_count <- 0
# Bucle de simulación
for (i in 1:it) {
prop_sample <- pmax(0, pmin(1, rnorm(1, current_sample, 0.1)))
current_prob <- dbinom(h, n, current_sample)
prop_prob <- dbinom(h, n, prop_sample)
accept_ratio <- prop_prob / current_prob
rand <- runif(1)
if (rand <= accept_ratio) {
current_sample <- prop_sample
} else {
rejection_count <- rejection_count + 1
}
samples <- c(samples, current_sample)
}
# Crear un marco de datos con los datos
df <- data.frame(samples)
# Graficar la densidad kernel
ggplot(df, aes(x = samples)) +
geom_density(color = "blue", size = 1) +
labs(title = "Metropolis Hastings - Distribución de la Muestra 10000 iteraciones",
x = "Valor de la Muestra",
y = "Densidad") +
xlim(0, 1)
mean(samples)
## [1] 0.6804315
var(samples)
## [1] 0.00990304
# Establece la semilla para la reproducibilidad
set.seed(123)
# Parámetros
n <- 20
h <- 14
it <- 100000
samples <- numeric()
current_sample <- 0.5
rejection_count <- 0
# Bucle de simulación
for (i in 1:it) {
prop_sample <- pmax(0, pmin(1, rnorm(1, current_sample, 0.1)))
current_prob <- dbinom(h, n, current_sample)
prop_prob <- dbinom(h, n, prop_sample)
accept_ratio <- prop_prob / current_prob
rand <- runif(1)
if (rand <= accept_ratio) {
current_sample <- prop_sample
} else {
rejection_count <- rejection_count + 1
}
samples <- c(samples, current_sample)
}
# Crear un marco de datos con los datos
df <- data.frame(samples)
# Graficar la densidad kernel
ggplot(df, aes(x = samples)) +
geom_density(color = "blue", size = 1) +
labs(title = "Metropolis Hastings - Distribución de la Muestra 100000 iteraciones",
x = "Valor de la Muestra",
y = "Densidad") +
xlim(0, 1)
mean(samples)
## [1] 0.6809516
var(samples)
## [1] 0.009296026
# Establece la semilla para la reproducibilidad
set.seed(123)
# Parámetros
n <- 20
h <- 14
it <- 100000
samples <- numeric()
current_sample <- 0.5
rejection_count <- 0
mean_evolution <- numeric() # Vector para almacenar la evolución de la media
# Bucle de simulación
for (i in 1:it) {
prop_sample <- pmax(0, pmin(1, rnorm(1, current_sample, 0.1)))
current_prob <- dbinom(h, n, current_sample)
prop_prob <- dbinom(h, n, prop_sample)
accept_ratio <- prop_prob / current_prob
rand <- runif(1)
if (rand <= accept_ratio) {
current_sample <- prop_sample
} else {
rejection_count <- rejection_count + 1
}
samples <- c(samples, current_sample)
# Calcular la media en cada iteración y almacenarla
mean_evolution <- c(mean_evolution, mean(samples))
}
# Crear un marco de datos con los datos de la evolución de la media
df_evolution <- data.frame(iteration = 1:it, mean = mean_evolution)
# Graficar la evolución de la media
ggplot(df_evolution, aes(x = iteration, y = mean)) +
geom_line(color = "blue", size = 1) +
labs(title = "Metropolis Hastings - Evolución de la Media a lo largo de las Iteraciones",
x = "Iteración",
y = "Media")