INTRODUCCION

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
  • Calcule el estimador de la proporción muestral 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 ¿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()

DESARROLLO

PREGUNTA 1

Generación de la población

set.seed(184) 
enfermos<-rep("enfermo",500)
sanos<-rep("sano",500)
poblacion <-c(enfermos,sanos)
porenfermos<-0.5

Verificación de las caracteristicas de la población generada

nenfermos<- sum(poblacion=="enfermo")
nsanos<- sum(poblacion=="sano")

cat("Numero total de individuos:", length(poblacion),"\n",
    "Numero de individuos enfermos:", nenfermos,"\n", 
    "Numero de individuos sanos:", nsanos,"\n",
    "Numero total",nenfermos+nsanos, "\n")
## Numero total de individuos: 1000 
##  Numero de individuos enfermos: 500 
##  Numero de individuos sanos: 500 
##  Numero total 1000

PREGUNTA 2

Generación de la función para obtener una muestra aleatoria de la población

set.seed(418) 
fmuestra <- function(poblacion_muestra, tamano_muestra){
muestra_aleatoria <- sample(poblacion_muestra, size = tamano_muestra, replace = FALSE)
  nenfermosmuestra <- sum(muestra_aleatoria == "enfermo")
  nsanosmuestra <- sum(muestra_aleatoria == "sano")
  return(muestra_aleatoria)
}

Generación de la función para obtener el estimador de la proporción muestral

festimador <- function(muestra_aleatoria){
  penfermos <- sum(muestra_aleatoria == "enfermo") / length(muestra_aleatoria)
  return(penfermos)
}

PREGUNTA 3

Calculo del estimador para la proporción muestral de 500

resultadosestimador500<-numeric(500)
for (i in 1:500){
  muestra500<-fmuestra(poblacion,500)
  estimador500<-festimador(muestra500)
  resultadosestimador500[i]<-estimador500
}

Histograma

histograma500<- hist(resultadosestimador500,main = "Simulacion para n=500", ylab = "Frecuencia", xlab = "Proporcion plantas enfermas")

tablahistograma500 <- data.frame(
  Intervalo=paste(histograma500$mids,"-",histograma500$mids +histograma500$breaks[2]-histograma500$breaks[1]),
  Frecuencia=histograma500$counts)
tablahistograma500
##        Intervalo Frecuencia
## 1  0.455 - 0.465          4
## 2  0.465 - 0.475         18
## 3  0.475 - 0.485         39
## 4  0.485 - 0.495         80
## 5  0.495 - 0.505        118
## 6  0.505 - 0.515        119
## 7  0.515 - 0.525         86
## 8  0.525 - 0.535         27
## 9  0.535 - 0.545          7
## 10 0.545 - 0.555          2

Analisis histograma

library(e1071)
coefasismetria500<-skewness(resultadosestimador500)
coefvariacion500<-(sd(resultadosestimador500)/mean(resultadosestimador500))*100
errormuestral500<-abs(mean(resultadosestimador500)-porenfermos)
indshapiro500<- shapiro.test(resultadosestimador500)

cat("Media:", mean(resultadosestimador500), "\n",
    "Error muestral:", errormuestral500, "\n", 
    "Coeficiente de asimetria:", coefasismetria500, "\n",
    "Coeficiente de variacion:", coefvariacion500, "%", "\n",
    "Prueba Shapiro-Wilk p-value:", indshapiro500$p.value, "\n")
## Media: 0.499684 
##  Error muestral: 0.000316 
##  Coeficiente de asimetria: -0.1091742 
##  Coeficiente de variacion: 3.178097 % 
##  Prueba Shapiro-Wilk p-value: 0.1703133
qqnorm(resultadosestimador500)
qqline(resultadosestimador500)

