Problema uno; Estimación del valor de π

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

Solución

Primer paso: número de puntos a generar n <- 1000

Segundo paso: generar coordenadas x y y con distribución uniforme en el intervalo [0, 1] x <- runif(n) y <- runif(n)

Tercer paso: contador para puntos dentro del círculo puntos_dentro <- 0

Cuarto paso:Iterar sobre los puntos para determinar si están dentro del círculo for (i in 1:n) { distancia_cuadrada <- (x[i] - 0.5)^2 + (y[i] - 0.5)^2 if (distancia_cuadrada < 0.25) { puntos_dentro <- puntos_dentro + 1 } }

Quinto paso:Calcular la estimación de π/4 estimacion_pi_4 <- puntos_dentro / n

Sexto paso:Calcular la estimación de π estimacion_pi <- estimacion_pi_4 * 4

Resultados

cat(“Número de puntos dentro del círculo:”, puntos_dentro, “”)

cat(“Estimación de π:”, estimacion_pi, “”)

Números de puntos dentro del círculo: 781 Estimación de π: 3.124

Problema dos; Propiedades de los estimadores

La simulación ayuda a entender y validad las propiedades de los estimadores estadísticos como son. insesgadez, eficiencia y la consistencia principalmente. El siguiente problema permite evidenciar las principales características de un grupo de estimadores propuestos para la estimación de un parámetro asociado a un modelo de probabilidad.

Sean X1, X2, X3 y X4, una muestra aleatoria de tamaño n=4 cuya población la conforma una distribución exponencial con parámetro θ desconocido. Determine las características de cada uno de los siguientes estimadores propuestos:

Genere una muestras de n=20, 50, 100 y 1000 para cada uno de los estimadores planteados. En cada caso evalue las propiedades de insesgadez, eficiencia y consistencia Suponga un valor para el parámetro θ

Solución

Para θ1

Número de muestras a generar para cada tamaño n num_samples <- c(20, 50, 100, 1000)

Definir función para calcular θ1 estimador <- function(x) { (x[1] + x[2]) / 6 + (x[3] + x[4]) / 3 }

Lista para almacenar resultados de cada tamaño n resultados <- list()

Iterar sobre diferentes tamaños de muestras for (n in num_samples) {

Generar muestras muestras <- matrix(rexp(4 * n), ncol = 4)

Calcular estimaciones para cada muestra y almacenar en la lista estimaciones <- apply(muestras, 1, estimador) resultados[[as.character(n)]] <- estimaciones

Calcular sesgo y varianza para evaluar insesgadez y eficiencia de θ1 sesgo <- mean(estimaciones) - theta varianza <- var(estimaciones)

Imprimir resultados para cada tamaño n cat(“Tamaño de muestra:”, n, “”) cat(“Sesgo:”, sesgo, “”) cat(“Varianza:”, varianza, “”) } # Generar boxplots para visualizar distribuciones de estimaciones boxplot(resultados, names = num_samples, main = “Distribución de Estimaciones θ1”)

Tamaño de muestra: 20 Sesgo: -1.134133 Varianza: 0.2724503

Tamaño de muestra: 50 Sesgo: -0.9888862 Varianza: 0.2005576

Tamaño de muestra: 100 Sesgo: -1.061767 Varianza: 0.2739136

Tamaño de muestra: 1000 Sesgo: -0.9975748 Varianza: 0.2631968

La consistencia se evidencia en que al aumentar la muestra se vuelve insesgado

Para θ2

Número de muestras a generar para cada tamaño n num_samples <- c(20, 50, 100, 1000)

Definir función para θ2 nuevo_estimador <- function(x) { (x[1] + 2 * x[2] + 3 * x[3] + 4 * x[4]) / 5 }

Lista para almacenar resultados de cada tamaño n resultados_nuevo_estimador <- list()

Iterar sobre diferentes tamaños de muestras for (n in num_samples) {

Generar muestras muestras <- matrix(rexp(4 * n), ncol = 4)

Calcular estimaciones para cada muestra y almacenar en la lista estimaciones <- apply(muestras, 1, nuevo_estimador) resultados_nuevo_estimador[[as.character(n)]] <- estimaciones

Calcular sesgo y varianza para evaluar insesgadez y eficiencia sesgo <- mean(estimaciones) - theta varianza <- var(estimaciones)

Imprimir resultados para cada tamaño n cat(“Tamaño de muestra:”, n, “”) cat(“Sesgo:”, sesgo, “”) cat(“Varianza:”, varianza, “”) }

