Problema 1 - Estimación del valor de π
Introducción
En este informe, se estimara el valor de π utilizando un método de simulación conocido como Monte Carlo. El método se basa en generar puntos aleatorios en un cuadrado y determinar cuántos estan dentro de un círculo en dicho cuadrado.
Definición del Problema
Punto (a): Genere n coordenadas x: X1, . . . , Xn. Utilice la distribución uniforme con valor mínimo de 0 y valor máximo de 1. La distribución uniforme genera variables aleatorias que tienen la misma probabilidad de venir de cualquier parte del intervalo (0,1).
Punto(b): Genere 1000 coordenadas y : Y1,…,Yn , utilizando nuevamente la distribución uniforme con valor mínimo de 0 y valor máximo de 1.
Punto(c): Cada punto (Xi,Yi) se encuentra dentro del círculo si su distancia desde el centro (0.5,0.5)es menor a 0.5. Para cada par (Xi,Yi) determine si la distancia desde el centro es menor a 0.5. Esto último se puede realizar al calcular el valor(Xi−0.5)2+(Yi−0.5)2 , que es el cuadrado de la distancia, y al determinar si es menor que 0.25.
Punto(d): ¿Cuántos de los puntos están dentro del círculo? ¿Cuál es su estimación de π ?
Definición de los objetivos.
Objetivo general: Estimar el valor de π usando el método de Monte Carlo.
Objetivos específicos: Generar puntos aleatorios en un cuadrado unitario. Determinar cuántos de esos puntos caen dentro del círculo inscrito. Calcular el valor de π con base en la proporción de puntos dentro del círculo. Evaluar cómo cambia la precisión de la estimación a medida que aumenta el número de puntos generados.
Definición de las variables de interés.
Coordenadas (x, y): Variables continuas generadas aleatoriamente entre 0 y 1, que representan las posiciones de los puntos dentro del cuadrado. Distancia al centro del círculo: Variable calculada que mide la distancia de cada punto respecto al centro del círculo. Puntos dentro del círculo: Variable booleana que indica si un punto está dentro o fuera del círculo inscrito en el cuadrado. Estimación de π: Variable de resultado que estima el valor de π basado en la proporción de puntos dentro del círculo.
Diseño del experimento.
Generar un número dado de puntos aleatorios con coordenadas uniformemente distribuidas en el intervalo [0, 1] para ambas dimensiones (x, y). Calcular la distancia de cada punto desde el centro del círculo ubicado en el punto (0.5, 0.5) con un radio de 0.5. Contar cuántos puntos caen dentro del círculo (donde la distancia calculada es menor que 0.25). Usar la relación entre los puntos dentro y fuera del círculo para estimar π. Para un cuadrado de área 1 y un círculo inscrito de área π/4, la proporción de puntos dentro del círculo debe ser π/4.
Análisis descriptivo o exploratorio de datos.
Probabilidad: La probabilidad de que un punto generado aleatoriamente caiga dentro del círculo es igual a la relación entre el área del círculo y el área del cuadrado, es decir, π/4.
Variable aleatoria: Las coordenadas x e y son variables aleatorias continuas que siguen una distribución uniforme en el intervalo [0,1].
Exploración gráfica: Se puede realizar una visualización de los puntos generados, coloreando aquellos que caen dentro del círculo para observar la proporción gráfica de los puntos utilizados en la estimación.
# Punto (a)
n <- 1000
# Punto (b), Determinar los puntos dentro del círculo
# Calcular la distancia al cuadrado desde el centro para cada punto
x <- runif(n, min = 0, max = 1) # coordenadas x
y <- runif(n, min = 0, max = 1) # coordenadas y
# Punto(c), Determinar los puntos dentro del círculo
# Calcular la distancia al cuadrado desde el centro para cada punto
distancias_cuadrado <- (x - 0.5)^2 + (y - 0.5)^2
# Contar cuántos puntos están dentro del círculo
dentro_circulo <- sum(distancias_cuadrado < 0.25)
# Punto (d), Estimar el valor de π
# Estimar el valor de π
pi_estimado <- (dentro_circulo / n) * 4
pi_estimado## [1] 3.156
# Repetir la simulación con más puntos
# Función para estimar π con un número dado de puntos
estimar_pi <- function(n) {
x <- runif(n, min = 0, max = 1)
y <- runif(n, min = 0, max = 1)
distancias_cuadrado <- (x - 0.5)^2 + (y - 0.5)^2
dentro_circulo <- sum(distancias_cuadrado < 0.25)
pi_estimado <- (dentro_circulo / n) * 4
return(pi_estimado)
}
# Estimaciones con 10, 100, 1000, 10,000 y 100,000 puntos
pi_10 <- estimar_pi(10)
pi_100 <- estimar_pi(100)
pi_1000 <- estimar_pi(1000)
pi_10000 <- estimar_pi(10000)
pi_100000 <- estimar_pi(100000)
pi_10## [1] 3.2
## [1] 3.12
## [1] 3.164
## [1] 3.1284
## [1] 3.14252
# Graficar el ejercicio
# Generar las coordenadas x e y
n <- 1000 # número de puntos
x <- runif(n, min = 0, max = 1)
y <- runif(n, min = 0, max = 1)
# Calcular la distancia al cuadrado desde el centro (0.5, 0.5)
distancias_cuadrado <- (x - 0.5)^2 + (y - 0.5)^2
# Determinar si los puntos están dentro del círculo
dentro_circulo <- distancias_cuadrado < 0.25
# Crear un dataframe con las coordenadas y la información de dentro/fuera del círculo
df <- data.frame(
x = x,
y = y,
dentro_circulo = dentro_circulo
)
# Mostrar el dataframe
head(df)## x y dentro_circulo
## 1 0.3367646 0.14890691 TRUE
## 2 0.7177373 0.05203731 TRUE
## 3 0.8901405 0.99168002 FALSE
## 4 0.1712746 0.59742698 TRUE
## 5 0.8078765 0.65920607 TRUE
## 6 0.8145623 0.16252644 TRUE
#
# Crear una columna para el tamaño de los puntos
# Aquí, por ejemplo, damos un tamaño de 3 a los puntos dentro del círculo y 1 a los fuera del círculo
df$size <- ifelse(df$dentro_circulo, 5, 5)
# Mostrar el dataframe con la nueva columna
head(df)## x y dentro_circulo size
## 1 0.3367646 0.14890691 TRUE 5
## 2 0.7177373 0.05203731 TRUE 5
## 3 0.8901405 0.99168002 FALSE 5
## 4 0.1712746 0.59742698 TRUE 5
## 5 0.8078765 0.65920607 TRUE 5
## 6 0.8145623 0.16252644 TRUE 5
#
# Graficar los puntos con tamaño ajustado
ggplot(df, aes(x = x, y = y)) +
geom_point(aes(color = dentro_circulo, size = size)) +
scale_color_manual(values = c("red", "black"), labels = c("Fuera del círculo", "Dentro del círculo")) +
scale_size_continuous(range = c(1, 1), guide = FALSE) + # Ajustar el rango de tamaños
labs(title = "Estimación de π mediante simulación",
x = "Coordenada X",
y = "Coordenada Y") +
theme_minimal() +
theme(legend.title = element_blank())Inferencia estadística.
A medida que el número de puntos generados aumenta, la estimación de π se aproxima a su valor real. El método de Monte Carlo, al ser probabilístico, mejora su precisión con el número de simulaciones. A partir de las estimaciones con diferentes tamaños de muestra (10, 100, 1000, 10,000 y 100,000 puntos), se puede observar la convergencia del valor estimado hacia el valor real de π.
Conclusiones y recomendaciones.
Conclusiones: El método de Monte Carlo es efectivo para estimar el valor de π, aunque la precisión de la estimación mejora significativamente con el número de puntos generados. A medida que se incrementa el tamaño de la muestra, la estimación se acerca al valor verdadero de π.
Recomendaciones: Para obtener una estimación precisa de π, es recomendable utilizar un número elevado de puntos. El método de Monte Carlo es útil para resolver problemas de integración y estimación en los que no se tiene una solución exacta disponible, siempre que se disponga de suficiente capacidad computacional para ejecutar muchas simulaciones.