Menú

INTRODUCCIÓN

En el fascinante campo de la estadística, la capacidad para comprender y analizar datos es fundamental para obtener conclusiones significativas y tomar decisiones informadas en una amplia gama de disciplinas. En este informe, exploraremos cuatro temas fundamentales que son pilares en el estudio estadístico: estimaciones, probabilidad, teorema del límite central y estimaciones de bootstrap. Cada uno de estos temas juega un papel crucial en la comprensión de la incertidumbre inherente a los datos y nos proporciona herramientas poderosas para realizar inferencias sobre poblaciones, entender la variabilidad y evaluar la confiabilidad de nuestros resultados.

Desde la estimación de parámetros poblacionales hasta la modelización de fenómenos aleatorios y la evaluación de la precisión de nuestras estimaciones, estos cuatro temas nos brindan un marco robusto para abordar una variedad de problemas estadísticos. A través de ejercicios prácticos, exploraremos cómo aplicar estos conceptos en situaciones del mundo real, desarrollando habilidades que son esenciales e impactan en la toma de decisiones informadas en un mundo inundado de datos.

Estimación del valor de π

El presente problema propone estimar el valor de π mediante una simulación. Se parte de un cuadrado de área 1, dentro del cual está inscrito un círculo de área π/4. Para estimar π, se generan aleatoriamente n puntos dentro del cuadrado utilizando la distribución uniforme. Luego, se determina cuántos de estos puntos caen dentro del círculo calculando su distancia desde el centro y comparándola con el radio del círculo.

tamanomuestra=c(1000,10000,100000,1000000,10000000)
estimaciones_pi = numeric(length(tamanomuestra))
puntos_dentro = numeric(length(tamanomuestra))
a=0
for (i in tamanomuestra){
  a=a+1
  resultado=estimarpi(i)
  estimaciones_pi[a] = resultado$pi_estimado
  puntos_dentro[a] = resultado$puntos_dentro
}
resultados <- data.frame(Tamaño_Muestra = format(tamanomuestra, scientific = FALSE),
                         Puntos_Dentro  = puntos_dentro,
                         Estimador_Pi   = estimaciones_pi,
                         Diferencia_pi  = abs(pi-estimaciones_pi))

tabla_formateada <- kable(resultados, "html") %>%
  kable_styling(full_width = FALSE) %>%
  column_spec(1, width = "20%") %>%
  column_spec(2:4, width = "20%")
tabla_formateada
Tamaño_Muestra Puntos_Dentro Estimador_Pi Diferencia_pi
1000 809 3.236000 0.0944073
10000 7871 3.148400 0.0068073
100000 78538 3.141520 0.0000727
1000000 785291 3.141164 0.0004287
10000000 7854849 3.141940 0.0003469

De los resultados, se observa cómo el estimador de π se aproxima cada vez más al valor real a medida que aumenta el tamaño de la muestra. Se refleja que, a medida que el número de puntos generados aleatoriamente dentro del cuadrado aumenta, la diferencia entre el estimador de π y el valor real disminuye significativamente. Estos resultados confirman la eficacia de la técnica propuesta para estimar el valor de π mediante la generación de puntos aleatorios y demuestran cómo el aumento del tamaño de la muestra conduce a una estimación más precisa del valor de π. Esto subraya la utilidad de las técnicas estadísticas para obtener resultados precisos.

Propiedades de los estimadores

En el presente problema se plantean simulaciones con el propósito de reforzar el concepto de los estimadores estadísticos. Se pretende evaluar cuatro estimadores distintos, los cuales se definen mediante las siguientes ecuaciones.


Estimadores
Estimadores


Estos estimadores serán aplicados en una distribución exponencial, y se evaluará su falta de sesgo, eficiencia y consistencia.

tamanomuestra=c(20,50,100,500,10000)
for(i in tamanomuestra){
  RESESTIM = estimadores(i,1/8)
}


El propósito de este ejercicio es llevar a cabo un cálculo de los estimadores utilizando cinco tamaños de muestra diferentes (20, 50, 100, 500, 1000) y un valor de escala de distribución θ de 1/8. Por lo tanto, los estimadores deberían producir un valor de 8 como respuesta. La siguiente imagen muestra un diagrama de caja con los resultados de la muestra n=20. En la parte inferior se presentan los valores respectivos de varianza y media.

