Teorema del Límite Central
El Teorema del Límite Central es uno de los más importantes en la inferencia estadística y habla sobre la convergencia de los estimadores como la proporción muestral a la distribución normal. Algunos autores afirman que esta aproximación es bastante buena a partir del umbral n>30. Para analizar dicho procedimiento, realizamos los siguientes pasos:
set.seed(123)
Lote<- 1000
enfermos<- floor(Lote*0.5)
sanos <- Lote - enfermos
Poblacion <- c(rep(1, enfermos), rep(0, sanos))
lote_total <- sample(Poblacion)
head(lote_total, 20)
## [1] 1 1 1 0 1 0 0 1 1 1 1 1 1 0 0 0 0 0 1 0
muestra_proproción <- function(Población, n){
muestra<- sample(Poblacion, size = n)
prop_muestral <-sum(muestra==1)/ n
return(prop_muestral)
}
tamaño_muestra<- 1000
proporcion<- muestra_proproción(lote_total, tamaño_muestra)
cat("Estimación de la proporción muestral (p^):", proporcion, "\n")
## Estimación de la proporción muestral (p^): 0.5
tamaño_muestra<- 400
proporcion<- muestra_proproción(lote_total, tamaño_muestra)
cat("Estimación de la proporción muestral (p^):", proporcion, "\n")
## Estimación de la proporción muestral (p^): 0.4675
tamaño_muestra<- 50
repeticiones <- 500
estimacion_proporcion <- numeric(repeticiones)
for (i in 1:repeticiones){
estimacion_proporcion [i] <-muestra_proproción(lote_total, tamaño_muestra)
}
library(e1071)
summary(estimacion_proporcion)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.3200 0.4600 0.5000 0.4967 0.5400 0.7400
coeficiente <- skewness(estimacion_proporcion)
coefvariacion <- (sd(estimacion_proporcion)/mean(estimacion_proporcion)*100)
coeficiente
## [1] 0.1302557
coefvariacion
## [1] 13.65191
hist(estimacion_proporcion, breaks = 20, main = "Histograma de estimación", xlab= "Estimación de p^", col = "green")
qqnorm(estimacion_proporcion, main = "n=500"); qqline(estimacion_proporcion, col = "red")
Posteriormente a lo expuesto, se repiten los puntos anteriores para diferentes tamaños de muestra n=5, 10, 15, 20, 30, 50, 60, 100, 200, 500.
set.seed(123)
normalidad <-data.frame(
tamaño_muestra = numeric(0),
estadisticoW = numeric(0),
valorP = numeric(0),
coefasimetria = numeric(0),
coef_variacion = numeric(0)
)
resultados_normalidad <- function(n){
estimacion_proporcion <- numeric(repeticiones)
for (i in 1:repeticiones){
estimacion_proporcion [i] <- muestra_proproción(lote_total, n)
}
resultado_shapiro <- shapiro.test(estimacion_proporcion)$p.value
library(e1071)
coefasimetrian <- skewness(estimacion_proporcion)
coef_variacionn <-(sd(estimacion_proporcion)/mean(estimacion_proporcion))*100
resultado_shapiro_ajustado <-sprintf("%.2f", resultado_shapiro)
normalidad <<- rbind(normalidad,
data.frame(tamaño_muestra = n,
estadisticoW = resultado_shapiro,
valorP = resultado_shapiro_ajustado,
coefasimetria = coefasimetrian,
coef_variacion = coef_variacionn))
qqnorm (estimacion_proporcion, main = paste ("QQ plot para n: ", n))
qqline (estimacion_proporcion, col = "red")
hist(estimacion_proporcion, main = paste("Histograma de estimación de proporción para muestra de n: ", n), xlab = "Proporción muestral", breaks = 20, col = "blue")
}
repeticiones <- 500
tamaño_muestra <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)
for (n in tamaño_muestra){
resultados_normalidad(n)
}
print(normalidad)
## tamaño_muestra estadisticoW valorP coefasimetria coef_variacion
## 1 5 7.153191e-15 0.00 0.149096965 44.837717
## 2 10 1.371225e-09 0.00 -0.126412224 32.747648
## 3 15 1.448343e-07 0.00 0.009928453 25.193566
## 4 20 5.089017e-07 0.00 0.065521047 21.107564
## 5 30 2.266545e-05 0.00 -0.138758168 18.355708
## 6 50 1.308318e-03 0.00 -0.053436177 13.915857
## 7 60 4.301397e-03 0.00 0.026118199 13.375145
## 8 100 6.884713e-03 0.01 0.209863114 9.588659
## 9 200 1.708562e-01 0.17 0.059974225 6.183555
## 10 500 3.679681e-02 0.04 -0.181216713 3.060842
A partir de los resultados anteriores, se encuentra que solo la simulación con 200 datos presenta la condición de normalidad. En todas las otras simulaciones se evidencia que no se presenta tal condición.
set.seed(123)
lote10 <- 1000
enfermos10 <- floor(lote10*0.1)
sanos10 <- lote10 - enfermos10
poblacion10 <- c(rep(1, enfermos10), rep(0, sanos10))
lote_total10 <- sample(poblacion10)
muestra_proproción10 <- function(poblacion10, n){
muestra10 <-sample(poblacion10, size = n)
proporcion_muestra10 <- sum(muestra10==1)/n
return(proporcion_muestra10)
}
tamaño_muestra10 <- 1000
proporcion10 <- muestra_proproción10(lote_total10, tamaño_muestra10)
cat("Estimación de la proporción muestra (p^): ", proporcion10, "\n")
## Estimación de la proporción muestra (p^): 0.1
tamaño_muestra10 <- 100
repeticiones10 <- 500
estimacion_proporción10 <- numeric(repeticiones10)
for (i in 1:repeticiones10){
estimacion_proporción10[i] <- muestra_proproción10(lote_total10, tamaño_muestra10)
}
library(e1071)
summary(estimacion_proporción10)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.02000 0.08000 0.10000 0.09952 0.12000 0.18000
coefasimetria10 <- skewness(estimacion_proporción10)
coefvariacion10 <- (sd(estimacion_proporción10)/mean(estimacion_proporción10))*100
coefasimetria10
## [1] 0.1413679
coefvariacion10
## [1] 27.46061
set.seed(123)
normalidad10 <-data.frame(
tamaño_muestra10 = numeric(0),
estadisticoW10 = numeric(0),
valorP10 = numeric(0),
coefasimetria10 = numeric(0),
coefvariacion10 = numeric(0)
)
resultados_normalidad10 <- function(n){
estimacion_proporción10 <- numeric(repeticiones10)
for (i in 1:repeticiones10){
estimacion_proporción10 [i] <- muestra_proproción10(lote_total10, n)
}
resultado_shapiro10 <- shapiro.test(estimacion_proporción10)$p.value
library(e1071)
coefasimetrian10 <- skewness(estimacion_proporción10)
coefvariacionn10 <-(sd(estimacion_proporción10)/mean(estimacion_proporción10))*100
resultado_shapiro_ajustado10 <-sprintf("%.2f", resultado_shapiro10)
normalidad10 <<- rbind(normalidad10,
data.frame(tamaño_muestra10 = n,
estadisticoW10 = resultado_shapiro10,
valorP10 = resultado_shapiro_ajustado10,
coefasimetria10 = coefasimetrian10,
coefvariacion10 = coefvariacionn10))
qqnorm (estimacion_proporción10, main = paste ("QQ plot para n: ", n))
qqline (estimacion_proporción10, col = "red")
hist(estimacion_proporción10, main = paste("Histograma de estimación de proporción para muestra de n: ", n), xlab = "Proporción muestral", breaks = 20, col = "purple")
}
repeticiones10 <- 500
tamaño_muestra10 <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)
for (n in tamaño_muestra10){
resultados_normalidad10(n)
}
Con la repetición del ejercicio pero tomando el 10% de las plantas enfermas, es posible establecer que ninguna de las estimaciones presenta una distribución normal, lo que significa que se rechaza la hipótesis nula y se acepta la hpótesis alterna, donde se afirma que los datos no presentan normalidad.
#Estimación para un Lote plantas enfermas con el 90%
set.seed(123)
lote90 <- 1000
enfermos90 <- floor(lote90*0.9)
sanos90 <- lote90 - enfermos90
poblacion90 <- c(rep(1, enfermos90), rep(0, sanos90))
lote_total90 <- sample(poblacion90)
muestra_proproción90 <- function(poblacion90, n){
muestra90 <-sample(poblacion90, size = n)
proporcion_muestra90 <- sum(muestra90==1)/n
return(proporcion_muestra90)
}
tamaño_muestra90 <- 1000
proporcion90 <- muestra_proproción10(lote_total90, tamaño_muestra90)
cat("Estimación de la proporción muestra (p^): ", proporcion90, "\n")
## Estimación de la proporción muestra (p^): 0.9
tamaño_muestra90 <- 200
repeticiones90 <- 500
estimacion_proporción90 <- numeric(repeticiones90)
for (i in 1:repeticiones90){
estimacion_proporción90[i] <- muestra_proproción10(lote_total90, tamaño_muestra90)
}
library(e1071)
summary(estimacion_proporción90)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.845 0.885 0.900 0.900 0.910 0.955
coefasimetria90 <- skewness(estimacion_proporción90)
coefvariacion90 <- (sd(estimacion_proporción90)/mean(estimacion_proporción90))*100
coefasimetria90
## [1] -0.1324362
coefvariacion90
## [1] 2.026481
set.seed(123)
normalidad90 <-data.frame(
tamaño_muestra90 = numeric(0),
estadisticoW90 = numeric(0),
valorP90 = numeric(0),
coefasimetria90 = numeric(0),
coefvariacion90 = numeric(0)
)
resultados_normalidad90 <- function(n){
estimacion_proporción90 <- numeric(repeticiones90)
for (i in 1:repeticiones90){
estimacion_proporción90 [i] <- muestra_proproción90(lote_total90, n)
}
resultado_shapiro90 <- shapiro.test(estimacion_proporción90)$p.value
library(e1071)
coefasimetrian90 <- skewness(estimacion_proporción90)
coefvariacionn90 <-(sd(estimacion_proporción90)/mean(estimacion_proporción90))*100
resultado_shapiro_ajustado90 <-sprintf("%.2f", resultado_shapiro90)
normalidad90 <<- rbind(normalidad90,
data.frame(tamaño_muestra90 = n,
estadisticoW90 = resultado_shapiro90,
valorP90 = resultado_shapiro_ajustado90,
coefasimetria90 = coefasimetrian90,
coefvariacion90 = coefvariacionn90))
qqnorm (estimacion_proporción90, main = paste ("QQ plot para n: ", n))
qqline (estimacion_proporción90, col = "red")
hist(estimacion_proporción90, main = paste("Histograma de estimación de proporción para muestra de n: ", n), xlab = "Proporción muestral", breaks = 20, col = "yellow")
}
repeticiones90 <- 500
tamaño_muestra90 <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)
for (n in tamaño_muestra90){
resultados_normalidad90(n)
}
A partir de los resultados es posible establecer que ña estimación con un n igual a 500 datos presenta normalidad. De esta manera se procede a recgazar la hpótesis nula y se acepta la hipótesis alterna, donde se plantea que los datos no presentan normalidad. Respecto al coeficiente de asimetría se indica que las estimaciones con n igual a 100, 200 y 500 se encuentran cerca de 0 y son aproximadamente simetricas respecto a su media, de esta manera, se afirma que la última es la que presenta una mejor asimetría. Respecto al coeficiente de variacion, se observa que con el incremento de n, el porcentaje de variacion disminuye logrando como resultado una disminucion del nivel de variabilidad.
A partir del presente trabajo es posible evidenciar que el supuesto de normalidad en las estimaciones no se presento y en lo que concierne a la asimetria de los datos se pudo observar que el ejemplo mas simetrico fue el ejercicio con el 50% de plantas enfermas y 50% de plantas sanas, puesto que en el mismo no se presentan sesgos hacia la izquiera o hacia la derecha en la representación gráfica del histograma.