Redacción del problema

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:

  1. 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%.

  2. 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.
  1. 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.

  2. 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.

  3. 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.

Nota funciones recomendadas : rbinom() , data.frame(), apply()

  • Resultados

A continuación, se muestra el desarrollo del código, donde se relaciona la redacción de cada punto solicitado a) hasta e) con sus correspondientes resultados.

Punto a):

# Paso a - Simulación de la población de tamaño n= 1000 con un 50% de porcentaje de individuos de plantas enfermas

poblacion <- rbinom(n = 1000, size = 1, prob = 0.5) # rbinom: función que genera números aleatorios a partir de una distribución binomial. Size = 1: Cada número aleatorio será el resultado de un solo ensayo de una distribución binomial,

Punto b):

# Paso b - Generar Función para obtener muestra aleatoria y calcular el estimador de la proporción muestral pˆ para un tamaño de muestrada dado n

funcion_muestra_estimador <- function(poblacion, n) {
  muestra <- sample(poblacion, size = n, replace = FALSE) # la función sample selecciona una muestra aleatoria de la población dada. replace = FALSE indica que no se deben repetir elementos en la muestra, es decir, cada elemento seleccionado es único.
  proporcion_muestral <- mean(muestra) #Calcular el estimador de la proporción muestral pˆ, se hace calculando la media de la muestra.
  return(proporcion_muestral)
}

Punto c):

NOTA: Teniendo en cuenta que la ejecución del código genera valores aleatorios, el análisis se realiza de carácter general.

A continuación, se presenta la tabla de los resultados de las 500 simulaciones para una muestra de tamaño n= 32. Adicionalmente, se presenta la evaluación de la simetría o sesgadez y variabilidad.

Para el cálculo de la asimetría, se utilizó una formulación estándar (Coeficiente de asimetría de Fisher ).

# Paso c - Realizar paso b) 500 simulaciones y analizar resultados

num_simulaciones <- 500
resultados <- replicate(num_simulaciones, funcion_muestra_estimador(poblacion, n = 32))
print(resultados)
##   [1] 0.56250 0.59375 0.65625 0.46875 0.46875 0.56250 0.65625 0.53125 0.43750
##  [10] 0.71875 0.50000 0.53125 0.56250 0.59375 0.78125 0.37500 0.37500 0.59375
##  [19] 0.65625 0.43750 0.50000 0.50000 0.43750 0.34375 0.46875 0.34375 0.28125
##  [28] 0.37500 0.40625 0.56250 0.50000 0.43750 0.53125 0.53125 0.34375 0.34375
##  [37] 0.40625 0.53125 0.40625 0.46875 0.43750 0.53125 0.53125 0.46875 0.56250
##  [46] 0.62500 0.59375 0.40625 0.37500 0.59375 0.53125 0.50000 0.21875 0.46875
##  [55] 0.46875 0.53125 0.56250 0.59375 0.46875 0.62500 0.50000 0.50000 0.50000
##  [64] 0.56250 0.31250 0.59375 0.40625 0.40625 0.34375 0.34375 0.53125 0.43750
##  [73] 0.40625 0.53125 0.53125 0.53125 0.40625 0.53125 0.40625 0.62500 0.53125
##  [82] 0.53125 0.56250 0.62500 0.31250 0.50000 0.34375 0.37500 0.40625 0.65625
##  [91] 0.40625 0.56250 0.43750 0.50000 0.40625 0.37500 0.46875 0.46875 0.43750
## [100] 0.56250 0.43750 0.46875 0.53125 0.56250 0.50000 0.56250 0.37500 0.46875
## [109] 0.59375 0.34375 0.43750 0.50000 0.59375 0.43750 0.68750 0.40625 0.53125
## [118] 0.56250 0.37500 0.50000 0.62500 0.50000 0.40625 0.40625 0.56250 0.40625
## [127] 0.43750 0.46875 0.68750 0.53125 0.62500 0.56250 0.62500 0.40625 0.56250
## [136] 0.62500 0.53125 0.40625 0.59375 0.50000 0.46875 0.37500 0.43750 0.53125
## [145] 0.50000 0.53125 0.40625 0.46875 0.62500 0.46875 0.62500 0.53125 0.43750
## [154] 0.56250 0.62500 0.40625 0.46875 0.43750 0.53125 0.53125 0.62500 0.56250
## [163] 0.50000 0.56250 0.46875 0.46875 0.43750 0.50000 0.46875 0.62500 0.40625
## [172] 0.28125 0.50000 0.46875 0.56250 0.50000 0.56250 0.59375 0.46875 0.43750
## [181] 0.46875 0.50000 0.50000 0.59375 0.43750 0.56250 0.46875 0.56250 0.31250
## [190] 0.53125 0.62500 0.65625 0.50000 0.46875 0.34375 0.40625 0.53125 0.56250
## [199] 0.53125 0.46875 0.53125 0.46875 0.53125 0.59375 0.71875 0.43750 0.43750
## [208] 0.40625 0.43750 0.50000 0.71875 0.25000 0.34375 0.34375 0.50000 0.46875
## [217] 0.43750 0.50000 0.53125 0.43750 0.53125 0.53125 0.46875 0.37500 0.56250
## [226] 0.53125 0.53125 0.53125 0.46875 0.31250 0.50000 0.37500 0.56250 0.46875
## [235] 0.59375 0.53125 0.53125 0.43750 0.56250 0.34375 0.34375 0.40625 0.43750
## [244] 0.40625 0.46875 0.56250 0.53125 0.56250 0.34375 0.40625 0.46875 0.46875
## [253] 0.31250 0.50000 0.46875 0.43750 0.37500 0.40625 0.46875 0.37500 0.46875
## [262] 0.50000 0.34375 0.59375 0.59375 0.53125 0.34375 0.50000 0.37500 0.40625
## [271] 0.46875 0.53125 0.62500 0.40625 0.46875 0.75000 0.50000 0.43750 0.37500
## [280] 0.50000 0.53125 0.56250 0.56250 0.46875 0.40625 0.34375 0.53125 0.43750
## [289] 0.43750 0.40625 0.37500 0.43750 0.53125 0.43750 0.53125 0.59375 0.50000
## [298] 0.53125 0.53125 0.53125 0.50000 0.40625 0.53125 0.71875 0.37500 0.43750
## [307] 0.56250 0.53125 0.37500 0.50000 0.37500 0.50000 0.43750 0.25000 0.46875
## [316] 0.43750 0.56250 0.50000 0.53125 0.37500 0.56250 0.62500 0.59375 0.50000
## [325] 0.34375 0.37500 0.53125 0.56250 0.53125 0.53125 0.50000 0.46875 0.50000
## [334] 0.53125 0.46875 0.43750 0.43750 0.40625 0.56250 0.40625 0.46875 0.53125
## [343] 0.65625 0.53125 0.46875 0.56250 0.46875 0.46875 0.53125 0.37500 0.40625
## [352] 0.56250 0.43750 0.46875 0.50000 0.59375 0.50000 0.40625 0.56250 0.53125
## [361] 0.50000 0.40625 0.46875 0.56250 0.62500 0.40625 0.56250 0.46875 0.43750
## [370] 0.37500 0.50000 0.43750 0.37500 0.40625 0.62500 0.56250 0.46875 0.53125
## [379] 0.56250 0.59375 0.50000 0.56250 0.43750 0.46875 0.43750 0.43750 0.50000
## [388] 0.53125 0.40625 0.50000 0.37500 0.43750 0.37500 0.46875 0.37500 0.56250
## [397] 0.40625 0.37500 0.43750 0.53125 0.37500 0.40625 0.53125 0.50000 0.31250
## [406] 0.53125 0.43750 0.40625 0.53125 0.46875 0.43750 0.56250 0.53125 0.53125
## [415] 0.50000 0.50000 0.37500 0.40625 0.46875 0.50000 0.37500 0.31250 0.46875
## [424] 0.53125 0.40625 0.46875 0.40625 0.56250 0.56250 0.43750 0.59375 0.53125
## [433] 0.40625 0.40625 0.31250 0.59375 0.31250 0.59375 0.40625 0.34375 0.43750
## [442] 0.50000 0.37500 0.40625 0.25000 0.37500 0.50000 0.53125 0.62500 0.62500
## [451] 0.37500 0.59375 0.59375 0.46875 0.53125 0.50000 0.46875 0.50000 0.31250
## [460] 0.43750 0.40625 0.65625 0.56250 0.68750 0.56250 0.43750 0.46875 0.56250
## [469] 0.53125 0.46875 0.59375 0.68750 0.40625 0.34375 0.50000 0.46875 0.43750
## [478] 0.53125 0.34375 0.50000 0.65625 0.56250 0.34375 0.46875 0.43750 0.43750
## [487] 0.59375 0.62500 0.46875 0.56250 0.40625 0.46875 0.50000 0.43750 0.40625
## [496] 0.50000 0.43750 0.46875 0.46875 0.46875
# Calcular la asimetría 