n = 20
n = 20


De los resultados, se observa que los estimadores t3 y t4 exhiben menores sesgos, con valores de 0.85 y 0.12 respectivamente, lo que los distancia menos del valor esperado. En cuanto a la eficiencia, se nota que la menor varianza está presente en el estimador t1, seguido por t3 y t4. Es importante destacar que el estimador t2 no muestra buenos indicadores ni en sesgo ni en eficiencia. La siguiente imagen ilustra el análisis para una muestra de tamaño n=50.


n = 50
n = 50


Para la muestra con n=50, se observa que los estimadores con menor sesgo son t1 y t3, con valores que los distancian del valor esperado en 0.15 y 0.4 respectivamente. Se nota que tanto t1 como t3, con un aumento en el tamaño de la muestra, generan mejores aproximaciones, lo que sugiere una buena consistencia. Por otro lado, el estimador t4 se ha alejado del valor esperado, lo que inicialmente indica una mala consistencia. En cuanto a la eficiencia, se evidencia que la menor varianza está presente en el estimador t3, seguido por el estimador t1, lo que los posiciona como los dos mejores estimadores en la segunda prueba. Ahora se procederá a realizar el mismo ejercicio con n=100.


n = 100
n = 100


Con la muestra de tamaño n=100, los estimadores t1 y t3 continúan mostrando las mejores aproximaciones, con valores de sesgo de 0.45 y 0.24 respectivamente. En este caso, se puede observar que el valor del estimador t1 se ha alejado aún más del valor esperado, lo que indica un mal comportamiento en términos de inconsistencia. Por otro lado, el estimador t3 se ha aproximado más al valor esperado, lo que sugiere un buen nivel de consistencia. Además, el estimador t3 es el que presenta la menor varianza, lo que indica que es también el estimador con mayor eficiencia, seguido por el estimador t1.


n = 500
n = 500


Para la muestra de tamaño n=500, el comportamiento de los estimadores t1 y t3 muestra resultados diferentes en comparación con la muestra de tamaño n=100. El valor del sesgo para t1 ha disminuido ligeramente de 0.45 a 0.44, mientras que el valor para t3 ha aumentado de 0.24 a 0.41. Esto indica una inconsistencia en el estimador t3, un caso que no se había observado en los tres tamaños de muestra anteriores. Sin embargo, t3 sigue siendo el estimador con la menor varianza, con un valor de 18.36, seguido por t1, cuya varianza es de 20.1.

Finalmente, se lleva a cabo el ejercicio con un tamaño de muestra n=1000.


n = 1000
n = 1000


Los resultados para n=1000 muestran que el estimador con menor sesgo es el estimador t3, con un sesgo de 0.01, mientras que t1 tiene un sesgo de 0.02. Ambos estimadores demostraron ser los más viables en este parámetro a lo largo de las pruebas, además de mostrar consistencia, ya que cada uno mejoró su desempeño a medida que la muestra aumentaba. Sin embargo, el estimador considerado como el más idóneo es el t3, debido a que, además de su consistencia e insesgadez, también presenta la mayor eficiencia en todos los casos. Finalizando para este tamaño de muestra, el estimador t3 tiene una varianza de 15.59, seguido por t1 con una varianza de 17.06.

Teorema del Límite Central

El objetivo de este ejercicio fue verificar el Teorema del Límite Central mediante una simulación en la cual se generaron poblaciones de diferentes tamaños y porcentajes de individuos enfermos (plantas). A continuación, se mostrarán los pasos y los resultados obtenidos.

Generación de la población: Se generaron poblaciones de tamaño n, donde el porcentaje de individuos enfermos fue del 50%.

Estimación de la proporción muestral: Se creó una función que permitió obtener una muestra aleatoria de la población y calcular el estimador de la proporción muestral (pˆ) para diferentes tamaños de muestra (n=5, 10, 15, 20, 30, 50, 60, 80, 100, 200, 500).

Procedimiento: Se repitió el proceso anterior 500 veces para cada tamaño de muestra y se analizó el comportamiento de los estimadores obtenidos. Se evaluó la simetría de los resultados, así como la variabilidad.