Generar boxplots para visualizar distribuciones de estimaciones boxplot(resultados_nuevo_estimador, names = num_samples, main = “Distribución de Estimaciones θ2”)

Tamaño de muestra: 20 Sesgo: -0.2699726 Varianza: 0.7022107

Tamaño de muestra: 50 Sesgo: -0.03361678 Varianza: 1.735213

Tamaño de muestra: 100 Sesgo: 0.03662305 Varianza: 1.510708

Tamaño de muestra: 1000 Sesgo: 0.08193113 Varianza: 1.296973

La consistencia se evidencia en que al aumentar la muestra se vuelve insesgado

Para θ3

Número de muestras a generar para cada tamaño n num_samples <- c(20, 50, 100, 1000)

Definir función para θ3 estimador <- function(x) (x[1] + x[2] + x[3] + x[4]) / 4

Lista para almacenar resultados de cada tamaño n resultados_estimador <- list()

Iterar sobre diferentes tamaños de muestras for (n in num_samples) {

Generar muestras muestras <- matrix(rexp(4 * n), ncol = 4)

Calcular estimaciones para cada muestra y almacenar en la lista estimaciones <- apply(muestras, 1, estimador) resultados_estimador[[as.character(n)]] <- estimaciones

Calcular sesgo y varianza para evaluar insesgadez y eficiencia sesgo <- mean(estimaciones) - theta varianza <- var(estimaciones)

Imprimir resultados para cada tamaño n cat(“Tamaño de muestra:”, n, “”) cat(“Sesgo:”, sesgo, “”) cat(“Varianza:”, varianza, “”) }

Tamaño de muestra: 20 Sesgo: -0.883431 Varianza: 0.1370218

Tamaño de muestra: 50 Sesgo: -1.063004 Varianza: 0.1853415

Tamaño de muestra: 100 Sesgo: -0.965079 Varianza: 0.2977194

Tamaño de muestra: 1000 Sesgo: -1.014644 Varianza: 0.2302601

Generar boxplots para visualizar distribuciones de estimaciones boxplot(resultados_estimador, names = num_samples, main = “Distribución de Estimaciones θ3”) La consistencia se evidencia en que al aumentar la muestra se vuelve insesgado

Para θ4

Número de muestras a generar para cada tamaño n num_samples <- c(20, 50, 100, 1000)

Definir función para el estimador θ4 estimador <- function(x) (min(x) + max(x)) / 2

Lista para almacenar resultados de cada tamaño n resultados_estimador <- list()

Iterar sobre diferentes tamaños de muestras for (n in num_samples) {

Generar muestras muestras <- matrix(rexp(4 * n), ncol = 4)

Calcular estimaciones para cada muestra y almacenar en la lista estimaciones <- apply(muestras, 1, estimador) resultados_estimador[[as.character(n)]] <- estimaciones

Calcular sesgo y varianza para evaluar insesgadez y eficiencia sesgo <- mean(estimaciones) - theta varianza <- var(estimaciones)

Imprimir resultados para cada tamaño n cat(“Tamaño de muestra:”, n, “”) cat(“Sesgo:”, sesgo, “”) cat(“Varianza:”, varianza, “”) }

Tamaño de muestra: 20 Sesgo: -0.8315893 Varianza: 0.9535938

Tamaño de muestra: 50 Sesgo: -0.9984498 Varianza: 0.3200214

Tamaño de muestra: 100 Sesgo: -0.8427523 Varianza: 0.3978612

Tamaño de muestra: 1000 Sesgo: -0.8240389 Varianza: 0.3840469

Generar boxplots para visualizar distribuciones de estimaciones boxplot(resultados_estimador, names = num_samples, main = “Distribución de Estimaciones θ4”)

La consistencia se evidencia en que al aumentar la muestra se vuelve insesgado

Problema tres; Teorema del límite central

El Teorema del Límite Central es uno de los más importantes en la inferencia estadística y habla sobre la convergencia de los estimadores como la proporción muestral a la distribución normal. Algunos autores afirman que esta aproximación es bastante buena a partir del umbral n>30.