Analisis de resultados

  • La simulacion obtuvo media de 0.499684 con un error del 0.316%. Esto sugiere que, en promedio, el estimador utilizado en la simulación es muy cercano al valor teórico deseado, por tal motivo se obtuvieron datos altamente precisos y confiables para estimar la población objetivo.

  • El coeficiente de asimetría es cercano a cero (-0.1091742 ), lo que sugiere que la distribución de los estimadores es prácticamente simétrica. Esto indica que no hay un sesgo pronunciado hacia la izquierda o hacia la derecha en la distribución.

  • El coeficiente de variación es muy bajo ( 3.178097 %), lo que significa que la variabilidad en los resultados es extremadamente baja en relación con la media. Esto indica que los resultados están cerca de la media y no se dispersan demasiado.

  • Los datos muestran un valor p de 0.1703133, que es mayor que 0.05, por ende, no tienes suficiente evidencia para rechazar la hipótesis nula de que los datos siguen una distribución normal.Esto sugiere que los datos podrían considerarse aproximadamente normales.

  • Los resultados para N=500 son bastante representativos de la población, ya que muestran un comportamiento simétrico y una baja variabilidad en relación con la media. Además, no hay evidencia sólida de que los datos no sigan una distribución normal.

PREGUNTA 4

Utilizamos un condicional para repetir los puntos anteriores varias veces

set.seed(418)
n <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)
resultadossimulacion <- list()
histograma <- list()
tablahistograma <- list()
coefasimetria <- numeric(length(n))
coefvariacion <- numeric(length(n))
errormuestral <- numeric(length(n))
indshapiro <- list()

par(mfrow = c(1, 2))

for (i in 1:length(n)) {
  resultadosestimador <- numeric(500)
  
  for (j in 1:500) {
    muestra <- fmuestra(poblacion, n[i])
    estimador <- festimador(muestra)
    resultadosestimador[j] <- estimador
  }
  
  resultadossimulacion[[as.character(n[i])]] <- resultadosestimador
  
  histograma[[as.character(n[i])]] <- hist(resultadosestimador, 
       main = paste("Histograma para n =", n[i]),
       ylab = "Frecuencia",
       xlab = "Proporción plantas enfermas")
  
  qqnorm(resultadosestimador)
  qqline(resultadosestimador)

 
  coefasimetria[i] <- skewness(resultadosestimador)
  coefvariacion[i] <- (sd(resultadosestimador) / mean(resultadosestimador)) * 100
  errormuestral[i] <- abs(mean(resultadosestimador) - porenfermos)
  indshapiro[[as.character(n[i])]] <- shapiro.test(resultadosestimador)
  
}

par(mfrow = c(1, 1))

media <- sapply(resultadossimulacion, mean)
error_muestral <- sapply(resultadossimulacion, function(x) abs(mean(x) - porenfermos))*100
coef_asimetria <- sapply(resultadossimulacion, skewness)
coef_variacion <- sapply(resultadossimulacion, function(x) (sd(x) / mean(x)) * 100)
p_value <- sapply(indshapiro, function(x) x$p.value)

tabla1 <- data.frame( Media = media, Error_Muestral = error_muestral, Coeficiente_Asimetria = coef_asimetria, Coeficiente_Variacion = coef_variacion, P_Value = p_value)

colnames(tabla1) <- c( "Media", "Error Muestral", "Coeficiente Asimetria", "Coeficiente Variacion", "P Value")
print(tabla1)
##         Media Error Muestral Coeficiente Asimetria Coeficiente Variacion
## 5   0.5088000    0.880000000           -0.04335694             44.795135
## 10  0.4978000    0.220000000           -0.11694592             31.445977
## 15  0.4978667    0.213333333           -0.11448497             24.500057
## 20  0.4956000    0.440000000            0.17962101             22.807066
## 30  0.5008667    0.086666667           -0.09577458             19.166214
## 50  0.5062000    0.620000000           -0.03931141             13.680919
## 60  0.4999667    0.003333333            0.11870445             12.502446
## 100 0.5000600    0.006000000            0.04742793              9.007035
## 200 0.5003000    0.030000000           -0.04788430              6.237596
## 500 0.4997560    0.024400000           -0.02317438              3.128117
##          P Value
## 5   1.517647e-14
## 10  5.700997e-10
## 15  3.209706e-08
## 20  1.187326e-06
## 30  3.786168e-04
## 50  7.662994e-04
## 60  9.642517e-03
## 100 1.209658e-02
## 200 1.748990e-01
## 500 1.898582e-01