Evaluación de la normalidad: Se utilizaron pruebas de bondad de ajuste (Shapiro-Wilk) y métodos gráficos (QQ-plot) para evaluar la normalidad de los estimadores de proporción muestral para los diferentes tamaños de muestra. Se compararon los resultados obtenidos para diferentes porcentajes de individuos enfermos en la población (10%, 50%, 90%).

muestra <- c(5, 10, 15, 20, 30, 50, 60,80, 100, 200, 500)
#porcentajes <- c(0.5, 0.1, 0.9)

tabla_resultados <- generar_tabla(muestra, 0.5)
  a<- tabla_resultados %>%
    kbl(row.names = FALSE) %>%
    kable_paper(full_width = FALSE) %>%
    row_spec(0, bold = TRUE) %>%
    column_spec(2:3, width = "1cm") %>%
    collapse_rows(columns = 1, valign = "middle")
  a
Muestra Media Desviacion Skewness P_valor_Shapiro
5 0.4888 0.218 0.116 0.000000
10 0.4924 0.161 0.120 0.000000
15 0.5003 0.128 -0.161 0.000000
20 0.4994 0.104 0.003 0.000002
30 0.5006 0.094 -0.019 0.000321
50 0.5002 0.067 -0.040 0.002339
60 0.4995 0.061 -0.142 0.003165
80 0.4996 0.051 -0.321 0.000354
100 0.4975 0.045 -0.022 0.016371
200 0.4968 0.031 -0.115 0.018015
500 0.4983 0.016 -0.076 0.121952


De la tabla anterior, se pueden observar los siguientes puntos:

La media de los estimadores de proporción muestral tiende hacia 0.5, en línea con la proporción poblacional del 50%. Simultáneamente, la desviación estándar de los estimadores disminuye, indicando una mayor precisión en las estimaciones a medida que crece el tamaño muestral.

La asimetría de los estimadores, medida por la skewness, decrece, lo que sugiere una distribución más simétrica alrededor de la media. Este comportamiento es coherente con la aproximación a una distribución normal conforme al Teorema del Límite Central.

Los valores de p de la prueba de Shapiro-Wilk disminuyen, indicando una menor evidencia en contra de la hipótesis nula de normalidad. Aunque algunos valores de p superan el nivel de significancia convencional de 0.05, esta discrepancia puede atribuirse al tamaño grande de la muestra, ya que las pruebas de normalidad tienden a ser más sensibles con tamaños muestrales amplios.

muestraa = muestra[1:6]
muestrab = muestra[7:11]
generar_histogramas_3(0.5, muestraa)

generar_histogramas_3(0.5, muestrab)

De acuerdo con los histogramas anteriores, se observa lo siguiente:

Para n=5, 10, 15 y 20, las distribuciones son más sesgadas y menos simétricas debido al tamaño relativamente pequeño de la muestra.

Conforme aumenta el tamaño de la muestra, como en los casos de n=30, 50, 60, 80 y 100, comenzamos a observar distribuciones más simétricas y más cercanas a una distribución normal, esto debido al Teorema del Límite Central.

Finalmente, para n=200 y 500, se visualizan distribuciones aún más simétricas y más cercanas a una distribución normal debido al mayor tamaño de la muestra.

generar_qq_grupo(0.5, muestraa)

generar_qq_grupo(0.5, muestrab)

En base a las gráficas QQ-Norm, que son una herramienta útil para visualizar si una distribución de datos se ajusta a una distribución normal, y de acuerdo a lo observado en los histogramas previamente mostrados, podemos afirmar lo siguiente:

Para tamaños de muestra pequeños (n=5, 10, 15, 20), se observan desviaciones significativas de la linealidad debido al menor tamaño de la muestra. Destaca una mayor desviación en n=20.

A medida que aumenta el tamaño de la muestra (n=30, 50, 60, 80, 100), se observa una mejor aproximación a una línea recta en las gráficas QQ-Norm, lo que indica una distribución más normal de los datos.

Finalmente, con tamaños de muestra aún mayores (n=200, 500), se evidencia una mayor similitud con una línea recta en las gráficas QQ-Norm, lo que confirma una distribución más normal de los estimadores de proporción muestral.

