El presente Informe tiene como objetivo mostrar de manera detallada el desarrollo del Problema 1 de la unidad 2 de la materia Metodos Y Simulación Estadistica de la Maestria de Ciencia de Datos de la Universidad Javeriana de Cali, Este probelma esta relacionado con una simulación para estimar el valor de π.
La siguiente figura sugiere como estimar el valor de π con una simulación. En la figura, un circulo con un área igual a π/4, está inscrito en un cuadrado cuya área es igual a 1. Se elige de forma aleatoria n puntos dentro del cuadrado . La probabilidad de que un punto esté dentro del círculo es igual a la fracción del área del cuadrado que abarca a este, la cual es π/4. Por tanto, se puede estimar el valor de π/4 al contar el número de puntos dentro del círculo, para obtener la estimación de π/4. De este último resultado se encontrar una aproximación para el valor de π.
Lo primero que realizamos fue crear una varaibles denominada “n” para asignar la cantidad de coordenadas que vamos a generar
n = 1000
Luego de esto generamos las 1000 coordenadas usando la distribución Uniforme:
set.seed(5634)
X = runif(n,0,1)
Generamos las 1000 coordenadas usando la distribución Uniforme:
set.seed(5678)
Y = runif(n,0,1)
Nosotros decidimos almacenar X y Y en un data frame y partiendo de este realizar todos los calculos de cara a llegar al resultado. Creamos el DataFrame
data=data.frame(X,Y)
Ahora Calculamos la distancias de las coordenadas desde el centro y la almacenamos en una variable nueva del Dataframe
data$distancia = (data$X-0.5)^2 + (data$Y-0.5)^2
Seguido de esto creamos una variable de cara a identificar de manera binaria cuales coordenadas son inferiores a 0.25
data_menor025 = subset(data, data$distancia < 0.25)
data$encirculo = ifelse(data$distancia < 0.25 ,1,0)
A continuación hacemos una sumatoria de la variable encirculo del data frame data, de esta forma podemos obtener el total de coordenadas que se encuentran dentro del circulo.
cat("La cantidad de puntos dentro del circulo son: ",sum(data$encirculo),"\n")
## La cantidad de puntos dentro del circulo son: 783
Ahora procedemos a calcular la estimación de π para resolver la segunda pregunta del punto d.
pi_estimate = 4 * (sum(data$encirculo) / n)
cat("Estimación de π: ", pi_estimate, "\n")
## Estimación de π: 3.132
Como se puede notar en los resultados el valor de π con estas 783 coordenadas generadas aleatoriamente y que estan dentro del circulo esta a 0,009 del valor de π.
n = 10000
set.seed(5634)
X = runif(n,0,1)
set.seed(5678)
Y = runif(n,0,1)
data=data.frame(X,Y)
data$distancia = (data$X-0.5)^2 + (data$Y-0.5)^2
data_menor025 = subset(data, data$distancia < 0.25)
data$encirculo = ifelse(data$distancia < 0.25 ,1,0)
cat("La cantidad de puntos dentro del circulo son: ",sum(data$encirculo), "\n")
## La cantidad de puntos dentro del circulo son: 7866
pi_estimate = 4 * (sum(data$encirculo) / n)
cat("Estimación de π:", pi_estimate, "\n")
## Estimación de π: 3.1464
Con las 10.000 coordenadas generadas aleatoriamente, quedaro 7.866 valores dentro del cirulo, los cuales se usaron para estimar el valor de π que nos da como resultado 3,1464 es decir a 0,004
n = 100000
set.seed(56341)
X = runif(n,0,1)
set.seed(56781)
Y = runif(n,0,1)
data=data.frame(X,Y)
data$distancia = (data$X-0.5)^2 + (data$Y-0.5)^2
data_menor025 = subset(data, data$distancia < 0.25)
data$encirculo = ifelse(data$distancia < 0.25 ,1,0)
cat("La cantidad de puntos dentro del circulo son: ",sum(data$encirculo), "\n")
## La cantidad de puntos dentro del circulo son: 78476
pi_estimate = 4 * (sum(data$encirculo) / n)
cat("Estimación de π:", pi_estimate, "\n")
## Estimación de π: 3.13904
Con las 100.000 coordenadas generadas aleatoriamente, quedaron 78.476 valores dentro del cirulo, los cuales se usaron para estimar el valor de π que nos da como resultado 3,13904 es decir a 0,0025.
Como podemos visualizar en este ejercicio donde generamos valores aleatorios con una distribución uniforme entre 0 y 1, donde se parte del area de un cuadrado y se traza un circulo con base al valor de π/4 y se toman las coordenadas dentro de esta area para estimar el calor de π, podemos concluir que cuanto mas valores aletorios generemos, el resultado del estimado mas se acerca al mismo.