Metodos y Simulacion Estadistica

Estimación del valor de π

La siguiente figura sugiere como estimar el valor de π con una simulación. En la figura, un círcuito 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 éste, 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 π.

Paso 1

Genero n cordenadas de X y Y en intervalo entre 0 y 1

x <- runif(n = 1000, min = 0, max = 1)
y <- runif(n = 1000, min = 0, max = 1)

Paso 2 Estimacion de pi

estimar_pi = function(x, y) {
  
  n = length(x)
  puntos_dentro = 0
  
  for (i in 1:n) {
    
    distancia = (x[i]-0.5)^2 + (y[i]-0.5)^2
    
    if (distancia < 0.25) {
      puntos_dentro = puntos_dentro + 1
    }
  }
  
  pi = (puntos_dentro/n)*4
  
  return(c(puntos_dentro, pi))
  
}

Resultado

resultado = estimar_pi(x,y)
puntos_dentro = resultado[1]
pi_estimado1 = resultado[2]

#Numero de puntos dentro del rango
puntos_dentro
## [1] 788
#Valor estimado Pi
pi_estimado1
## [1] 3.152

Estimacion del Error

error1 <- abs(pi - pi_estimado1)
#Error
error1
## [1] 0.01040735

Visualizacion

#Grafica
plot(x, y, cex = 0.5, main = "Estimacion para 1000 valores", asp = 1)

#Punto Central
points(mean(x), mean(y), cex = 0.5, col = 'red', pch = 10)

#Circulo de referencia
symbols(0.5, 0.5, circles = 0.5, add = TRUE, inches = FALSE)


Estimación con 10000 Puntos

x2 <- runif(n = 10000, min = 0, max = 1)
y2 <- runif(n = 10000, min = 0, max = 1)

resultado2 = estimar_pi(x2, y2)
puntos_dentro2 = resultado2[1]
pi_estimado2 = resultado2[2]

puntos_dentro2
## [1] 7924
pi_estimado2
## [1] 3.1696

Resultado

resultado2 = estimar_pi(x2,y2)
puntos_dentro2 = resultado2[1]
pi_estimado2 = resultado2[2]

#Numero de puntos dentro del rango
puntos_dentro2
## [1] 7924
#Valor estimado Pi
pi_estimado2
## [1] 3.1696

Estimacion del Error

error2 <- abs(pi - pi_estimado2)
#Error
error2
## [1] 0.02800735

Visualización

#Grafica
plot(x2, y2, cex = 0.5, main = "Estimacion para 10000 valores", asp = 1)

#Punto Central
points(mean(x2), mean(y2), cex = 0.5, col = 'red', pch = 10)

#Circulo de referencia
symbols(0.5, 0.5, circles = 0.5, add = TRUE, inches = FALSE)


Estimación con 100000 Puntos

x3 <- runif(n = 100000, min = 0, max = 1)
y3 <- runif(n = 100000, min = 0, max = 1)

resultado3 = estimar_pi(x3, y3)
puntos_dentro3 = resultado3[1]
pi_estimado3 = resultado3[2]

Resultados

#Numero de puntos dentro del rango
puntos_dentro3
## [1] 78409
#Valor estimado Pi
pi_estimado3
## [1] 3.13636
error3 <- abs(pi - pi_estimado3)
#Error
error3
## [1] 0.005232654

Visualización

#Grafica
plot(x3, y3, cex = 0.5, main = "Estimacion para 10000 valores", asp = 1)

#Punto Central
points(mean(x3), mean(y3), cex = 0.5, col = 'red', pch = 10)

#Circulo de referencia
symbols(0.5, 0.5, circles = 0.5, add = TRUE, inches = FALSE)

Conclusiones

Como observamos anteriormente con una muestra de solo 1,000 puntos, es probable que la estimación del parámetro de interés presente un error relativamente alto, posiblemente de 0.05 o más. Esto se debe a la mayor variabilidad inherente a las muestras pequeñas, lo que incrementa el margen de error y la incertidumbre alrededor de la estimación.

Por otro lado, al aumentar el tamaño de la muestra a 10,000 o 100,000 puntos, la estimación tiende a ser más precisa y cercana al valor verdadero. Esto se debe a la ley de los grandes números, donde a mayor cantidad de datos, la variabilidad se reduce, lo que permite que la estimación converja hacia el valor real con mayor probabilidad.

De igual forma, el valor de π es mas cercano en la muestra de 100,000.