muestra <- c(5, 10, 15, 20, 30, 50, 60,80, 100, 200, 500)
#porcentajes <- c(0.5, 0.1, 0.9)
tabla_resultados <- generar_tabla(muestra, 0.1)
  a<- tabla_resultados %>%
    kbl(row.names = FALSE) %>%
    kable_paper(full_width = FALSE) %>%
    row_spec(0, bold = TRUE) %>%
    column_spec(2:3, width = "1cm") %>%
    collapse_rows(columns = 1, valign = "middle")
  a
Muestra Media Desviacion Skewness P_valor_Shapiro
5 0.0960 0.132 1.124 0.000000
10 0.0934 0.092 0.772 0.000000
15 0.0968 0.076 0.587 0.000000
20 0.0965 0.063 0.461 0.000000
30 0.0960 0.049 0.256 0.000000
50 0.0978 0.040 0.420 0.000000
60 0.0989 0.037 0.267 0.000000
80 0.0999 0.033 0.390 0.000000
100 0.0986 0.028 0.219 0.000041
200 0.0988 0.019 0.036 0.012873
500 0.0995 0.009 0.004 0.015260

De la tabla anterior, se pueden observar los siguientes puntos:

La media de los estimadores de proporción muestral tiende hacia 0.01, en concordancia con la proporción poblacional del 10%. Esto sugiere una convergencia hacia el valor teórico esperado a medida que aumenta el tamaño de la muestra. Además, la disminución de la desviación estándar de los estimadores indica una mayor precisión en las estimaciones a medida que crece el tamaño muestral.

Respecto a la asimetría de los estimadores medida por el coeficiente de asimetría (skewness), se observa que para tamaños de muestra de 5 a 200, el coeficiente es positivo, indicando una asimetría positiva o sesgo hacia la derecha. Sin embargo, para el tamaño de muestra de 500, el coeficiente de asimetría es muy cercano a cero (0.004), sugiriendo una distribución casi perfectamente simétrica alrededor de la media.

Todos los valores de p de la prueba de Shapiro-Wilk son muy bajos, lo que sugiere una evidencia significativa en contra de la normalidad para todos los tamaños de muestra. Esto indica que los datos no siguen una distribución normal, lo cual es consistente con la presencia de asimetría observada en los estimadores sin embargo el valor crece a medida que crece el tamaño de la muestra lo que indica que amyores tamaños de muestra se evidencia una mayor normalidad.

tabla_resultados <- generar_tabla(muestra, 0.9)
  a<- tabla_resultados %>%
    kbl(row.names = FALSE) %>%
    kable_paper(full_width = FALSE) %>%
    row_spec(0, bold = TRUE) %>%
    column_spec(2:3, width = "1cm") %>%
    collapse_rows(columns = 1, valign = "middle")
  a
Muestra Media Desviacion Skewness P_valor_Shapiro
5 0.9052 0.144 -1.558 0.000000
10 0.9038 0.096 -1.013 0.000000
15 0.9025 0.078 -0.855 0.000000
20 0.9023 0.067 -0.577 0.000000
30 0.9013 0.053 -0.483 0.000000
50 0.9002 0.039 -0.293 0.000000
60 0.8998 0.035 -0.184 0.000000
80 0.8999 0.032 -0.091 0.000009
100 0.9000 0.029 -0.151 0.000227
200 0.9008 0.019 -0.209 0.001726
500 0.9012 0.009 -0.163 0.008229

De la tabla anterior, se pueden observar los siguientes puntos:

La media de los estimadores de proporción muestral tiende hacia 0.9, en consonancia con la proporción poblacional del 90%. Al mismo tiempo, la desviación estándar de los estimadores disminuye, lo que indica una mayor precisión en las estimaciones a medida que aumenta el tamaño muestral.

El coeficiente de asimetría (Skewness) muestra una tendencia hacia valores negativos a medida que aumenta el tamaño de la muestra. Los valores negativos indican una asimetría hacia la izquierda en la distribución de los datos. En este caso, la asimetría es más pronunciada en muestras más pequeñas (-1.558 para n=5) y disminuye gradualmente a medida que aumenta el tamaño de la muestra, llegando a valores cercanos a cero para tamaños de muestra mayores (-0.163 para n=500). Esto sugiere que, en muestras más pequeñas, la distribución de los datos está más sesgada hacia la izquierda, mientras que en muestras más grandes tiende a ser más simétrica.