# 1. Calcular el coeficiente de asimetría de Fisher 

# 2. Calcular la media de la muestra
media <- mean(resultados)

# 3. Calcular la desviación estándar de la muestra
desviacion_estandar <- sd(resultados)

# 4. Calcular el número de observaciones en la muestra
n <- length(resultados)

# 5. Calcular el numerador del coeficiente de asimetría de Fisher
numerador <- sum((resultados - media)^3)

# 6. Calcular el coeficiente de asimetría de Fisher
asimetria_resultados <- (numerador / (n * desviacion_estandar^3))

# Calcular la varianza y sesgo de la variable resultados

varianza_resultados <- var(resultados)
sesgo <- mean(resultados) - 0.5

# Imprimir los resultados
print(paste("Asimetría:", asimetria_resultados))
## [1] "Asimetría: 0.0789136279904091"
print(paste("Varianza:", varianza_resultados))
## [1] "Varianza: 0.00789234719438878"
print(paste("Sesgo:",sesgo))
## [1] "Sesgo: -0.015"
# Crear un data frame con los resultados para el diagrama de caja
df_resultados <- data.frame(Resultados = resultados)

Análisis

  • En relación con la asimetría, en el caso de obtener un valor mayor que 0 (positivo), significa que se tienen más datos del lado derecho de la distribución. En el caso de ser menor que 0 (negativo), corresponde a que existen más datos del lado izquierdo de la distribución.

  • En cuanto a la varianza, en la medida que el resultado sea más cercano a 0, se concluye que los datos obtenidos no se encuentran dispersos con respecto al parámetro definido. Por lo tanto, en la medida que el resultado de la varianza se acerque a 0, mayor eficiencia.

  • Por último, en relación al sesgo, en la medida que este valor sea más cercano a 0, los resultados están más cerca del valor verdadero del parámetro. En el caso en que se obtenga un sesgo = 0, se puede concluir que el estimador es insesgado, es decir, no sobreestima, ni subestima el parámetro.

A continuación, se presenta un diagrama de caja de los valores obtenidos del estimador de la proporción muestral p^:

# Graficar un diagrama de caja
library(ggplot2)
ggplot(df_resultados, aes(x = "Estimaciones", y = Resultados)) +
  geom_boxplot() +
  labs(x = "", y = "Estimador p^", title = "Diagrama de Caja de Estimadores p^") +
  theme_minimal()

Punto d):

# Paso d - Repetir para diferentes tamaños de muestra y realizar pruebas de normalidad
tamanos_muestra <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)
resultados_por_tamano <- matrix(NA, nrow = num_simulaciones, ncol = length(tamanos_muestra)) # Matriz con num_simulaciones filas y length(tamanos_muestra) columnas. Cada celda de la matriz se inicializa con el valor NA 