Analisis de resultados

La prueba de Shapiro-Wilk se utiliza para evaluar si una muestra proviene de una población con una distribución normal. En general, se considera que los datos son normales si el valor p de la prueba de Shapiro-Wilk es mayor que el nivel de significancia (0.05). En las simulaciones anteriores se observa:

  • Para N = 5, el valor p es 1.517647e-14,lo que sugiere no normalidad.

  • Para N = 10, el valor p es 5.700997e-10,lo que sugiere no normalidad.

  • Para N = 15, el valor p es 3.209706e-08,lo que sugiere no normalidad.

  • Para N = 20, el valor p es 1.187326e-06, lo que sugiere no normalidad.

  • Para N = 30, el valor p es 3.786168e-04, lo que sugiere no normalidad.

  • Para N = 50, el valor p es 7.662994e-04, lo que sugiere no normalidad.

  • Para N = 60, el valor p es 9.642517e-03, lo que sugiere no normalidad.

  • Para N = 100, el valor p es 1.209658e-02, lo que sugiere no normalidad.

  • Para N = 200, el valor p es 1.748990e-01, que es mayor que 0.05,lo que sugiere que los datos son consistentes con una distribución normal.

  • Para N = 500, el valor p es 1.898582e-01, mucho mayor que 0.05,lo que sugiere que los datos son consistentes con una distribución normal.

En resumen, para tamaños de muestra N < 100, los datos parecen no seguir una distribución normal, Para tamaños de muestra N > 200, donde el valor p es mucho mayor que 0.05, sugiere que los datos son consistentes con una distribución normal. Esto se ve reflejado igualmente en los qq chart, donde cada punto representa un valor específico de la muestra, si los puntos se distribuyen alrededor de la línea de referencia sin un patrón claro, es una indicación de que los datos siguen una distribución normal (caso n=200 y n=500).

El coeficiente de asimetría es una medida que nos indica la simetría o asimetría de una distribución de datos. Un valor de coeficiente de asimetría igual a cero sugiere una distribución perfectamente simétrica alrededor de su media, mientras que valores positivos indican asimetría hacia la derecha (la cola derecha es más larga), y valores negativos indican asimetría hacia la izquierda (la cola izquierda es más larga). En las simulaciones anteriores se observa:

  • Para N = 5 (-0.04335694) este valor cercano a cero sugiere que la distribución de datos tiende a ser simétrica o casi simétrica alrededor de su media. Esto significa que no hay una asimetría pronunciada hacia la izquierda o la derecha.

  • Para N = 10 (-0.11694592) Indica una asimetría hacia la izquierda, lo que significa que la cola izquierda de la distribución es un poco más larga que la cola derecha.

  • Para N = 15 (-0.11448497) Indica una asimetría hacia la izquierda, lo que significa que la cola izquierda de la distribución es un poco más larga que la cola derecha.

  • Para N = 20 (0.17962101) Indica una asimetría hacia la derecha, lo que significa que la cola derecha de la distribución es un poco más larga que la cola izquierda.

  • Para N = 30 (-0.09577458) Indica una ligera asimetría hacia la izquierda, lo que significa que la cola izquierda de la distribución es un poco más larga que la cola derecha.

  • Para N = 50 (-0.03931141) este valor cercano a cero sugiere que la distribución de datos tiende a ser simétrica o casi simétrica alrededor de su media. Esto significa que no hay una asimetría pronunciada hacia la izquierda o la derecha.

  • Para N = 60 (0.11870445) Indica una ligera asimetría hacia la derecha, lo que significa que la cola derecha de la distribución es un poco más larga que la cola izquierda.

  • Para N = 100 (0.04742793) este valor cercano a cero sugiere que la distribución de datos tiende a ser simétrica o casi simétrica alrededor de su media. Esto significa que no hay una asimetría pronunciada hacia la izquierda o la derecha.

  • Para N = 200 (-0.04788430) este valor cercano a cero sugiere que la distribución de datos tiende a ser simétrica o casi simétrica alrededor de su media. Esto significa que no hay una asimetría pronunciada hacia la izquierda o la derecha.

  • Para N = 500 (-0.02317438) este valor cercano a cero sugiere que la distribución de datos tiende a ser simétrica o casi simétrica alrededor de su media. Esto significa que no hay una asimetría pronunciada hacia la izquierda o la derecha.