Todos los valores de p de la prueba de Shapiro-Wilk son muy bajos, lo que sugiere una evidencia significativa en contra de la normalidad para todos los tamaños de muestra. Sin embargo, a medida que aumenta el tamaño de la muestra, el valor de p shapiro crece, lo que sugiere que la distribución se hace más similar a una normal.

muestraa = muestra[1:6]
muestrab = muestra[7:11]
generar_histogramas_3(0.1, muestraa)

generar_histogramas_3(0.1, muestrab)
generar_histogramas_3(0.9, muestraa)

generar_histogramas_3(0.9, muestrab)

Los histogramas revelaron diferencias en la normalidad de los estimadores para diferentes porcentajes de individuos enfermos en la población, lo que sugiere que la distribución de la muestra puede estar influenciada por la distribución de la población subyacente, especialmente para muestras relativamente pequeñas (n=5, 10, 15, 20, 30, 50).

Cuando la probabilidad de individuos enfermos es del 10%, se observa una asimetría positiva en los histogramas, lo que indica una proporción baja de individuos enfermos. Por el contrario, al analizar los histogramas con una probabilidad del 90%, se percibe una asimetría negativa debido a una alta proporción de individuos enfermos en la población.

Sin embargo, para muestras de población mayores, la distribución tiende a ser más simétrica y se acerca más a una distribución normal a medida que aumenta el tamaño de la muestra.

generar_qq_grupo(0.1, muestraa)

generar_qq_grupo(0.1, muestrab)
generar_qq_grupo(0.9, muestraa)

generar_qq_grupo(0.9, muestrab)

De las gráficas, se observa un patrón muy similar a lo que se observó en los histogramas, confirmando así el comportamiento de la distribución de la población en relación con la probabilidad de los eventos para muestras pequeñas. Sin embargo, a medida que el número de muestras aumenta, se observa una mayor similitud con una línea recta, lo que confirma una distribución más normal de los estimadores de proporción muestral.

Los resultados, sugieren que aunque el Teorema del Límite Central predice que los estimadores de proporción muestral se aproximarán a una distribución normal a medida que aumenta el tamaño de la muestra, aún pueden existir desviaciones de la normalidad debido a diversos factores que influyen en la distribución de los datos. Esto destaca la importancia de no depender únicamente en una sola prueba estadística para determinar la normalidad de los datos, y considerar el contexto específico del estudio.

Estimacción boostrap

En el cuarto problema, se emplea el método bootstrap para la reconstrucción de una muestra y se evalúan los resultados para los percentiles solicitados mediante las siguientes ecuaciones.

Metodos
Metodos


El ejercicio planteado se basa en el artículo de Yanowitz (2001), donde se analizan las emisiones en uso de vehículos diésel de servicio pesado y se presentan mediciones de la eficiencia del combustible en millas por galón de una muestra de siete camiones. Se considera que esta muestra es representativa de una población más amplia de camiones. El objetivo es estimar el intervalo de confianza del 95 % para la media de la eficiencia del combustible de toda la población de camiones. Dado que no se conoce la distribución exacta de los datos, se recurre al método bootstrap para construir este intervalo de confianza.

intervalo_metodo1_df <- data.frame(Intervalo_Metodo_1 = intervalo_metodo1)
intervalo_metodo1_df <- t(intervalo_metodo1_df)
kable(intervalo_metodo1_df)
2.5% 97.5%
Intervalo_Metodo_1 4.764286 6.506036
intervalo_metodo2_df <- data.frame(Intervalo_Metodo_2 = intervalo_metodo2)
intervalo_metodo2_df <- t(intervalo_metodo2_df)
kable(intervalo_metodo2_df)
97.5% 2.5%
Intervalo_Metodo_2 4.562536 6.304286
cat("Media de la muestra:", media_muestra, "\n")
## Media de la muestra: 5.534286
cat("Ancho del intervalo (Método 1):", per_superior - per_inferior, "\n")
## Ancho del intervalo (Método 1): 1.74175
cat("Ancho del intervalo (Método 2):", intervalo_metodo2[2] - intervalo_metodo2[1], "\n")
## Ancho del intervalo (Método 2): 1.74175