for (i in 1:length(tamanos_muestra)) {
  muestra_tamano <- tamanos_muestra[i]
  resultados_por_tamano[, i] <- replicate(num_simulaciones, funcion_muestra_estimador(poblacion, n = muestra_tamano))
}

# Pruebas de normalidad y gráficos de normalidad
library(stats)
normalidad_resultados <- matrix(NA, nrow = length(tamanos_muestra), ncol = 3)

for (i in 1:length(tamanos_muestra)) {
  muestra_resultados <- resultados_por_tamano[, i]
  normalidad_resultados[i, 1] <- shapiro.test(muestra_resultados)$p.value
  normalidad_resultados[i, 2] <- mean(muestra_resultados)
  normalidad_resultados[i, 3] <- sd(muestra_resultados)
}

# Crear un dataframe con los resultados
df_normalidad <- data.frame(TamañoMuestra = tamanos_muestra,
                            PValue = normalidad_resultados[, 1],
                            Media = normalidad_resultados[, 2],
                            DesviacionEstandar = normalidad_resultados[, 3])

A continuación, se presenta el resultado de la prueba de bondad y ajuste (evaluación de normalidad), así como el comportamiento de la media y la desviación estándar:

print(df_normalidad)
##    TamañoMuestra       PValue     Media DesviacionEstandar
## 1              5 8.931363e-15 0.4836000         0.22250856
## 2             10 9.187048e-10 0.4988000         0.15750612
## 3             15 3.310769e-07 0.4802667         0.13081088
## 4             20 3.071107e-06 0.4768000         0.11057220
## 5             30 6.129776e-05 0.4869333         0.08809278
## 6             50 1.876333e-03 0.4836800         0.06801551
## 7             60 7.069678e-03 0.4873333         0.06167520
## 8            100 7.428744e-02 0.4835000         0.04792644
## 9            200 6.039925e-02 0.4853400         0.03060650
## 10           500 7.895972e-02 0.4866600         0.01630731
# Graficar los resultados
ggplot(df_normalidad, aes(x = TamañoMuestra)) +
  geom_line(aes(y = PValue, color = "P-Value")) +
  geom_line(aes(y = Media, color = "Media")) +
  geom_line(aes(y = DesviacionEstandar, color = "Desviacion Estandar")) +
  scale_color_manual(values = c("P-Value" = "blue", "Media" = "green", "Desviacion Estandar" = "red")) +
  labs(x = "Tamaño de Muestra", y = "Valor", title = "Resultados de Normalidad, Media y Desviación Estándar") +
  theme_minimal()

  • Por último, se presenta el gráfico Cuantil - Cuantil para cada uno de los tamaños de muestra, con el fin, de visualizar como se comparan con una distribución normal:
# Crear un gráfico Q-Q para cada tamaño de muestra utilizando qqnorm()
par(mfrow=c(2, 5))  # Dividir la ventana gráfica en 2 filas y 5 columnas para los gráficos Q-Q

for (i in 1:length(tamanos_muestra)) {
  muestra_resultados <- resultados_por_tamano[, i]
  qqnorm(muestra_resultados, main = paste("n =", tamanos_muestra[i]))
  qqline(muestra_resultados, col = 2)  # Agregar línea de referencia de la distribución normal
}

En este caso, y teniendo en cuenta que al momento de la ejecución del código se generan valores aleatorios, es importante evaluar, que en el gráfico Q-Q, se compara la distribución de los cuantiles de los datos calculados con la distribución normal. La línea diagonal recta, corresponde a la distribución normal esperada. Por lo tanto, se observa que a medida que aumenta el número de la muestra, los datos se aproximan a la línea diagonal recta, por lo que su comportamiento, tiende a ser más parecido al de la distribución normal.

Punto e):

  • Lotes con 10% de plantas enfermas

  • Punto a):

# Paso e - Repetir para diferentes porcentajes de plantas enfermas

# Paso a - Simulación de la población de tamaño n= 1000 con un 50% de porcentaje de individuos de plantas enfermas

poblacion <- rbinom(n = 1000, size = 1, prob = 0.1) # rbinom: función que genera números aleatorios a partir de una distribución binomial. Size = 1: Cada número aleatorio será el resultado de un solo ensayo de una distribución binomial,

Punto b):

# Paso b - Generar Función para obtener muestra aleatoria y calcular el estimador de la proporción muestral pˆ para un tamaño de muestrada dado n

funcion_muestra_estimador <- function(poblacion, n) {
  muestra <- sample(poblacion, size = n, replace = FALSE) # la función sample selecciona una muestra aleatoria de la población dada. replace = FALSE indica que no se deben repetir elementos en la muestra, es decir, cada elemento seleccionado es único.
  proporcion_muestral <- mean(muestra) #Calcular el estimador de la proporción muestral pˆ, se hace calculando la media de la muestra.
  return(proporcion_muestral)
}

Punto c):

NOTA: Teniendo en cuenta que la ejecución del código genera valores aletorios, el análisis se realiza de carácter general.

A continuación, se presenta la tabla de los resultados de las 500 simulaciones para una muestra de tamañano n= 32. Adicionalmente, se presenta la evaluación de la simetría o sesgadez y variabilidad.

Para el cálculo de la asimetría, se utilizó una formulación estándar

# Paso c - Realizar paso b) 500 simulaciones y analizar resultados