A continuación se describen los siguientes pasos para su verificación:

Realice una simulación en la cual genere una población de n=1000 (Lote), donde el porcentaje de individuos (supongamos plantas) enfermas sea del 50%.

Genere una función que permita: Obtener una muestra aleatoria de la población y Calcule el estimador de la proporción muestral pˆ para un tamaño de muestra dado n.

Repita el escenario anterior (b) n=500 veces y analice los resultados en cuanto al comportamiento de los 500 resultados del estimador pˆ. ¿Qué tan simétricos o sesgados son los resultados obtenidos? y ¿qué se puede observar en cuanto a la variabilidad?. Realice en su informe un comentario sobre los resultados obtenidos.

Repita los puntos b y c para tamaños de muestra n=5, 10, 15, 20, 30, 50, 60, 100, 200, 500. Compare los resultados obtenidos para los diferentes tamaños de muestra en cuanto a la normalidad. Utilice pruebas de bondad y ajuste (shapiro wilks :shspiro.test()) y métodos gráficos (gráfico de normalidad: qqnorm()). Comente en su informe los resultados obtenidos

Repita toda la simulación (puntos a – d), pero ahora para lotes con 10% de plantas enfermas y de nuevo para lotes con un 90% de plantas enfermas. Concluya sobre los resultados del ejercicio.

Solución

Configuración inicial set.seed(123) # Para reproducibilidad de los resultados

Punto a: Generar población n_poblacion <- 1000 prop_enfermas <- 0.5 poblacion <- rbinom(n_poblacion, 1, prop_enfermas)

Punto b: Función para obtener muestra y calcular estimador muestra_y_estimador <- function(n_muestra) { muestra <- sample(poblacion, n_muestra, replace = FALSE) estimador_prop <- mean(muestra) return(estimador_prop) }

Punto c: Realizar simulación para n = 500 n_simulaciones <- 500 n_muestras <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)

resultados <- matrix(nrow = n_simulaciones, ncol = length(n_muestras))

for (i in 1:n_simulaciones) { for (j in 1:length(n_muestras)) { estimador <- muestra_y_estimador(n_muestras[j]) resultados[i, j] <- estimador } }

comentario: Al analizar el comportamiento de los estimadores en función del tamaño de muestra, se observa que a medida que el tamaño de muestra aumenta, la distribución de los estimadores tiende a aproximarse a una distribución normal. Esto es consistente con el Teorema del Límite Central, que establece que, a medida que el tamaño de muestra aumenta, la distribución de las medias muestrales tiende a una distribución normal, independientemente de la distribución original de la población.

Punto d: Análisis de normalidad library(stats)

Función para realizar pruebas de normalidad y generar gráficos QQ analizar_normalidad <- function(datos, titulo) { shapiro_result <- shapiro.test(datos) qqnorm(datos, main = titulo) qqline(datos) cat(“Prueba de Shapiro-Wilk:”) print(shapiro_result) cat(“”) }

Realizar análisis para diferentes tamaños de muestra for (j in 1:length(n_muestras)) { analizar_normalidad(resultados[, j], paste(“n =”, n_muestras[j])) }

Comentario:Al repetir la simulación para diferentes proporciones de individuos enfermos en la población, se observa que las pruebas de normalidad (Shapiro-Wilk) y los gráficos QQ indican que a medida que la proporción de individuos enfermos aumenta, la distribución de los estimadores tiende a desviarse de la normalidad. Esto puede deberse a la influencia de la distribución subyacente de la población y a los efectos de valores extremos en las muestras.

Punto e: Repetir simulación para diferentes proporciones enfermas prop_enfermas <- c(0.1, 0.5, 0.9)

for (k in 1:length(prop_enfermas)) { poblacion <- rbinom(n_poblacion, 1, prop_enfermas[k]) resultados_prop <- matrix(nrow = n_simulaciones, ncol = length(n_muestras))

for (i in 1:n_simulaciones) { for (j in 1:length(n_muestras)) { estimador <- muestra_y_estimador(n_muestras[j]) resultados_prop[i, j] <- estimador } }

cat(“Resultados para proporción enfermas =”, prop_enfermas[k], “”) for (j in 1:length(n_muestras)) { analizar_normalidad(resultados_prop[, j], paste(“n =”, n_muestras[j])) } cat(“”) }