Los resultados indican que tanto el método 1 como el método 2 muestran un ancho similar para los intervalos. La diferencia entre ellos radica en un desplazamiento hacia la izquierda por parte del método 2. Esto se debe a que, como se observará en la siguiente gráfica, la muestra presenta un sesgo hacia la izquierda. Por lo tanto, el método dos puede ofrecer mejores resultados en muestras con una distribución no normal, como la que se presenta. Sin embargo, es importante destacar que en otras circunstancias, estos métodos podrían ser sensibles a valores atípicos que no son posibles en el ejercicio planteado.

Por otro lado, se argumenta que la confianza en el método bootstrap depende en gran medida de la representatividad de los datos. Al asegurar que los datos son representativos, se genera confianza en la estimación realizada mediante este método.

hist(medias_bootstrap, las=1, main=" histograma con intervalos de confianza ", ylab = " ", xlab = "Medias ", col="#034A94")
abline(v=intervalo_metodo1, col="#FF7F00",lwd=2)
abline(v=intervalo_metodo2, col="#0EB0C6",lwd=2)

El histograma exhibe la distribución de los datos junto con los intervalos calculados. Los intervalos correspondientes al método 1 se muestran en color naranja, mientras que los intervalos correspondientes al método 2 se representan en color azul.

Conclusiones

La simulación realizada para estimar el valor de π utilizando el método de Monte Carlo ha demostrado ser efectiva. Al inscribir un círculo de área π/4 dentro de un cuadrado de área 1 y seleccionar aleatoriamente puntos dentro del cuadrado, se puede estimar el valor de π/4 al contar el número de puntos que caen dentro del círculo. Esta aproximación ha proporcionado una buena estimación del valor de π con un valor mínimo de sesgo de 0.0000727 para una muestra de 100000 puntos generados de manera aleatoria, lo que valida la eficacia del método.

La realización de simulaciones para verificar el Teorema del Límite Central (TLC) ha permitido observar cómo los estimadores convergen a una distribución normal a medida que aumenta el tamaño de la muestra. Los resultados han mostrado que para tamaños de muestra mayores a 30, la distribución de los estimadores tiende a ser más simétrica y se ajusta mejor a una distribución normal. Sin embargo, para tamaños de muestra más pequeños, la distribución puede ser más sesgada y menos normal. Estos hallazgos confirman la validez del TLC y su importancia en la inferencia estadística.

Se observó que la eficiencia de los estimadores está relacionada con la varianza de los mismos. En la mayoría de los casos, los estimadores con menor varianza también mostraron mayor eficiencia. Esto sugiere que, para una muestra dada, es deseable que un estimador tenga tanto baja varianza como bajo sesgo para ser considerado eficiente.

Se evidenció que el tamaño de muestra influye en las propiedades de los estimadores. En general, a medida que aumenta el tamaño de la muestra, los estimadores tienden a mostrar un comportamiento más consistente y eficiente. Sin embargo, también se observaron casos donde el sesgo o la eficiencia de los estimadores pueden variar significativamente con el tamaño de la muestra, lo que ayuda a seleccionar los mejores estimadores.

La media de la muestra de eficiencia del combustible se situó en 5.53 unidades de medida. Este valor proporciona una estimación puntual de la media de la población de camiones, pero es importante considerar el intervalo de confianza para comprender la incertidumbre asociada a esta estimación.

Anexos

Como anexo se presentan los distintos códigos para la generación de los resultados de los problemas planteados anteriormente.

#==================================================#
#              Primer Punto estimar pi             #
#==================================================#

estimarpi = function(n){## funcion que calcula la distancia de los puntos y la cantidad dentro del circulo
  set.seed(555)
  x=runif(n,0,1)
  y=runif(n,0,1)
  d=(x-0.5)^2+(y-0.5)^2
  resen1 = ifelse(d<0.25,1,0)
  dentro = sum(resen1)/n
  piestimado =dentro*4
  resultados <- list(pi_estimado = piestimado, puntos_dentro = sum(resen1))
  return(resultados)
}