num_simulaciones <- 500
resultados <- replicate(num_simulaciones, funcion_muestra_estimador(poblacion, n = 32))
print(resultados)
##   [1] 0.06250 0.09375 0.03125 0.15625 0.12500 0.06250 0.03125 0.09375 0.03125
##  [10] 0.06250 0.09375 0.15625 0.12500 0.15625 0.03125 0.09375 0.06250 0.06250
##  [19] 0.09375 0.09375 0.12500 0.09375 0.06250 0.18750 0.06250 0.03125 0.15625
##  [28] 0.28125 0.09375 0.15625 0.09375 0.12500 0.09375 0.12500 0.18750 0.12500
##  [37] 0.06250 0.12500 0.06250 0.12500 0.12500 0.15625 0.06250 0.06250 0.18750
##  [46] 0.12500 0.09375 0.12500 0.06250 0.03125 0.03125 0.03125 0.06250 0.25000
##  [55] 0.25000 0.12500 0.09375 0.06250 0.09375 0.15625 0.12500 0.09375 0.09375
##  [64] 0.03125 0.06250 0.09375 0.06250 0.15625 0.06250 0.03125 0.09375 0.03125
##  [73] 0.03125 0.09375 0.09375 0.12500 0.06250 0.06250 0.06250 0.09375 0.06250
##  [82] 0.12500 0.06250 0.06250 0.06250 0.03125 0.12500 0.06250 0.12500 0.03125
##  [91] 0.03125 0.03125 0.12500 0.15625 0.12500 0.25000 0.09375 0.12500 0.18750
## [100] 0.06250 0.03125 0.15625 0.09375 0.09375 0.15625 0.03125 0.12500 0.12500
## [109] 0.06250 0.09375 0.15625 0.09375 0.12500 0.09375 0.06250 0.12500 0.12500
## [118] 0.09375 0.06250 0.15625 0.09375 0.09375 0.21875 0.12500 0.06250 0.06250
## [127] 0.15625 0.00000 0.18750 0.09375 0.09375 0.09375 0.03125 0.03125 0.09375
## [136] 0.06250 0.18750 0.18750 0.06250 0.06250 0.12500 0.15625 0.00000 0.03125
## [145] 0.09375 0.09375 0.18750 0.12500 0.12500 0.18750 0.15625 0.12500 0.09375
## [154] 0.09375 0.00000 0.06250 0.06250 0.06250 0.06250 0.12500 0.15625 0.12500
## [163] 0.09375 0.15625 0.09375 0.03125 0.09375 0.12500 0.21875 0.09375 0.06250
## [172] 0.09375 0.09375 0.06250 0.00000 0.06250 0.09375 0.06250 0.15625 0.21875
## [181] 0.15625 0.15625 0.03125 0.12500 0.12500 0.12500 0.12500 0.06250 0.06250
## [190] 0.15625 0.09375 0.15625 0.00000 0.09375 0.06250 0.12500 0.09375 0.12500
## [199] 0.09375 0.00000 0.12500 0.00000 0.15625 0.12500 0.12500 0.03125 0.09375
## [208] 0.06250 0.06250 0.09375 0.18750 0.06250 0.09375 0.18750 0.09375 0.15625
## [217] 0.18750 0.18750 0.06250 0.09375 0.06250 0.06250 0.03125 0.12500 0.09375
## [226] 0.09375 0.06250 0.18750 0.03125 0.03125 0.06250 0.09375 0.06250 0.03125
## [235] 0.15625 0.09375 0.12500 0.12500 0.09375 0.03125 0.09375 0.12500 0.06250
## [244] 0.12500 0.06250 0.06250 0.09375 0.03125 0.18750 0.03125 0.09375 0.06250
## [253] 0.15625 0.09375 0.12500 0.06250 0.12500 0.09375 0.09375 0.09375 0.06250
## [262] 0.18750 0.15625 0.12500 0.09375 0.09375 0.12500 0.06250 0.06250 0.12500
## [271] 0.00000 0.06250 0.09375 0.09375 0.15625 0.03125 0.12500 0.09375 0.09375
## [280] 0.03125 0.18750 0.12500 0.18750 0.12500 0.15625 0.12500 0.15625 0.03125
## [289] 0.12500 0.21875 0.03125 0.03125 0.12500 0.03125 0.18750 0.09375 0.03125
## [298] 0.21875 0.12500 0.21875 0.09375 0.09375 0.09375 0.06250 0.12500 0.09375
## [307] 0.18750 0.09375 0.21875 0.18750 0.03125 0.21875 0.09375 0.09375 0.06250
## [316] 0.06250 0.09375 0.18750 0.06250 0.12500 0.06250 0.12500 0.06250 0.09375
## [325] 0.21875 0.03125 0.12500 0.00000 0.12500 0.15625 0.09375 0.09375 0.03125
## [334] 0.03125 0.09375 0.09375 0.06250 0.03125 0.03125 0.06250 0.03125 0.03125
## [343] 0.03125 0.09375 0.09375 0.03125 0.03125 0.15625 0.21875 0.06250 0.00000
## [352] 0.09375 0.09375 0.00000 0.09375 0.15625 0.09375 0.09375 0.03125 0.12500
## [361] 0.09375 0.06250 0.12500 0.06250 0.03125 0.00000 0.12500 0.25000 0.03125
## [370] 0.06250 0.21875 0.06250 0.18750 0.06250 0.18750 0.06250 0.06250 0.12500
## [379] 0.09375 0.06250 0.03125 0.12500 0.06250 0.09375 0.03125 0.15625 0.06250
## [388] 0.09375 0.12500 0.18750 0.06250 0.09375 0.09375 0.09375 0.06250 0.09375
## [397] 0.06250 0.06250 0.06250 0.09375 0.12500 0.06250 0.12500 0.18750 0.09375
## [406] 0.06250 0.21875 0.09375 0.09375 0.03125 0.12500 0.09375 0.12500 0.15625
## [415] 0.09375 0.03125 0.03125 0.03125 0.06250 0.06250 0.21875 0.12500 0.12500
## [424] 0.09375 0.25000 0.06250 0.12500 0.06250 0.09375 0.06250 0.09375 0.15625
## [433] 0.12500 0.12500 0.12500 0.09375 0.15625 0.03125 0.06250 0.21875 0.06250
## [442] 0.09375 0.03125 0.03125 0.12500 0.18750 0.12500 0.09375 0.12500 0.18750
## [451] 0.12500 0.21875 0.06250 0.12500 0.09375 0.12500 0.12500 0.09375 0.12500
## [460] 0.00000 0.09375 0.09375 0.18750 0.12500 0.06250 0.06250 0.09375 0.15625
## [469] 0.09375 0.15625 0.18750 0.09375 0.09375 0.18750 0.09375 0.15625 0.06250
## [478] 0.03125 0.06250 0.12500 0.21875 0.03125 0.12500 0.06250 0.06250 0.09375
## [487] 0.09375 0.15625 0.09375 0.15625 0.21875 0.06250 0.09375 0.00000 0.06250
## [496] 0.09375 0.06250 0.25000 0.15625 0.06250
# Calcular la asimetría 