En general, los valores de asimetría tienden a ser bajos, lo que sugiere que las distribuciones tienden a ser simétricas o tener una asimetría leve en su mayoría

El coeficiente de variación se utiliza principalmente para comparar la variabilidad entre diferentes conjuntos de datos o muestras; cuando este es bajo indica que los datos tienen poca variabilidad en relación con su media y son relativamente consistentes. En las simulaciones anteriores se observa:

  • Para N = 5 (44.79%): Este valor sugiere que la variabilidad de los datos en la muestra es alta en relación con la media, lo que indica que los datos tienen una dispersión relativamente grande en comparación con la media. Se observa falta de valores en algunos intervalos, que afectan este valor.

  • Para N = 10 (31.44%): Este valor sugiere que la variabilidad de los datos en la muestra es alta en relación con la media, lo que indica que los datos tienen una dispersión relativamente grande en comparación con la media.

  • Para N = 15 (24.50%): Este valor sugiere que la variabilidad de los datos en la muestra es alta pero un poco menor que en los casos anteriores, lo que indica una variabilidad relativamente grande en la muestra.

  • Para N = 20 (22.80%): Este valor sugiere que la variabilidad de los datos en la muestra es alta pero un poco menor que en los casos anteriores, lo que indica una variabilidad relativamente grande en la muestra.

  • Para N = 30 (19.16%): Este valor sugiere que la variabilidad de los datos en la muestra es significativa, lo que indica una variabilidad significativa.

  • Para N = 50 (13.68%): Este valor sugiere que la variabilidad de los datos en la muestra es significativa, lo que indica una variabilidad significativa.

  • Para N = 60 (12.50%): Este valor sugiere que la variabilidad de los datos en la muestra es moderada, lo que indica una variabilidad moderada.

  • Para N = 100 (9.00%): Este valor sugiere que la variabilidad de los datos en la muestra es moderada, lo que indica una variabilidad moderada.

  • Para N = 200 (6.23%): Este valor sugiere que la variabilidad de los datos en la muestra es baja,lo que sugiere una variabilidad muy baja en la muestra en relación con la media.

  • Para N = 500 (3.12%): Este valor sugiere que la variabilidad de los datos en la muestra es baja,lo que sugiere una variabilidad muy baja en la muestra en relación con la media.

PREGUNTA 5

Caso 1: Lotes con 10% de plantas enfermas

set.seed(184) 
enfermos<-rep("enfermo",100)
sanos<-rep("sano",900)
poblacion <-c(enfermos,sanos)
porenfermos<-0.1
set.seed(418)

n <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)
resultadossimulacion <- list()
histograma <- list()
tablahistograma <- list()
coefasimetria <- numeric(length(n))
coefvariacion <- numeric(length(n))
errormuestral <- numeric(length(n))
indshapiro <- list()

par(mfrow = c(1, 2))