#----
tamanomuestra=c(1000,10000,100000,1000000,10000000)##generacion de valores parametro
estimaciones_pi = numeric(length(tamanomuestra))
puntos_dentro = numeric(length(tamanomuestra))
a=0
for (i in tamanomuestra){##llamada a la funcion 
  a=a+1
  resultado=estimarpi(i)
  estimaciones_pi[a] = resultado$pi_estimado
  puntos_dentro[a] = resultado$puntos_dentro
}
##genera la tabla 
resultados <- data.frame(Tamaño_Muestra = format(tamanomuestra, scientific = FALSE),
                         Puntos_Dentro  = puntos_dentro,
                         Estimador_Pi   = estimaciones_pi,
                         Diferencia_pi  = abs(pi-estimaciones_pi))
print(resultados)



#==================================================#
#   Segundo punto propiedades de los estimadores   #
#==================================================#

estimadores = function(n,lambda){## funcion de calculo de los estimadores para una muestra especificada
  set.seed(555)
  X1 = rexp(n,lambda)
  X2 = rexp(n,lambda)
  X3 = rexp(n,lambda)
  X4 = rexp(n,lambda)
  
  T1 = ((X1+X2)/6)+((X3+X4)/3)
  T2 = (X1+(2*X2)+(3*X3)+(4*X4))/5
  T3 = (X1+X2+X3+X4)/4
  A  = apply(cbind(X1, X2, X3, X4), 1, min)
  B  = apply(cbind(X1, X2, X3, X4), 1, max)
  T4 = (A+B)/2
  RES = data.frame(T1,T2,T3,T4)
  medias = apply(RES, 2, mean)
  varianzas = apply(RES, 2, var)
  boxplot(RES, main = "Distribuciones de T1, T2, T3 y T4", col = c("red", "blue", "green", "orange"), xlab = "Estimadores", ylab = "Valores",xlim = c(0.5, 4.5))
  abline(h = 8, col = "purple", lty = 2,lwd = 2)
  text(1:4, par("usr")[3] - 5, labels = paste("  Media:", round(medias, 2)), xpd = TRUE, srt = 0, adj = 0, cex = 0.8)
  text(1:4, par("usr")[3] - 5, labels = paste("Varianza:", round(varianzas, 2)), xpd = TRUE, srt = 0, adj = 1, cex = 0.8, col = "blue")
  
  #RES = data.frame(T1,T2,T3,T4,0,X1,X2,X3,X4,A,B)
  return(RES)
}

#----
tamanomuestra=c(20,50,100,500,10000)##definicion de parametros
for(i in tamanomuestra){
  RESESTIM = estimadores(i,1/8)  ##llamada a funcion con teta 1/8
}


#==================================================#
#     Tercer punto teorema del limite central      #
#==================================================#
library(moments)
library(knitr)
library(kableExtra)
library(tidyverse)

LimiteCentral <- function(cenfermas, n) {  ##funcion que genera los valores aleatoreos para plantas de la muestra
  set.seed(555)
  unos <- rep(1, 1000*cenfermas)
  ceros <- rep(0, 1000*(1 - cenfermas))
  poblacion <- sample(c(unos, ceros))
  proporcion_p <- numeric(500)
  for (a in c(1:500)) {
    muestra <- sample(poblacion, n)
    proporcion_p[a] <- sum(muestra) / n
  }
  return(proporcion_p)
}

generar_tabla <- function(muestra, porcentaje) { ##funcion que genera las tablas de os estadisticos en el formato requerido
  resultados_table <- matrix(nrow = length(muestra), ncol = 5)
  for (i in 1:length(muestra)) {
    n <- muestra[i]
    proporcion_p <- LimiteCentral(porcentaje, n)
    media <- round(mean(proporcion_p), 4)
    desv <- round(sd(proporcion_p), 3)
    sesgo <- round(skewness(proporcion_p), 3)
    p_valor <- round(shapiro.test(proporcion_p)$p.value, 6)
    resultados_table[i, ] <- c(n, media, desv, sesgo, p_valor)
  }
  colnames(resultados_table) <- c("Muestra", "Media", "Desviacion", "Skewness", "P_valor_Shapiro")
  rownames(resultados_table) <- NULL
  resultadosa <- as.table(resultados_table)
  return(resultadosa)
}

