Simulación de Intervalos de Confianza para Poblaciones Normales
Resumen
¿Cómo simular procesos de estimación por intervalo?
La simulación de procesos de estimación por intervalo es una herramienta poderosa en estadística para diferenciar y comparar poblaciones. Supongamos que tenemos dos poblaciones distribuidas normalmente con medias diferentes. Al aplicarle un intervalo de confianza a cada una, podemos observar si estos intervalos se traslapan o no. Esta técnica permite determinar si las diferencias observadas en la muestra reflejan diferencias reales en la población.
¿Qué se necesita para configurar la simulación?
Antes de realizar la simulación, es necesario definir ciertos parámetros:
Tamaño muestral: Elegir el volumen de cada muestra. Por ejemplo, 35 observaciones.
Número de iteraciones: Cantidad de veces que se repetirá la simulación, como 100 iteraciones.
Medias poblacionales: Establecer la media para cada población, por ejemplo, 5 para la población A y 3 para la población B.
Desviación estándar: Un valor para ambas poblaciones, que podría ser 2 en este caso.
¿Cómo se lleva a cabo la simulación gráfica?
La simulación es un proceso iterativo que se representa gráficamente, donde cada paso agrega un rectángulo en la gráfica para visualizar los intervalos de confianza de cada muestra.
Creación del gráfico base: Iniciamos con un gráfico donde posicionamos las medias poblacionales de A y B.
Generación de muestras: Utilizamos la función rnorm para generar muestras con las medias y desviación estándar predefinidas.
Calcular los intervalos de confianza:
Para la población A, se emplea el test T de Student: t.test(), que proporciona el intervalo de confianza.
El intervalo se divide en el límite inferior y superior usando min y max.
Replicación para la población B: Repetimos el mismo procedimiento con la población B ajustando las medias correspondientes.
Dibujo de rectángulos: Cada rectángulo representa una simulación de la relación entre los intervalos de A y B:
Límites inferiores y superiores de A y B forman las coordenadas del rectángulo.
¿Cómo determinar la significancia de los intervalos?
Para evaluar si los intervalos realmente indican diferencias significativas:
Trazado de la línea de referencia: Se añade una línea abline igual a y = x para visualizar las intersecciones.
Ajustar el tamaño muestral: Observando cómo los intervalos se cruzan con la línea, podemos modificar el tamaño muestral. Un tamaño muestral mayor podría reducir los cruces indicando una mayor significancia estadística.
Al finalizar todo este proceso, se deduce que con tamaños muestrales adecuados y una correcta visualización gráfica, es más fácil identificar diferencias entre poblaciones basadas en sus intervalos de confianza. Este método es especialmente útil en análisis donde se requiere inferir sobre la estructura de una población basándose en muestras aleatorias.
Este enfoque no solo facilita la visualización de diferencias poblacionales, sino que también motiva a continuar explorando la estadística como una forma de descubrir y validar insights de datos.
# En el espacio de parámetros podemos ver los parámetros y los int --------# intervalos de confianza de la media -------------------------------------tamano_muestral <-35iteraciones <-100media_poblacional_A <-5media_poblacional_B <-3desv_est_poblacional <-3min_gr_A <- media_poblacional_A -10*desv_est_poblacional/sqrt(tamano_muestral)max_gr_A <- media_poblacional_A +10*desv_est_poblacional/sqrt(tamano_muestral)min_gr_B <- media_poblacional_B -10*desv_est_poblacional/sqrt(tamano_muestral)max_gr_B <- media_poblacional_B +10*desv_est_poblacional/sqrt(tamano_muestral)plot(media_poblacional_A, media_poblacional_B, xlim =c(min_gr_A, max_gr_A), ylim =c(min_gr_B, max_gr_B), col =4, pch =20)for(i inseq_len(iteraciones)){ muestra_A <-rnorm(tamano_muestral, media_poblacional_A, desv_est_poblacional) t_test_A <- t.test(muestra_A) intervalo_A <- t_test_A$conf.intLI_A<-min(intervalo_A)LS_A<-max(intervalo_A) muestra_B <-rnorm(tamano_muestral, media_poblacional_B, desv_est_poblacional) t_test_B <- t.test(muestra_B) intervalo_B <- t_test_B$conf.intLI_B<-min(intervalo_B)LS_B<-max(intervalo_B)rect(LI_A,LI_B,LS_A,LS_B)}abline(1,1, col =2)points(media_poblacional_A, media_poblacional_B, col =4, pch =20, cex =3)# Tidy approach -----------------------------------------------------------# Paquetes----------------------------------------------------------------library("dplyr")library("LaCroixColoR")library("purrr")library("magrittr")library("ggplot2")colores <-lacroix_palette("Pamplemousse")colores_platzi <-c("#78D92A","#002E4E","#058ECD","#ED2B05","#F4F7F4")tibble( muestra_A =replicate(iteraciones,rnorm(tamano_muestral, media_poblacional_A, desv_est_poblacional), simplify =FALSE), t_test_A =map(muestra_A, t.test), intervalo_A =map(t_test_A, extract2,"conf.int"),LI_A=map_dbl(intervalo_A, min),LS_A=map_dbl(intervalo_A, max), muestra_B =replicate(iteraciones,rnorm(tamano_muestral, media_poblacional_B, desv_est_poblacional), simplify =FALSE), t_test_B =map(muestra_B, t.test), intervalo_B =map(t_test_B, extract2,"conf.int"),LI_B=map_dbl(intervalo_B, min),LS_B=map_dbl(intervalo_B, max))-> simulaciones
simulaciones %>% ggplot +geom_rect(aes(xmin =LI_A, xmax =LS_A, ymin =LI_B, ymax =LS_B), alpha =0.2, fill = colores[6])+annotate("point", media_poblacional_A, media_poblacional_B, colour = colores[1], size =5)+geom_abline(intercept =0, slope =1, colour = colores[4], size =1)+xlim(-2,8)+ylim(-2,8)+theme_minimal()
el método abline(a,b) realiza una linea de regresión:
Y = a + Xb
En este caso se utiliza para graficar Y = X
netamente utilizaremos R o habra un desenbolbimiento en Rstudio?
Se usará R con RStudio. Más adelante verás cómo instalarlo en tu computadora si todavía no lo tienes. :)
En el curso se instala R y RStudio, R es el software estadístico y RStudio trabaja sobre R y es visualmente más amigable que R.
Esto es R
La función:
rect(x1, y1, x2,y2,....)
es muy útil para digujar rectángulos. La estructura de la función se muestra a continuación.
x1 : vector o escalar con la posición de x a izquierda
y1: vector o escalar con la posición de y abajo.
x2: ector o escalar con la posición de x a derecha.
y2 : vector o escalar con la posición de y arriba
# intervalos de confianza de la media
tamano_muestral <-35iteraciones <-100media_poblacional_A <-5media_poblacional_B <-3desv_est_poblacional <-2plot(media_poblacional_A, media_poblacional_B)for(i inseq_len(iteraciones)){ muestra_A <-rnorm(tamano_muestral, media_poblacional_A, desv_est_poblacional) t_test_A <- t.test(muestra_A) intervalo_A <- t_test_A$conf.intLI_A<-min(intervalo_A)LS_A<-max(intervalo_A) muestra_B <-rnorm(tamano_muestral, media_poblacional_B, desv_est_poblacional) t_test_B <- t.test(muestra_B) intervalo_B <- t_test_B$conf.intLI_B<-min(intervalo_B)LS_B<-max(intervalo_B)rect(LI_A,LI_B,LS_A,LS_B)}abline(0,1, col =2)points(media_poblacional_A, media_poblacional_B, cex =2, col =2, pch =20)
Adjunto mi codigo para ver como afecta el tamaño de la muestra
Nivel de Confianza: Probabilidad de que el intervalo generado contenga el parámetro verdadero en múltiples muestras (por ejemplo, 95% de las veces).
Longitud del Intervalo: A menor variabilidad o mayor tamaño de muestra, los intervalos suelen ser más estrechos.
Distribución Normal y t-Student: Usamos una u otra dependiendo de si conocemos la desviación estándar poblacional.
Aplicar la función:
t.test(muestra_X)
proporcionada muchos datos de ajuste de dicha muestra a una distribución t-student, por ello se usa: $conf.int, extraer el dato del intervalo de confianza.
conf.int
This function gives a demonstration of the concept of confidence intervals in mathematical statistics
++Arguments++
level: the confidence level (1- alpha) , e.g. 0.95
size: the sample size for drawing samples from N(0, 1)
cl: two different colors to annotate whether the confidence intervals cover the true mean (cl[1]: no; cl[2]: yes)