for (i in 1:length(n)) {
  resultadosestimador <- numeric(500)
  
  for (j in 1:500) {
    muestra <- fmuestra(poblacion, n[i])
    estimador <- festimador(muestra)
    resultadosestimador[j] <- estimador
  }
  
  resultadossimulacion[[as.character(n[i])]] <- resultadosestimador
  
  histograma[[as.character(n[i])]] <- hist(resultadosestimador, 
       main = paste("Histograma para n =", n[i]),
       ylab = "Frecuencia",
       xlab = "Proporción plantas enfermas")
  
  qqnorm(resultadosestimador)
  qqline(resultadosestimador)

 
  coefasimetria[i] <- skewness(resultadosestimador)
  coefvariacion[i] <- (sd(resultadosestimador) / mean(resultadosestimador)) * 100
  errormuestral[i] <- abs(mean(resultadosestimador) - porenfermos)
  indshapiro[[as.character(n[i])]] <- shapiro.test(resultadosestimador)
  
}

par(mfrow = c(1, 1))

media <- sapply(resultadossimulacion, mean)
error_muestral <- sapply(resultadossimulacion, function(x) abs(mean(x) - porenfermos))*100
coef_asimetria <- sapply(resultadossimulacion, skewness)
coef_variacion <- sapply(resultadossimulacion, function(x) (sd(x) / mean(x)) * 100)
p_value <- sapply(indshapiro, function(x) x$p.value)

tabla1 <- data.frame( Media = media, Error_Muestral = error_muestral, Coeficiente_Asimetria = coef_asimetria, Coeficiente_Variacion = coef_variacion, P_Value = p_value)

colnames(tabla1) <- c( "Media", "Error Muestral", "Coeficiente Asimetria", "Coeficiente Variacion", "P Value")
print(tabla1)
##          Media Error Muestral Coeficiente Asimetria Coeficiente Variacion
## 5   0.09400000     0.60000000             1.1532845            139.513466
## 10  0.09860000     0.14000000             0.8388226             92.924242
## 15  0.09480000     0.52000000             0.7275020             82.090174
## 20  0.10190000     0.19000000             0.4532165             63.597432
## 30  0.10206667     0.20666667             0.4340812             53.936908
## 50  0.09988000     0.01200000             0.4146428             42.187743
## 60  0.09956667     0.04333333             0.2821253             37.860048
## 100 0.09892000     0.10800000             0.2259348             28.914192
## 200 0.10113000     0.11300000             0.1663275             19.025941
## 500 0.10030000     0.03000000            -0.2210852              9.643769
##          P Value
## 5   3.722409e-29
## 10  3.349872e-22
## 15  1.373665e-18
## 20  1.075670e-14
## 30  1.090141e-11
## 50  7.650133e-09
## 60  1.274263e-07
## 100 7.152874e-05
## 200 5.261639e-03
## 500 6.140255e-03

Caso 2:Lotes con 90% de plantas enfermas

set.seed(184) 
enfermos<-rep("enfermo",900)
sanos<-rep("sano",100)
poblacion <-c(enfermos,sanos)
porenfermos<-0.9

set.seed(418)
n <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)
resultadossimulacion <- list()
histograma <- list()
tablahistograma <- list()
coefasimetria <- numeric(length(n))
coefvariacion <- numeric(length(n))
errormuestral <- numeric(length(n))
indshapiro <- list()

par(mfrow = c(1, 2))

for (i in 1:length(n)) {
  resultadosestimador <- numeric(500)
  
  for (j in 1:500) {
    muestra <- fmuestra(poblacion, n[i])
    estimador <- festimador(muestra)
    resultadosestimador[j] <- estimador
  }
  
  resultadossimulacion[[as.character(n[i])]] <- resultadosestimador
  
  histograma[[as.character(n[i])]] <- hist(resultadosestimador, 
       main = paste("Histograma para n =", n[i]),
       ylab = "Frecuencia",
       xlab = "Proporción plantas enfermas")
  
  qqnorm(resultadosestimador)
  qqline(resultadosestimador)

 
  coefasimetria[i] <- skewness(resultadosestimador)
  coefvariacion[i] <- (sd(resultadosestimador) / mean(resultadosestimador)) * 100
  errormuestral[i] <- abs(mean(resultadosestimador) - porenfermos)
  indshapiro[[as.character(n[i])]] <- shapiro.test(resultadosestimador)
  
}