# 1. Calcular el coeficiente de asimetría de Fisher 

# 2. Calcular la media de la muestra
media <- mean(resultados)

# 3. Calcular la desviación estándar de la muestra
desviacion_estandar <- sd(resultados)

# 4. Calcular el número de observaciones en la muestra
n <- length(resultados)

# 5. Calcular el numerador del coeficiente de asimetría de Fisher
numerador <- sum((resultados - media)^3)

# 6. Calcular el coeficiente de asimetría de Fisher
asimetria_resultados <- (numerador / (n * desviacion_estandar^3))

# Calcular la varianza y sesgo de la variable resultados

varianza_resultados <- var(resultados)
sesgo <- mean(resultados) - 0.1

# Imprimir los resultados
print(paste("Asimetría:", asimetria_resultados))
## [1] "Asimetría: 0.574733368877761"
print(paste("Varianza:", varianza_resultados))
## [1] "Varianza: 0.0028741036761022"
print(paste("Sesgo:",sesgo))
## [1] "Sesgo: 6.24999999999931e-05"
# Crear un data frame con los resultados para el diagrama de caja
df_resultados <- data.frame(Resultados = resultados)

Análisis

  • En relación con la asimetría, en el caso de obtener un valor mayor que 0 (positivo), significa que se tienen más datos del lado derecho de la distribución. En el caso de ser menor que 0 (negativo), corresponde a que existen más datos del lado izquierdo de la distribución.

  • En cuanto a la varianza, en la medida que el resultado sea más cercano a 0, se concluye que los datos obtenidos no se encuentran dispersos con respecto al parámetro definido. Por lo tanto, en la medida que el resultado de la varianza se acerque a 0, mayor eficiencia.

  • Por último, en relación al sesgo, en la medida que este valor sea más cercano a 0, los resultados están más cerca del valor verdadero del parámetro. En el caso en que se obtenga un sesgo = 0, se puede concluir que el estimador es insesgado, es decir, no sobreestima, ni subestima el parámetro.

A continuación, se presenta un diagrama de caja de los valores obtenidos del estimador de la proporción muestral p^:

# Graficar un diagrama de caja
library(ggplot2)
ggplot(df_resultados, aes(x = "Estimaciones", y = Resultados)) +
  geom_boxplot() +
  labs(x = "", y = "Estimador p^", title = "Diagrama de Caja de Estimadores p^") +
  theme_minimal()

Punto d):

# Paso d - Repetir para diferentes tamaños de muestra y realizar pruebas de normalidad
tamanos_muestra <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)
resultados_por_tamano <- matrix(NA, nrow = num_simulaciones, ncol = length(tamanos_muestra)) # Matriz con num_simulaciones filas y length(tamanos_muestra) columnas. Cada celda de la matriz se inicializa con el valor NA 

for (i in 1:length(tamanos_muestra)) {
  muestra_tamano <- tamanos_muestra[i]
  resultados_por_tamano[, i] <- replicate(num_simulaciones, funcion_muestra_estimador(poblacion, n = muestra_tamano))
}

# Pruebas de normalidad y gráficos de normalidad
library(stats)
normalidad_resultados <- matrix(NA, nrow = length(tamanos_muestra), ncol = 3)

for (i in 1:length(tamanos_muestra)) {
  muestra_resultados <- resultados_por_tamano[, i]
  normalidad_resultados[i, 1] <- shapiro.test(muestra_resultados)$p.value
  normalidad_resultados[i, 2] <- mean(muestra_resultados)
  normalidad_resultados[i, 3] <- sd(muestra_resultados)
}

# Crear un dataframe con los resultados
df_normalidad <- data.frame(TamañoMuestra = tamanos_muestra,
                            PValue = normalidad_resultados[, 1],
                            Media = normalidad_resultados[, 2],
                            DesviacionEstandar = normalidad_resultados[, 3])

A continuación, se presenta el resultado de la prueba de bondad y ajuste (evaluación de normalidad), así como el comportamiento de la media y la desviación estándar:

print(df_normalidad)
##    TamañoMuestra       PValue      Media DesviacionEstandar
## 1              5 1.871102e-30 0.08160000        0.121700707
## 2             10 4.323601e-22 0.09920000        0.095170767
## 3             15 7.472373e-18 0.10146667        0.072044792
## 4             20 1.794576e-15 0.09580000        0.063406631
## 5             30 1.257112e-13 0.10246667        0.055678683
## 6             50 3.552770e-07 0.09612000        0.043126156
## 7             60 8.089357e-07 0.09896667        0.035288975
## 8            100 6.422092e-05 0.09878000        0.029106804
## 9            200 4.081709e-03 0.09936000        0.019709575
## 10           500 6.159842e-03 0.09854800        0.009315431
# Graficar los resultados
ggplot(df_normalidad, aes(x = TamañoMuestra)) +
  geom_line(aes(y = PValue, color = "P-Value")) +
  geom_line(aes(y = Media, color = "Media")) +
  geom_line(aes(y = DesviacionEstandar, color = "Desviacion Estandar")) +
  scale_color_manual(values = c("P-Value" = "blue", "Media" = "green", "Desviacion Estandar" = "red")) +
  labs(x = "Tamaño de Muestra", y = "Valor", title = "Resultados de Normalidad, Media y Desviación Estándar") +
  theme_minimal()

  • Por último, se presenta el gráfico Cuantil - Cuantil para cada uno de los tamaños de muestra, con el fin, de visualizar como se comparan con una distribución normal:
# Crear un gráfico Q-Q para cada tamaño de muestra utilizando qqnorm()
par(mfrow=c(2, 5))  # Dividir la ventana gráfica en 2 filas y 5 columnas para los gráficos Q-Q

for (i in 1:length(tamanos_muestra)) {
  muestra_resultados <- resultados_por_tamano[, i]
  qqnorm(muestra_resultados, main = paste("n =", tamanos_muestra[i]))
  qqline(muestra_resultados, col = 2)  # Agregar línea de referencia de la distribución normal
}

En este caso, y teniendo en cuenta que al momento de la ejecución del código se generan valores aleatorios, es importante evaluar, que en el gráfico Q-Q, se compara la distribución de los cuantiles de los datos calculados con la distribución normal. La línea diagonal recta, corresponde a la distribución normal esperada. Por lo tanto, se observa que a medida que aumenta el número de la muestra, los datos se aproximan a la línea diagonal recta, por lo que su comportamiento, tiende a ser más parecido al de la distribución normal.

  • Lotes con 90% de plantas enfermas

  • Punto a):

# Paso e - Repetir para diferentes porcentajes de plantas enfermas


# Paso a - Simulación de la población de tamaño n= 1000 con un 50% de porcentaje de individuos de plantas enfermas

poblacion <- rbinom(n = 1000, size = 1, prob = 0.9) # rbinom: función que genera números aleatorios a partir de una distribución binomial. Size = 1: Cada número aleatorio será el resultado de un solo ensayo de una distribución binomial,

Punto b):

# Paso b - Generar Función para obtener muestra aleatoria y calcular el estimador de la proporción muestral pˆ para un tamaño de muestrada dado n

funcion_muestra_estimador <- function(poblacion, n) {
  muestra <- sample(poblacion, size = n, replace = FALSE) # la función sample selecciona una muestra aleatoria de la población dada. replace = FALSE indica que no se deben repetir elementos en la muestra, es decir, cada elemento seleccionado es único.
  proporcion_muestral <- mean(muestra) #Calcular el estimador de la proporción muestral pˆ, se hace calculando la media de la muestra.
  return(proporcion_muestral)
}

Punto c):

NOTA: Teniendo en cuenta que la ejecución del código genera valores aletorios, el análisis se realiza de carácter general.

A continuación, se presenta la tabla de los resultados de las 500 simulaciones para una muestra de tamañano n= 32. Adicionalmente, se presenta la evaluación de la simetría o sesgadez y variabilidad.

Para el cálculo de la asimetría, se utilizó una formulación estándar

# Paso c - Realizar paso b) 500 simulaciones y analizar resultados