Comentario: Al comparar los resultados de la simulación para diferentes proporciones de individuos enfermos, se confirma que la normalidad de los estimadores está influida por la proporción de individuos enfermos en la población. Las distribuciones tienden a ser menos normales a medida que la proporción de individuos enfermos aumenta. Esto resalta la importancia de considerar la composición de la población al realizar inferencias estadísticas basadas en muestras.

Problema cuatro; Estimacción boostrap

Cuando se extrae una muestra de una población que no es normal y se requiere estimar un intervalo de confianza se pueden utilizar los métodos de estimación bootstrap. Esta metodología supone que se puede reconstruir la población objeto de estudio mediante un muestreo con reemplazo de la muestra que se tiene. Existen varias versiones del método. Una presentación básica del método se describe a continuación:

El artículo de In-use Emissions from Heavy Duty Dissel Vehicles (J.Yanowitz, 2001) presenta las mediciones de eficiencia de combustible en millas/galón de una muestra de siete camiones. Los datos obtenidos son los siguientes: 7.69, 4.97, 4.56, 6.49, 4.34, 6.24 y 4.45. Se supone que es una muestra aleatoria de camiones y que se desea construir un intervalo de confianza del 95 % para la media de la eficiencia de combustible de esta población. No se tiene información de la distribución de los datos. El método bootstrap permite construir intervalos de confianza del 95 % - Para ilustrar el método suponga que coloca los valores de la muestra en una caja y extrae uno al azar. Este correspondería al primer valor de la muestra bootstrap X∗1. Después de anotado el valor se regresa X∗1 a la caja y se extrae el valor X∗2 , regresandolo nuevamente. Este procedimiento se repite hasta completar una muestra de tamaño n, X∗1,X∗2,X∗2,X∗n, conformando la muestra bootstrap.

Es necesario extraer un gran número de muestras (suponga k = 1000). Para cada una de las muestra bootstrap obtenidas se calcula la media X∗i¯, obteniéndose un valor para cada muestra. El intervalo de confianza queda conformado por los percentiles P2.5 y P97.5. Existen dos métodos para estimarlo:

Método 1: (P2.5;P97.5) Método 2: (2X¯−P97.5;2X¯−P2.5)

Construya el intervalo de confianza por los dos métodos y compare los resultados obtenidos. Comente los resultados. Confiaría en estas estimaciones?

Solución

Datos de la muestra datos <- c(7.69, 4.97, 4.56, 6.49, 4.34, 6.24, 4.45)

Parámetros n <- length(datos) k <- 1000 alpha <- 0.05

Método de bootstrap muestras_bootstrap <- replicate(k, sample(datos, replace = TRUE))

Calcular medias de las muestras bootstrap medias_bootstrap <- apply(muestras_bootstrap, 2, mean)

Calcular intervalo de confianza usando método 1 (percentiles) intervalo_metodo1 <- quantile(medias_bootstrap, c(alpha / 2, 1 - alpha / 2))

Calcular intervalo de confianza usando método 2 (basado en media) media_muestral <- mean(datos) intervalo_metodo2 <- c(2 * media_muestral - quantile(medias_bootstrap, 1 - alpha / 2), 2 * media_muestral - quantile(medias_bootstrap, alpha / 2))

Mostrar resultados cat(“Intervalo de confianza (Método 1):”, intervalo_metodo1, “”)

Intervalo de confianza (Método 1): 4.694179 6.434286

cat(“Intervalo de confianza (Método 2):”, intervalo_metodo2, “”)

Intervalo de confianza (Método 2): 4.634286 6.374393

comentario: los intervalos de confianza no atraviesan el 1, por lo que uno podría confiar en los resultados. Sin embargo, hay que tener en cuenta varios puntos: Con solo 7 observaciones, los intervalos de confianza pueden ser bastante amplios y, por lo tanto, pueden no proporcionar una estimación precisa de la verdadera media de la población. Además, a pesar de que el método bootstrap no asume una distribución específica, su validez aún depende de ciertos supuestos. Si los datos no provienen de una distribución aproximadamente normal, los intervalos de confianza generados pueden no ser los más precisos