La siguiente figura sugiere como estimar el valor de π con una simulación. En la figura, un circuito con un área igual a π/4, está inscrito en un cuadrado cuya área es igual a 1. Se elige de forma aleatoria n puntos dentro del cuadrado. La probabilidad de que un punto esté dentro del círculo es igual a la fracción del área del cuadrado que abarca a este, la cual es π/4. Por tanto, se puede estimar el valor de π/4 al contar el número de puntos dentro del círculo, para obtener la estimación de π/4. De este último resultado se encontrar una aproximación para el valor de π.
## [1] "Mostrando los 10 primeros números de cada vector obtenido"
## [1] 0.26550866 0.37212390 0.57285336 0.90820779 0.20168193 0.89838968
## [7] 0.94467527 0.66079779 0.62911404 0.06178627
## [1] 0.1848823 0.7023740 0.5733263 0.1680519 0.9438393 0.9434750 0.1291590
## [8] 0.8334488 0.4680185 0.5499837
#Código usado para generar los valores:
set.seed(1)
x=runif(1000, min = 0, max = 1)
set.seed(2)
y=runif(1000, min = 0, max = 1)
## [1] "Mostrando los 10 primeros números del vector distancia"
## [1] 0.3927918 0.2393899 0.1033652 0.5261398 0.5347776 0.5961412 0.5790157
## [8] 0.3701946 0.1330160 0.4410552
#Código usado para generar los valores:
distancia <- function(x,y)sqrt(((x-0.5)^2)+((y-0.5)^2))
z= distancia(x,y)
## [1] "La proporción de puntos dentro del cículo es: 0.769"
## [1] "La estimación de π es: 3.076"
## [1] "El error de estimación de π es: 0.0208787900986598"
#Contamos cuantos puntos estan dentro del circulo, es decir menores a 0.5
puntos<-sum(z<=0.5)
#Calulamos la probabilidad a partir de los resultados obtenidos
p<-puntos/1000
print(paste("La proporción de puntos dentro del cículo es:",p))
#Si π/4=p, entonces π es igual a:
pi_valor <- p*4
print(paste("La estimación de π es:",pi_valor))
#El error de este metodo de estimación fue igual a:
error_estimacion = (pi - pi_valor)/pi
print(paste("El error de estimación de π es:",error_estimacion))
## [1] "La proporción de puntos dentro del cículo es: 0.7811"
## [1] "La estimación de π es: 3.1244"
## [1] "El error de estimación de π es: 0.00547259160736437"
#Crear función que abarque todo el proceso de cálculo de proporción
proporcion_puntos <- function(n){
set.seed(1)
x=runif(n, min = 0, max = 1)
set.seed(2)
y=runif(n, min = 0, max = 1)
z= distancia(x,y)
return(sum(z<=0.5)/n)}
#Calculando la estimación para n=10,000
p<-proporcion_puntos(10000)
print(paste("La proporción de puntos dentro del cículo es:",p))
pi_valor <- p*4
print(paste("La estimación de π es:",pi_valor))
error_estimacion = (pi - pi_valor)/pi
print(paste("El error de estimación de π es:",error_estimacion))
## [1] "La proporción de puntos dentro del cículo es: 0.78323"
## [1] "La estimación de π es: 3.13292"
## [1] "El error de estimación de π es: 0.00276059137707851"
#Calculando la estimación para n=100,000
p<-proporcion_puntos(100000)
print(paste("La proporción de puntos dentro del cículo es:",p))
pi_valor <- p*4
print(paste("La estimación de π es:",pi_valor))
error_estimacion = (pi - pi_valor)/pi
print(paste("El error de estimación de π es:",error_estimacion))
La simulación ayuda a entender y validar las propiedades de los estimadores estadísticos como son insesgadez, eficiencia y la consistencia principalmente. El siguiente problema permite evidenciar las principales características de un grupo de estimadores propuestos para la estimación de un parámetro asociado a un modelo de probabilidad.
Sean X1, X2, X3 y X4, una muestra aleatoria de tamaño cuya población la conforma una distribución exponencial con parámetro desconocido. Determine las características de cada uno de los siguientes estimadores propuestos:
## [1] "Mostrando los 10 primeros números de cada vector obtenido"
## [1] 0.37759092 0.59082139 0.07285336 0.06989763 0.21803431 1.44748427
## [7] 0.61478103 0.26984142 0.47828375 0.07352300
## [1] 0.93267622 0.20237404 0.07332633 0.86535486 0.04476309 0.33344882
## [7] 0.53718343 0.75581465 0.65713795 0.07826514
## [1] 0.865313286 0.307516399 0.616458293 0.502042225 0.102100675 0.104394054
## [7] 1.141821671 0.005023914 0.034035353 0.057249436
## [1] 0.08580031 2.15197247 0.43405281 0.40132351 0.31357421 0.36742913
## [7] 0.22440589 0.02534994 0.25467503 0.41857483
#Generando vectores de 20 variables para cada coordenada
set.seed(1)
x1=rexp(20,2)
set.seed(2)
x2=rexp(20,2)
set.seed(3)
x3=rexp(20,2)
set.seed(4)
x4=rexp(20,2)
print("Mostrando los 10 primeros números de cada vector obtenido")
show(x1[1:10])
show(x2[1:10])
show(x3[1:10])
show(x4[1:10])
| θ1 | θ2 | θ3 | θ4 | |
|---|---|---|---|---|
| Promedio | 0.4817846 | 0.9590842 | 0.5023997 | 0.5585915 |
| Desviación | 0.2759010 | 0.5337224 | 0.2695575 | 0.3088400 |
#Creando funciones para los parámetros:
parametro1<- function(x1,x2,x3,x4){((x1+x2)/6)+((x3+x4)/3)}
parametro2<- function(x1,x2,x3,x4){(x1+2*(x2)+3*(x3)+4*(x4))/5}
parametro3<- function(x1,x2,x3,x4){(x1+x2+x3+x4)/4}
parametro4<- function(x1,x2,x3,x4){(pmin(x1,x2,x3,x4)+pmax(x1,x2,x3,x4))/2}
#Calculando parámetros:
θ1<-parametro1(x1,x2,x3,x4)
θ2<-parametro2(x1,x2,x3,x4)
θ3<-parametro3(x1,x2,x3,x4)
θ4<-parametro4(x1,x2,x3,x4)
#Mostrando el comportamiento de los cuatro parámetros
boxplot(θ1,θ2,θ3,θ4, names = c("θ1","θ2","θ3","θ4"), main="Gráfico 1: Comparación entre los parámetros para n=20")
abline(h=0.5)
#Creando tabla para mostrar las características de los parámetros
datos20<-t(data.frame("Promedio"=c(mean(θ1),mean(θ2),mean(θ3),mean(θ4)),"Desviación"=c(sd(θ1),sd(θ2),sd(θ3),sd(θ4))))
colnames(datos20) <- c("θ1","θ2","θ3","θ4")
library(kableExtra)
kbl(datos20, caption = "Tabla 1. Comparación entre los parámetros para n=20")%>%
kable_classic(full_width = F)
#Almacenando los parámetros para n=20
θ_n20<-data.frame(θ1,θ2,θ3,θ4)
#Crear función que abarque todo el proceso de cálculo de proporción
Calc_parametros <- function(n){
set.seed(1)
x1=rexp(n,2)
set.seed(2)
x2=rexp(n,2)
set.seed(3)
x3=rexp(n,2)
set.seed(4)
x4=rexp(n,2)
parametro1<- function(x1,x2,x3,x4){((x1+x2)/6)+((x3+x4)/3)}
parametro2<- function(x1,x2,x3,x4){(x1+2*(x2)+3*(x3)+4*(x4))/5}
parametro3<- function(x1,x2,x3,x4){(x1+x2+x3+x4)/4}
parametro4<- function(x1,x2,x3,x4){(pmin(x1,x2,x3,x4)+pmax(x1,x2,x3,x4))/2}
θ1<-parametro1(x1,x2,x3,x4)
θ2<-parametro2(x1,x2,x3,x4)
θ3<-parametro3(x1,x2,x3,x4)
θ4<-parametro4(x1,x2,x3,x4)
return(θ_n<-data.frame(θ1,θ2,θ3,θ4))}
#Calculando la estimación para n=50, 100 y 1000
θ_n50<-Calc_parametros(50)
θ_n100<-Calc_parametros(100)
θ_n1000<-Calc_parametros(1000)
| θ1 | θ2 | θ3 | θ4 | |
|---|---|---|---|---|
| Promedio | 0.4817846 | 0.9590842 | 0.5023997 | 0.5585915 |
| Desviación | 0.2759010 | 0.5337224 | 0.2695575 | 0.3088400 |
| θ1 | θ2 | θ3 | θ4 | |
|---|---|---|---|---|
| Promedio | 0.5059073 | 1.0133409 | 0.5106041 | 0.5908491 |
| Desviación | 0.2843369 | 0.5917188 | 0.2675514 | 0.3374944 |
| θ1 | θ2 | θ3 | θ4 | |
|---|---|---|---|---|
| Promedio | 0.5014690 | 0.9959711 | 0.5034396 | 0.5803656 |
| Desviación | 0.2504838 | 0.5177877 | 0.2418094 | 0.2964896 |
| θ1 | θ2 | θ3 | θ4 | |
|---|---|---|---|---|
| Promedio | 0.5078035 | 1.0172257 | 0.5100604 | 0.5913347 |
| Desviación | 0.2688620 | 0.5574844 | 0.2566013 | 0.3151266 |
#Mostrando el comportamiento de los cuatro parámetros para n=20, 50, 100 y 1000
par(mfrow = c(1, 2))
boxplot(θ_n20, main="Gráfico 2: Comparación entre los parámetros para n=20", cex.main=0.65)
abline(h=0.5)
boxplot(θ_n50, main="Gráfico 3: Comparación entre los parámetros para n=50", cex.main=0.65)
abline(h=0.5)
par(mfrow = c(1, 2))
boxplot(θ_n100, main="Gráfico 4: Comparación entre los parámetros para n=100", cex.main=0.65)
abline(h=0.5)
boxplot(θ_n1000, main="Gráfico 5: Comparación entre los parámetros para n=1000", cex.main=0.65)
abline(h=0.5)
#Creando tabla para mostrar las características de los parámetros
datos50<-t(data.frame("Promedio"=c(mean(θ_n50$θ1),mean(θ_n50$θ2),mean(θ_n50$θ3),mean(θ_n50$θ4)),"Desviación"=c(sd(θ_n50$θ1),sd(θ_n50$θ2),sd(θ_n50$θ3),sd(θ_n50$θ4))))
colnames(datos50) <- c("θ1","θ2","θ3","θ4")
datos100<-t(data.frame("Promedio"=c(mean(θ_n100$θ1),mean(θ_n100$θ2),mean(θ_n100$θ3),mean(θ_n100$θ4)),"Desviación"=c(sd(θ_n100$θ1),sd(θ_n100$θ2),sd(θ_n100$θ3),sd(θ_n100$θ4))))
colnames(datos100) <- c("θ1","θ2","θ3","θ4")
datos1000<-t(data.frame("Promedio"=c(mean(θ_n1000$θ1),mean(θ_n1000$θ2),mean(θ_n1000$θ3),mean(θ_n1000$θ4)),"Desviación"=c(sd(θ_n1000$θ1),sd(θ_n1000$θ2),sd(θ_n1000$θ3),sd(θ_n1000$θ4))))
colnames(datos1000) <- c("θ1","θ2","θ3","θ4")
#Renderizando Tablas
kbl(datos20, caption = "<center><b><big>Tabla 2. Comparación entre los parámetros para n=20</big></b></center>")%>%
kable_classic(full_width = FALSE, position = "float_left")
kbl(datos50, caption = "<center><b><big>Tabla 3. Comparación entre los parámetros para n=50</big></b></center>")%>%
kable_classic(full_width = FALSE, position = "center")
kbl(datos100, caption = "<center><b><big>Tabla 4. Comparación entre los parámetros para n=100</big></b></center>")%>%
kable_classic(full_width = FALSE, position = "float_left")
kbl(datos1000, caption = "<center><b><big>Tabla 5. Comparación entre los parámetros para n=1000</big></b></center>")%>%
kable_classic(full_width = FALSE, position = "center")
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
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%.
lote = c(rep("enferma",500),rep("sana",500))
parametro = mean(lote=="enferma")
parametro
## [1] 0.5
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
# Definir la población y el parámetro global
lote <- c(rep("enferma", 500), rep("sana", 500))
parametro <- mean(lote == "enferma")
# Definir la función para obtener una muestra aleatoria y calcular el estimador de la proporción muestral
obtener_muestra_y_estimar_proporcion <- function(n) {
# Obtener una muestra aleatoria de la población
muestra <- sample(lote, size = n)
# Calcular el estimador de la proporción muestral
proporcion_muestral <- mean(muestra == "enferma")
return(proporcion_muestral)
}
# Ejemplo de uso de la función
tamaño_muestra <- 300
estimacion_proporcion <- obtener_muestra_y_estimar_proporcion(tamaño_muestra)
estimacion_proporcion
## [1] 0.48
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
# Definir la función modificada
obtener_muestras_y_estimar_proporcion <- function(n, repeticiones) {
# Inicializar un vector para almacenar los resultados de las estimaciones
estimaciones <- numeric(repeticiones)
# Repetir el proceso de obtener una muestra y estimar la proporción 'repeticiones' veces
for (i in 1:repeticiones) {
# Obtener una muestra aleatoria de la población
muestra <- sample(lote, size = n, replace = FALSE)
# Calcular el estimador de la proporción muestral
proporcion_muestral <- mean(muestra == "enferma")
# Almacenar el resultado de la estimación
estimaciones[i] <- proporcion_muestral
}
return(estimaciones)
}
# Repetir el escenario 500 veces para n = 500
repeticiones <- 500
resultados <- obtener_muestras_y_estimar_proporcion(n = 500, repeticiones)
# Analizar los resultados
# Calculamos medidas de tendencia central y dispersión
media <- mean(resultados, na.rm = TRUE)
mediana <- median(resultados, na.rm = TRUE)
desviacion_estandar <- sd(resultados, na.rm = TRUE)
# Graficamos un histograma de los resultados
hist(resultados, breaks = 20, main = "Distribución de estimaciones de proporción muestral",
xlab = "Proporción muestral", ylab = "Frecuencia")
# Mostramos medidas de tendencia central y dispersión en el gráfico
abline(v = media, col = "red", lwd = 2)
abline(v = mediana, col = "blue", lwd = 2)
legend("topright", legend = c("Media", "Mediana"),
col = c("red", "blue"), lwd = 2)
# Imprimir resultados
cat("Media de las estimaciones:", media, "\n")
## Media de las estimaciones: 0.500976
cat("Mediana de las estimaciones:", mediana, "\n")
## Mediana de las estimaciones: 0.502
cat("Desviación estándar de las estimaciones:", desviacion_estandar, "\n")
## Desviación estándar de las estimaciones: 0.01671713
Análisis: El análisis de los resultados muestra que la media y mediana de los estimadores de proporción muestral se acercan al valor teórico de 0.50, lo que sugiere que el estimador es insesgado y eficiente. Además, se observa que tanto la media como la mediana se acercan al mismo valor, lo que garantiza poca variación en los resultados y de igual forma el valor de la desviación estándar se acerca a cero, lo cual indica una baja dispersión de los datos.
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
# Definir una secuencia de tamaños de muestra
tamanos_muestra <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)
# Función para realizar las pruebas de bondad de ajuste y gráficos QQ
analizar_tamanos_muestra <- function(tamanos_muestra, poblacion) {
for (n in tamanos_muestra) {
# Obtener las estimaciones de proporción muestral para el tamaño de muestra actual
estimaciones <- obtener_muestras_y_estimar_proporcion(n, repeticiones = 500)
# Prueba de Shapiro-Wilk
shapiro_result <- shapiro.test(estimaciones)
# Gráfico QQ
qqnorm(estimaciones, main = paste("QQ plot para n =", n))
qqline(estimaciones, col = 2)
# Imprimir resultados
cat("Tamaño de muestra:", n, "\n")
print(shapiro.test(estimaciones))
}
}
# Ejecutar la función para analizar los diferentes tamaños de muestra
analizar_tamanos_muestra(tamanos_muestra, lote)
## Tamaño de muestra: 5
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.91982, p-value = 1.186e-15
## Tamaño de muestra: 10
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.96614, p-value = 2.486e-09
## Tamaño de muestra: 15
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.97049, p-value = 1.721e-08
## Tamaño de muestra: 20
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.98158, p-value = 5.809e-06
## Tamaño de muestra: 30
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.98265, p-value = 1.117e-05
## Tamaño de muestra: 50
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.99014, p-value = 0.001969
## Tamaño de muestra: 60
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.98713, p-value = 0.0002133
## Tamaño de muestra: 100
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.99345, p-value = 0.02886
## Tamaño de muestra: 200
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.99653, p-value = 0.3556
## Tamaño de muestra: 500
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.99532, p-value = 0.138
Análisis: Al calcular los estimadores ^P cambiando el tamaño de la muestra se puede observar como ^P tiende a estar más cerca del valor del parámetro P = 0.5.Cuando nos apoyamos en las gráficas qq-norm, observamos que en la mayoría de las muestras de tamaños grandes, los puntos (observaciones) están muy cercanos a la línea nominal para una distribución normal, hecho que no ocurre con las muestras de tamaños pequeños.
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.
# Función para generar la población con un porcentaje de plantas enfermas dado
generar_poblacion <- function(tamano_lote, porcentaje_enfermas) {
cantidad_enfermas <- round(tamano_lote * porcentaje_enfermas)
poblacion <- c(rep(1, cantidad_enfermas), rep(0, tamano_lote - cantidad_enfermas))
return(poblacion)
}
# Función para obtener una muestra aleatoria y calcular el estimador de la proporción muestral
obtener_muestras_y_estimar_proporcion <- function(poblacion, n, repeticiones) {
estimaciones <- numeric(repeticiones)
for (i in 1:repeticiones) {
muestra <- sample(poblacion, size = n, replace = FALSE)
proporcion_muestral <- mean(muestra)
estimaciones[i] <- proporcion_muestral
}
return(estimaciones)
}
# Función para realizar la simulación completa
simulacion_completa <- function(porcentaje_enfermas) {
# Generar la población
poblacion <- generar_poblacion(tamano_lote = 1000, porcentaje_enfermas)
# Definir tamaños de muestra
tamanos_muestra <- c(5, 10, 15, 20, 30, 50, 60, 100, 200, 500)
# Repetir el proceso de obtener estimaciones de proporción muestral para diferentes tamaños de muestra
for (n in tamanos_muestra) {
# Obtener estimaciones de proporción muestral
estimaciones <- obtener_muestras_y_estimar_proporcion(poblacion, n, repeticiones = 500)
# Prueba Shapiro-Wilk
shapiro_result <- shapiro.test(estimaciones)
# Gráfico QQ
qqnorm(estimaciones, main = paste("QQ plot para n =", n))
qqline(estimaciones, col = 2)
# Imprimir resultados
cat("Porcentaje de plantas enfermas:", porcentaje_enfermas, "\n")
cat("Tamaño de muestra:", n, "\n")
print(shapiro.test(estimaciones))
##cat("Prueba Shapiro-Wilk p-valor:", shapiro_result$p.value, "\n\n")
}
}
# Realizar la simulación para lotes con 10% de plantas enfermas
simulacion_completa(porcentaje_enfermas = 0.1)
## Porcentaje de plantas enfermas: 0.1
## Tamaño de muestra: 5
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.72146, p-value < 2.2e-16
## Porcentaje de plantas enfermas: 0.1
## Tamaño de muestra: 10
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.8474, p-value < 2.2e-16
## Porcentaje de plantas enfermas: 0.1
## Tamaño de muestra: 15
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.88974, p-value < 2.2e-16
## Porcentaje de plantas enfermas: 0.1
## Tamaño de muestra: 20
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.92924, p-value = 1.272e-14
## Porcentaje de plantas enfermas: 0.1
## Tamaño de muestra: 30
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.95607, p-value = 4.774e-11
## Porcentaje de plantas enfermas: 0.1
## Tamaño de muestra: 50
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.97478, p-value = 1.374e-07
## Porcentaje de plantas enfermas: 0.1
## Tamaño de muestra: 60
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.97838, p-value = 9.237e-07
## Porcentaje de plantas enfermas: 0.1
## Tamaño de muestra: 100
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.98758, p-value = 0.0002931
## Porcentaje de plantas enfermas: 0.1
## Tamaño de muestra: 200
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.99248, p-value = 0.01289
## Porcentaje de plantas enfermas: 0.1
## Tamaño de muestra: 500
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.99049, p-value = 0.002591
# Realizar la simulación para lotes con 90% de plantas enfermas
simulacion_completa(porcentaje_enfermas = 0.9)
## Porcentaje de plantas enfermas: 0.9
## Tamaño de muestra: 5
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.71475, p-value < 2.2e-16
## Porcentaje de plantas enfermas: 0.9
## Tamaño de muestra: 10
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.85937, p-value < 2.2e-16
## Porcentaje de plantas enfermas: 0.9
## Tamaño de muestra: 15
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.89861, p-value < 2.2e-16
## Porcentaje de plantas enfermas: 0.9
## Tamaño de muestra: 20
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.92118, p-value = 1.65e-15
## Porcentaje de plantas enfermas: 0.9
## Tamaño de muestra: 30
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.95791, p-value = 9.393e-11
## Porcentaje de plantas enfermas: 0.9
## Tamaño de muestra: 50
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.97438, p-value = 1.126e-07
## Porcentaje de plantas enfermas: 0.9
## Tamaño de muestra: 60
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.97132, p-value = 2.532e-08
## Porcentaje de plantas enfermas: 0.9
## Tamaño de muestra: 100
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.98485, p-value = 4.523e-05
## Porcentaje de plantas enfermas: 0.9
## Tamaño de muestra: 200
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.99126, p-value = 0.004747
## Porcentaje de plantas enfermas: 0.9
## Tamaño de muestra: 500
##
## Shapiro-Wilk normality test
##
## data: estimaciones
## W = 0.99234, p-value = 0.0114
Análisis: Cuando se modificó la población para generar el Lote A y el Lote B con proporciones de 10% y 90% de individuos enfermos respectivamente, podemos observar que los estimadores ^P para ambos casos están muy cercanos al valor del parámetro P = 0.1 y P = 0.9 respectivamente.
En cuanto a la aplicación de la prueba de normalidad Shapiro-Wilk para muestras de tamaño n > 200, se observa tanto la aceptación como el rechazo de la hipótesis nula H0. Este hecho se respalda con el gráfico qq-plot de normalidad, donde las observaciones se sobreponen cada vez más con muestras de tamaño n > 200 en la línea compuesta por los valores nominales, acercándose más a una distribución gaussiana.
Estimacción boostrap
Cuando se extrae una muestra de una población que no es normal y se requiere estimar un intervalo de confianza se pueden utilizar los métodos de estimación bootstrap. Esta metodología supone que se puede reconstruir la población objeto de estudio mediante un muestreo con reemplazo de la muestra que se tiene. Existen varias versiones del método. Una presentación básica del método se describe a continuación:
El artículo de In-use Emissions from Heavy Duty Dissel Vehicles (J.Yanowitz, 2001) presenta las mediciones de eficiencia de combustible en millas/galón de una muestra de siete camiones. Los datos obtenidos son los siguientes: 7.69, 4.97, 4.56, 6.49, 4.34, 6.24 y 4.45. Se supone que es una muestra aleatoria de camiones y que se desea construir un intervalo de confianza del 95 % para la media de la eficiencia de combustible de esta población. No se tiene información de la distribución de los datos. El método bootstrap permite construir intervalos de confianza del 95 % - Para ilustrar el método suponga que coloca los valores de la muestra en una caja y extrae uno al azar. Este correspondería al primer valor de la muestra bootstrap X∗1 Después de anotado el valor se regresa X∗1 a la caja y se extrae el valor X∗2 regresandolo nuevamente. Este procedimiento se repite hasta completar una muestra de tamaño n, X∗1,X∗2,X∗2,X∗n conformando la muestra bootstrap.
Es necesario extraer un gran número de muestras (suponga k = 1000). Para cada una de las muestra bootstrap obtenidas se calcula la media X∗i¯,obteniéndose un valor para cada muestra. El intervalo de confianza queda conformado por los percentiles P2.5 y P97.5.Existen dos métodos para estimarlo:
Construya el intervalo de confianza por los dos métodos y compare los resultados obtenidos. Comente los resultados. Confiaría en estas estimaciones?
x=c(7.69, 4.97, 4.56, 6.49, 4.34, 6.24, 4.45) # datos de combustible m/gl de 7 camiones
boot=sample(x,7000,replace=TRUE) # se extraen n x m muestras
b=matrix(boot,nrow=1000,ncol=7, byrow = TRUE) # se construye matriz de n x m con k=1000
mx=apply(b,1,mean) # se calculan medias por fila
mean(mx) # se calculan media población
## [1] 5.505633
Cálculo con primer método
ic1=quantile(mx, probs=c(0.025, 0.975)) # Cálculo IC método 1
ic1
## 2.5% 97.5%
## 4.732821 6.424929
Cálculo con segundo método
ic2=c(2*mean(mx)-ic1[2], 2*mean(mx)-ic1[1]) # Cálculo IC método 2
ic2
## 97.5% 2.5%
## 4.586337 6.278444
Comente los resultados. Confiaría en estas estimaciones?
El primer método de cálculo de intervalo de confianza al 95%, representado por las líneas rojas, muestra un intervalo muy cercano al parámetro poblacional (media), con cuantiles bastante precisos. Por otro lado, el segundo método, ilustrado por las líneas verdes, presenta un intervalo ligeramente más amplio en el extremo inferior y más estrecho en el superior. Sin embargo, ambos métodos ofrecen estimaciones confiables, ya que se aproximan al valor real del parámetro poblacional sin diferencias significativas entre sí. Por lo tanto, si confiaría en estas estimaciones ya que ambos métodos son cercanos al valor real del parámetro y no difieren entre si de manera significativa.
# Crea el lienzo del gráfico
hist(mx, las=1, main=" ", ylab = " ", xlab = " ", col="lightblue")
# Agrega las líneas al gráfico
abline(v=ic1, col="red",lwd=2)
abline(v=ic2, col="green",lwd=2)