num_simulaciones <- 500
resultados <- replicate(num_simulaciones, funcion_muestra_estimador(poblacion, n = 32))
print(resultados)
##   [1] 0.93750 0.84375 0.90625 0.84375 0.87500 0.96875 0.90625 1.00000 0.93750
##  [10] 0.90625 0.87500 0.93750 0.90625 0.90625 0.78125 0.96875 0.90625 0.87500
##  [19] 0.96875 0.87500 0.90625 0.96875 1.00000 0.93750 0.90625 0.96875 0.96875
##  [28] 0.81250 0.84375 0.96875 0.93750 0.93750 0.96875 0.93750 0.81250 0.96875
##  [37] 1.00000 0.84375 0.93750 0.96875 0.90625 0.84375 0.84375 0.78125 0.96875
##  [46] 0.93750 0.93750 0.93750 0.90625 1.00000 0.87500 0.81250 0.90625 0.93750
##  [55] 0.87500 0.90625 0.93750 1.00000 0.84375 0.96875 0.93750 0.96875 0.93750
##  [64] 0.96875 0.93750 0.84375 0.93750 0.84375 0.93750 0.90625 0.90625 0.90625
##  [73] 0.81250 0.90625 0.84375 0.87500 0.87500 0.87500 0.96875 0.84375 0.93750
##  [82] 0.84375 0.78125 1.00000 0.96875 0.96875 0.90625 0.93750 0.87500 0.78125
##  [91] 0.93750 0.90625 0.87500 0.96875 0.96875 0.93750 0.87500 0.90625 0.90625
## [100] 0.78125 0.84375 0.96875 0.96875 0.96875 0.87500 1.00000 0.93750 0.96875
## [109] 0.93750 0.93750 0.84375 0.93750 0.93750 0.90625 0.96875 0.96875 0.87500
## [118] 0.90625 0.90625 0.90625 0.87500 0.90625 0.96875 0.96875 0.87500 1.00000
## [127] 0.93750 0.90625 0.81250 0.84375 0.96875 0.84375 0.84375 0.87500 0.90625
## [136] 0.90625 0.90625 0.84375 0.96875 0.96875 0.87500 0.93750 0.84375 0.87500
## [145] 0.90625 0.87500 0.87500 0.93750 0.93750 0.84375 0.90625 0.93750 1.00000
## [154] 0.90625 0.93750 0.93750 0.90625 0.87500 0.96875 0.93750 0.96875 0.93750
## [163] 0.87500 0.87500 0.96875 0.93750 0.87500 0.93750 0.90625 0.90625 0.87500
## [172] 0.90625 0.96875 0.96875 0.96875 0.96875 0.90625 0.90625 0.96875 0.96875
## [181] 0.84375 0.96875 0.90625 0.90625 0.93750 1.00000 0.87500 0.81250 0.87500
## [190] 0.84375 0.81250 0.84375 0.93750 0.87500 0.87500 0.93750 0.90625 0.87500
## [199] 0.93750 1.00000 0.93750 0.93750 0.90625 0.93750 0.96875 1.00000 0.90625
## [208] 0.96875 0.90625 0.96875 0.96875 0.87500 0.90625 0.90625 0.84375 0.93750
## [217] 0.87500 0.90625 0.87500 0.90625 0.87500 0.90625 0.87500 0.84375 0.87500
## [226] 0.87500 0.90625 0.96875 0.84375 0.87500 0.87500 0.90625 0.93750 0.90625
## [235] 0.87500 0.93750 0.93750 0.96875 0.93750 0.93750 0.87500 0.93750 0.87500
## [244] 0.90625 0.96875 0.90625 0.90625 0.93750 0.96875 0.87500 0.90625 0.90625
## [253] 0.78125 0.78125 0.93750 0.96875 0.96875 0.87500 1.00000 0.96875 0.90625
## [262] 0.87500 0.90625 0.96875 0.93750 0.93750 0.87500 0.96875 0.87500 0.90625
## [271] 0.93750 0.90625 0.96875 0.90625 0.90625 0.87500 0.96875 0.87500 0.93750
## [280] 0.90625 0.84375 0.93750 0.87500 0.90625 0.87500 0.93750 0.87500 0.93750
## [289] 0.87500 1.00000 0.93750 0.90625 0.93750 0.96875 0.90625 0.96875 0.96875
## [298] 0.84375 0.90625 0.84375 0.90625 0.93750 0.87500 0.93750 0.93750 0.96875
## [307] 0.87500 1.00000 0.90625 0.93750 0.93750 0.93750 0.87500 1.00000 0.96875
## [316] 0.90625 0.93750 0.90625 0.93750 0.90625 0.93750 0.87500 0.93750 0.87500
## [325] 0.93750 0.96875 0.87500 0.90625 0.87500 0.87500 0.96875 0.93750 0.90625
## [334] 0.87500 0.87500 0.87500 0.90625 0.87500 0.93750 0.96875 0.96875 0.87500
## [343] 0.84375 0.87500 0.93750 0.93750 0.84375 0.96875 0.90625 0.90625 0.87500
## [352] 0.90625 1.00000 0.96875 0.90625 0.93750 0.87500 0.84375 0.84375 0.87500
## [361] 0.84375 0.81250 0.90625 0.93750 0.87500 0.90625 0.96875 0.96875 0.87500
## [370] 0.84375 0.81250 0.93750 0.84375 0.87500 0.90625 0.90625 0.90625 0.87500
## [379] 0.90625 0.96875 0.87500 0.93750 0.93750 0.93750 0.96875 0.90625 0.96875
## [388] 0.96875 0.87500 0.90625 0.93750 0.90625 0.90625 0.90625 0.90625 0.90625
## [397] 0.84375 0.84375 0.93750 0.96875 0.90625 0.93750 0.90625 0.90625 1.00000
## [406] 0.96875 0.75000 0.93750 0.90625 0.84375 0.90625 0.81250 0.96875 0.93750
## [415] 1.00000 0.90625 0.90625 0.90625 0.90625 0.93750 0.96875 0.93750 0.90625
## [424] 0.96875 0.81250 0.78125 0.93750 0.90625 0.90625 0.96875 0.90625 0.90625
## [433] 0.96875 0.96875 0.87500 0.90625 0.87500 1.00000 0.87500 0.87500 0.93750
## [442] 0.84375 0.87500 0.93750 0.96875 0.93750 0.90625 0.96875 0.84375 0.87500
## [451] 0.90625 0.96875 0.93750 0.81250 0.96875 0.84375 0.96875 0.93750 0.87500
## [460] 0.87500 0.87500 0.93750 1.00000 0.93750 0.96875 0.93750 0.93750 0.84375
## [469] 0.84375 0.84375 1.00000 0.90625 0.90625 0.93750 0.93750 0.93750 0.96875
## [478] 0.96875 0.90625 0.90625 0.93750 0.96875 0.93750 0.90625 0.87500 0.87500
## [487] 0.90625 0.96875 0.81250 0.90625 0.96875 0.96875 0.93750 0.90625 0.81250
## [496] 0.93750 0.87500 0.90625 0.84375 0.87500
# Calcular la asimetría 

# 1. Calcular el coeficiente de asimetría de Fisher 

# 2. Calcular la media de la muestra
media <- mean(resultados)

# 3. Calcular la desviación estándar de la muestra
desviacion_estandar <- sd(resultados)

# 4. Calcular el número de observaciones en la muestra
n <- length(resultados)

# 5. Calcular el numerador del coeficiente de asimetría de Fisher
numerador <- sum((resultados - media)^3)

# 6. Calcular el coeficiente de asimetría de Fisher
asimetria_resultados <- (numerador / (n * desviacion_estandar^3))

# Calcular la varianza y sesgo de la variable resultados

varianza_resultados <- var(resultados)
sesgo <- mean(resultados) - 0.9

# Imprimir los resultados
print(paste("Asimetría:", asimetria_resultados))
## [1] "Asimetría: -0.393800703357221"
print(paste("Varianza:", varianza_resultados))
## [1] "Varianza: 0.00236445938752505"
print(paste("Sesgo:",sesgo))
## [1] "Sesgo: 0.0123124999999999"
# Crear un data frame con los resultados para el diagrama de caja
df_resultados <- data.frame(Resultados = resultados)