generar_histogramas_3 <- function(porcentaje, muestra) { ##funcion que imprime los histogramas en grupos de 6 graficas 
  n_graficos <- length(muestra)
  n_filas <- ceiling(n_graficos / 3)  
  par(mfrow = c(n_filas, 3))
  for (i in 1:n_graficos) {
    n <- muestra[i]
    proporcion_p <- LimiteCentral(porcentaje, n)
    media <- round(mean(proporcion_p), 4)
    desv <- round(sd(proporcion_p), 3)
    hist(proporcion_p, main = paste("n=", n, ", enfermas: ", porcentaje * 100, "%"),
         xlab = "Proporción", ylab = "Frecuencia", col = "skyblue", border = "white")
    abline(v = media, col = "red", lwd = 2)
    abline(v = media + desv, col = "blue", lwd = 2, lty = 2)
    abline(v = media - desv, col = "blue", lwd = 2, lty = 2)
  }
}

generar_qq_grupo <- function(porcentaje, muestra) { ## funcion que imprime los qqnorm en grupos de 6 graficas 
  n_graficos <- length(muestra)
  n_filas <- ceiling(n_graficos / 3)  
  par(mfrow = c(n_filas, 3))  
  for (i in 1:n_graficos) {
    n <- muestra[i]
    proporcion_p <- LimiteCentral(porcentaje, n)
    qqnorm(proporcion_p, main = paste("QQ Plot n:", n, ", Enfermas:", porcentaje * 100, "%"),
           col = "blue", pch = 19)
    qqline(proporcion_p, col = "red")
  }
}
#-----
muestra <- c(5, 10, 15, 20, 30, 50, 60,80, 100, 200, 500)##datos de entrada 
porcentajes <- c(0.5, 0.1, 0.9)

for (porcentaje in porcentajes) {##llamadas a funciones y procesos 
  tabla_resultados <- generar_tabla(muestra, porcentaje)
  a<- tabla_resultados %>%
    kbl(row.names = FALSE) %>%
    kable_paper(full_width = FALSE) %>%
    row_spec(0, bold = TRUE) %>%
    column_spec(2:3, width = "1cm") %>%
    collapse_rows(columns = 1, valign = "middle")
  print(a)
}
muestraa = muestra[1:6]
muestrab = muestra[7:11]
for (porcentaje in porcentajes) {
  generar_histogramas_3(porcentaje, muestraa)
  generar_histogramas_3(porcentaje, muestrab)
}
for (porcentaje in porcentajes) {
  generar_qq_grupo(porcentaje, muestraa)
  generar_qq_grupo(porcentaje, muestrab)
}


#==================================================#
#            Cuarto Punto boostrap                 #
#==================================================#

library(tidyverse)
set.seed(1234)
# datos de la muestra inicial
muestra <- c(7.69,4.97,4.56,6.49,4.34,6.24,4.45)
#repeticiones minimas de bootstrap
k <- 1000
#tamaña de la mnuestra 
n <- length(muestra)
#almacenar medias de la muestra
medias_bootstrap <- numeric(k)
for (i in 1:k) {
  simulacion_bootstrap <- sample(muestra,replace = TRUE)
  medias_bootstrap[i] <- mean(simulacion_bootstrap)
}
# se creo la base de datos con las medias de 1000 repeticiones 
medias_bootstrap
# se calcula los cuartiles
per_inferior <- quantile(medias_bootstrap,0.025)
per_superior <- quantile(medias_bootstrap,0.975)
#metodo 1
intervalo_metodo1 <- c(per_inferior,per_superior)
print(intervalo_metodo1)
#metodo 2 
media_muestra <- mean(muestra)
intervalo_metodo2 <- c(2*media_muestra - per_superior, 2*media_muestra - per_inferior)
print(intervalo_metodo2)
hist(medias_bootstrap, las=1, main=" histograma con intervalos de confianza ", ylab = " ", xlab = "Medias ", col="#034A94")
abline(v=intervalo_metodo1, col="#FF7F00",lwd=2)
abline(v=intervalo_metodo2, col="#0EB0C6",lwd=2)
#compracion de resultados 
cat("Media de la muestra:", media_muestra, "\n")
cat("Ancho del intervalo (Método 1):", per_superior - per_inferior, "\n")
cat("Ancho del intervalo (Método 2):", intervalo_metodo2[2] - intervalo_metodo2[1], "\n")