par(mfrow = c(1, 1))

media <- sapply(resultadossimulacion, mean)
error_muestral <- sapply(resultadossimulacion, function(x) abs(mean(x) - porenfermos))*100
coef_asimetria <- sapply(resultadossimulacion, skewness)
coef_variacion <- sapply(resultadossimulacion, function(x) (sd(x) / mean(x)) * 100)
p_value <- sapply(indshapiro, function(x) x$p.value)

tabla1 <- data.frame( Media = media, Error_Muestral = error_muestral, Coeficiente_Asimetria = coef_asimetria, Coeficiente_Variacion = coef_variacion, P_Value = p_value)

colnames(tabla1) <- c( "Media", "Error Muestral", "Coeficiente Asimetria", "Coeficiente Variacion", "P Value")
print(tabla1)
##         Media Error Muestral Coeficiente Asimetria Coeficiente Variacion
## 5   0.8920000      0.8000000           -1.00984289             15.029090
## 10  0.9012000      0.1200000           -0.95601130             10.347546
## 15  0.8965333      0.3466667           -0.69661811              8.639896
## 20  0.8996000      0.0400000           -0.76477236              7.660677
## 30  0.8996000      0.0400000           -0.37020690              5.644426
## 50  0.8984400      0.1560000           -0.19634509              4.622826
## 60  0.8980667      0.1933333           -0.22282378              4.141683
## 100 0.8983800      0.1620000           -0.09720675              3.128537
## 200 0.8986500      0.1350000           -0.04409803              2.011274
## 500 0.9001680      0.0168000            0.16936318              1.074945
##          P Value
## 5   1.023925e-27
## 10  9.751294e-23
## 15  9.631173e-18
## 20  4.449807e-16
## 30  1.105470e-11
## 50  1.862592e-07
## 60  4.068206e-07
## 100 1.014086e-04
## 200 2.872363e-03
## 500 6.775695e-03

Analisis de resultados

  • En muestra pequeñas, existe una mayor probabilidad de que la muestra no sea representativa de la población en términos de la distribución de los datos. Esto puede dar como resultado muestras que exhiban una variabilidad considerable y que no capturen con precisión la verdadera distribución de la población. En tales casos, los resultados pueden no ser confiables y pueden llevar a conclusiones incorrectas.

  • A medida que el tamaño de la muestra aumenta, generalmente el error muestral tiende a disminuir, esto debido a que una muestra más grande proporciona una estimación más precisa de la población, lo que resulta en un error muestral más pequeño.

  • A medida que el tamaño de la muestra aumenta, el coeficiente de variación generalmente tiende a disminuir. Esto sugiere que, a medida que se recopilan más datos en una muestra más grande, la variabilidad relativa con respecto a la media tiende a reducirse. Lo que sugiere que las estimaciones de la media son más precisas y confiables.

  • A medida que recopilamos más datos o aumentamos el tamaño de muestra, la forma de la distribución de probabilidad de esos datos se asemeja cada vez más a una curva normal o gaussiana, lo que implica que con muestras más grandes es más probable que los métodos estadísticos basados en la suposición de normalidad sean aplicables y proporcionen resultados más confiables. Sin embargo, aún es crucial realizar pruebas de normalidad y evaluaciones estadísticas adecuadas para confirmar la aproximación a una distribución normal, especialmente en situaciones críticas donde la suposición de normalidad es fundamental para tomar decisiones precisas.

  • Cuando el estimador es bajo (menor a 0.5) el coeficiente de asimetría tiende a mostrar una asimetría hacia la izquierda. Esto significa que la cola izquierda de la distribución es más larga, lo que indica una mayor concentración de datos en valores más bajos o por debajo de la media; en cambio cuando el estimador es alto (mayor o igual a 0.5) el coeficiente de asimetría tiende a mostrar una asimetría hacia la derecha, la cola derecha de la distribución es más larga, indicando una mayor concentración de datos en valores más altos o por encima de la media.