Análisis

  • En relación con la asimetría, en el caso de obtener un valor mayor que 0 (positivo), significa que se tienen más datos del lado derecho de la distribución. En el caso de ser menor que 0 (negativo), corresponde a que existen más datos del lado izquierdo de la distribución.

  • En cuanto a la varianza, en la medida que el resultado sea más cercano a 0, se concluye que los datos obtenidos no se encuentran dispersos con respecto al parámetro definido. Por lo tanto, en la medida que el resultado de la varianza se acerque a 0, mayor eficiencia.

  • Por último, en relación al sesgo, en la medida que este valor sea más cercano a 0, los resultados están más cerca del valor verdadero del parámetro. En el caso en que se obtenga un sesgo = 0, se puede concluir que el estimador es insesgado, es decir, no sobreestima, ni subestima el parámetro.

A continuación, se presenta un diagrama de caja de los valores obtenidos del estimador de la proporción muestral p^:

# Graficar un diagrama de caja
library(ggplot2)
ggplot(df_resultados, aes(x = "Estimaciones", y = Resultados)) +
  geom_boxplot() +
  labs(x = "", y = "Estimador p^", title = "Diagrama de Caja de Estimadores p^") +
  theme_minimal()

Punto d):

# Paso d - Repetir para diferentes tamaños de muestra y realizar pruebas de normalidad
tamanos_muestra <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)
resultados_por_tamano <- matrix(NA, nrow = num_simulaciones, ncol = length(tamanos_muestra)) # Matriz con num_simulaciones filas y length(tamanos_muestra) columnas. Cada celda de la matriz se inicializa con el valor NA 

for (i in 1:length(tamanos_muestra)) {
  muestra_tamano <- tamanos_muestra[i]
  resultados_por_tamano[, i] <- replicate(num_simulaciones, funcion_muestra_estimador(poblacion, n = muestra_tamano))
}

# Pruebas de normalidad y gráficos de normalidad
library(stats)
normalidad_resultados <- matrix(NA, nrow = length(tamanos_muestra), ncol = 3)

for (i in 1:length(tamanos_muestra)) {
  muestra_resultados <- resultados_por_tamano[, i]
  normalidad_resultados[i, 1] <- shapiro.test(muestra_resultados)$p.value
  normalidad_resultados[i, 2] <- mean(muestra_resultados)
  normalidad_resultados[i, 3] <- sd(muestra_resultados)
}

# Crear un dataframe con los resultados
df_normalidad <- data.frame(TamañoMuestra = tamanos_muestra,
                            PValue = normalidad_resultados[, 1],
                            Media = normalidad_resultados[, 2],
                            DesviacionEstandar = normalidad_resultados[, 3])

A continuación, se presenta el resultado de la prueba de bondad y ajuste (evaluación de normalidad), así como el comportamiento de la media y la desviación estándar:

print(df_normalidad)
##    TamañoMuestra       PValue     Media DesviacionEstandar
## 1              5 8.115800e-30 0.9096000        0.130314249
## 2             10 1.407307e-23 0.9146000        0.089121970
## 3             15 2.072080e-18 0.9064000        0.074214779
## 4             20 1.804833e-16 0.9118000        0.062438427
## 5             30 1.879471e-12 0.9165333        0.047727050
## 6             50 4.793696e-10 0.9142000        0.037399967
## 7             60 3.345688e-08 0.9154333        0.034997392
## 8            100 3.326916e-06 0.9138200        0.026732693
## 9            200 1.095349e-03 0.9139500        0.016382438
## 10           500 7.971080e-03 0.9139960        0.009225302
# Graficar los resultados
ggplot(df_normalidad, aes(x = TamañoMuestra)) +
  geom_line(aes(y = PValue, color = "P-Value")) +
  geom_line(aes(y = Media, color = "Media")) +
  geom_line(aes(y = DesviacionEstandar, color = "Desviacion Estandar")) +
  scale_color_manual(values = c("P-Value" = "blue", "Media" = "green", "Desviacion Estandar" = "red")) +
  labs(x = "Tamaño de Muestra", y = "Valor", title = "Resultados de Normalidad, Media y Desviación Estándar") +
  theme_minimal()

  • Por último, se presenta el gráfico Cuantil - Cuantil para cada uno de los tamaños de muestra, con el fin, de visualizar como se comparan con una distribución normal:
# Crear un gráfico Q-Q para cada tamaño de muestra utilizando qqnorm()
par(mfrow=c(2, 5))  # Dividir la ventana gráfica en 2 filas y 5 columnas para los gráficos Q-Q

for (i in 1:length(tamanos_muestra)) {
  muestra_resultados <- resultados_por_tamano[, i]
  qqnorm(muestra_resultados, main = paste("n =", tamanos_muestra[i]))
  qqline(muestra_resultados, col = 2)  # Agregar línea de referencia de la distribución normal
}

En este caso, y teniendo en cuenta que al momento de la ejecución del código se generan valores aleatorios, es importante evaluar, que en el gráfico Q-Q, se compara la distribución de los cuantiles de los datos calculados con la distribución normal. La línea diagonal recta, corresponde a la distribución normal esperada. Por lo tanto, se observa que a medida que aumenta el número de la muestra, los datos se aproximan a la línea diagonal recta, por lo que su comportamiento, tiende a ser más parecido al de la distribución normal.

  • Análisis punto e) en relación con los lotes de 10%, 50% y 90% de plantas enfermas

  • En relación con el comportamiento de la gráfica Q-Q, se mantiene la premisa, que a medida que aumenta el valor de la muestra, el comportamiento tiende a ser más aproximado a una distribución normal.

  • En cuanto al p-value, se observa que a medida que aumenta el porcentaje de plantas enfermas, este valor disminuye y es más estable, a medida que aumenta la muestra.