Actividad 2

Problema 1

  1. Generar n coordenadas, utilice la distribucion uniforme con valor minimo de 0 y valor maximo de 1.
n <- 1000 # numero de coordenadas a generar
x <- runif(n, min = 0, max = 1)
  1. Genere 1000 coordenadas y : Y1,…,Yn, utilizando nuevamente la distribucion uniforme con valor minimo de 0 y valor maximo de 1.
y <- runif(n, min = 0, max = 1)
  1. Cada punto (Xi,Yi) se encuentra dentro del circulo 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 ultimo se puede realizar al calcular el valor (Xi menos 0.5)2+(Yi menos 0.5)2, que es el cuadrado de la distancia, y al determinar si es menor que 0.25.
# Calcular distancia al centro (0.5, 0.5)
dist <- (x - 0.5)^2 + (y - 0.5)^2 

# Determinar si la distancia es menor a 0.25 
dentro <- dist <= 0.25

d.1 ¿Cuantos de los puntos estan dentro del circulo?

print(sum(dentro))
## [1] 815

d.2 ¿Cual es su estimacion de Pi?

pi_est <- 4 * sum(dentro) / n
print(pi_est)
## [1] 3.26

Como se podrian graficar estos resultados?

plot(x, y, xlim=c(0,1), ylim=c(0,1))
points(x[dentro], y[dentro], col="red")

  • Generar una nueva simulacion con 10.000 puntos
# Numero de puntos a generar
n1 <- 10000  

# Generar coordenadas x e y aleatorias entre 0 y 1
x1 <- runif(n1, min = 0, max = 1)
y1 <- runif(n1, min = 0, max = 1)

# Calcular distancia al centro 
dist1 <- (x1 - 0.5)^2 + (y1 - 0.5)^2

# Determinar si esta dentro del circulo
dentro1 <- dist1 <= 0.25 

# Contar puntos dentro del circulo
puntos_dentro1 <- sum(dentro1)

# Estimar pi
pi_est1 <- 4 * puntos_dentro1 / n1

# Mostrar el resultado
pi_est1
## [1] 3.1196

Como se podrian graficar estos resultados?

plot(x1, y1, xlim=c(0,1), ylim=c(0,1))
points(x1[dentro1], y1[dentro1], col="red")

  • Generar una nueva simulacion con 100.000 puntos
# Numero de puntos a generar
n2 <- 100000  

# Generar coordenadas x e y aleatorias entre 0 y 1
x2 <- runif(n2, min = 0, max = 1)
y2 <- runif(n2, min = 0, max = 1)

# Calcular distancia al centro 
dist2 <- (x2 - 0.5)^2 + (y2 - 0.5)^2

# Determinar si esta dentro del circulo
dentro2 <- dist2 <= 0.25 

# Contar puntos dentro del circulo
puntos_dentro2 <- sum(dentro2)

# Estimar pi
pi_est2 <- 4 * puntos_dentro2 / n2

# Mostrar el resultado
pi_est2
## [1] 3.1382

Como se podrian graficar estos resultados?

plot(x2, y2, xlim=c(0,1), ylim=c(0,1))
points(x2[dentro2], y2[dentro2], col="red")

Conclusiones

  1. A mayor tamano de muestra (numero de puntos simulados) obtenemos estimaciones mas precisas. Con solo 1000 puntos la estimación tiene un error considerable, mientras que con 100,000 puntos logramos estimar Pi con gran exactitud.
  2. Las simulaciones son una herramienta util para estimar parámetros desconocidos, como Pi en este caso. Nos permiten modelar procesos aleatorios y estimar cantidades de interes.
  3. La variabilidad de la estimacion se reduce a medida que aumenta el tamano muestral. Esto se puede observar en los graficos, donde la dispersion de valores es mucho menor en las estimaciones con 100,000 puntos.
  4. Las simulaciones requieren una cantidad adecuada de iteraciones para lograr precision. Hay que encontrar un balance entre la precision deseada y el costo computacional de simular una gran cantidad de puntos.
  5. Los graficos ayudan a visualizar la distribucion, variabilidad y convergencia de las estimaciones obtenidas mediante simulacion.