library(pacman)
::p_load(tidyverse, # para sintaxis
pacman# para gráficos
ggplot2, # para recodificar
car, # para analizar datos
psych, # para analizar datos
sjmisc, # para estimación de IC y ponderadores
srvyr, # para IC)
Publish)
options(scipen = 999) # para desactivar notacion cientifica
rm(list = ls()) # para limpar el entonrno de trabajo
Distribución Normal e Intervalos de Confianza
Sesión del martes, 27 de agosto de 2024
Objetivo de la práctica
El objetivo de esta guía práctica es introducirnos en la inferencia estadística, revisando los conceptos y aplicaciones de la curva normal y las probabilidades bajo esta con puntajes Z, además del cálculo de intervalos de confianza.
En detalle, aprenderemos y recordaremos:
- Los conceptos de promedio y desviación estándar
- Qué es la probabilidad y su aplicación para estadística
- Qué es la distribución normal
- Cómo calcular e interpretar intervalos de confianza
Librerías
Cargaremos algunas librerías que serán necesarias en las diferentes partes de esta guía práctica:
1. Promedio y desviación estándar
El promedio y la desviación estándar son conceptos fundamentales para continuar hacia la estadística inferencial. Repasemos estos conceptos mediante un ejercicio con datos simulados.
Primero, generaremos un vector de 100 valores aleatorios con \(\mu = 5\) y \(\sigma = 2\), y lo visualizaremos con la función print
.
set.seed(123) # Fijar la semilla para reproducibilidad
<- rnorm(100, mean = 5, sd = 2)
vector print(vector) # Ver el vector generado
[1] 3.8790487 4.5396450 8.1174166 5.1410168 5.2585755 8.4301300 5.9218324
[8] 2.4698775 3.6262943 4.1086761 7.4481636 5.7196277 5.8015429 5.2213654
[15] 3.8883177 8.5738263 5.9957010 1.0667657 6.4027118 4.0544172 2.8643526
[22] 4.5640502 2.9479911 3.5422175 3.7499215 1.6266134 6.6755741 5.3067462
[29] 2.7237261 7.5076298 5.8529284 4.4098570 6.7902513 6.7562670 6.6431622
[36] 6.3772805 6.1078353 4.8761766 4.3880747 4.2390580 3.6105860 4.5841654
[43] 2.4692073 9.3379119 7.4159240 2.7537828 4.1942303 4.0666893 6.5599302
[50] 4.8332619 5.5066370 4.9429065 4.9142591 7.7372046 4.5484580 8.0329412
[57] 1.9024944 6.1692275 5.2477085 5.4318831 5.7592790 3.9953531 4.3335852
[64] 2.9628492 2.8564175 5.6070573 5.8964196 5.1060085 6.8445349 9.1001694
[71] 4.0179377 0.3816622 7.0114770 3.5815985 3.6239828 7.0511427 4.4304540
[78] 2.5585646 5.3626070 4.7222173 5.0115284 5.7705608 4.2586799 6.2887531
[85] 4.5590269 5.6635639 7.1936780 5.8703630 4.3481368 7.2976152 6.9870077
[92] 6.0967939 5.4774635 3.7441878 7.7213049 3.7994808 9.3746660 8.0652213
[99] 4.5285993 2.9471582
¿Cómo se vería la distribución de este vector aleatorio? Primero realizaremos un gráfico de histograma con la función hist
y luego uno de cajas con la función boxplot
.
hist(vector,main="Histograma del Vector",xlab="Valor",ylab="Frecuencia",col="cyan4",border="black")
boxplot(vector,main="Diagrama de Caja del Vector aleatorio",ylab="Valor",col="cyan3")
Ahora, calculamos la media y la desviación estándar del vector:
<- mean(vector)
media <- sd(vector)
desv_estandar
cat("Media:", media, "\n")
Media: 5.180812
cat("Desviación Estándar:", desv_estandar, "\n")
Desviación Estándar: 1.825632
La media, que es una medida de tendencia central, nos presenta un valor que resume nuestros datos aproximándonos al “centro” de la distribución. Y la desviación estándar es una medida de dispersión que nos presenta un valor que resume nuestros datos en cuanto a qué tan “dispersos” se encuentran.
En el caso de nuestro vector, creado con datos aleatorios, la media \(\bar{x} = 5,18\) nos muestra que el promedio de los datos se encuentra en torno a 5,2.
Ahora, recordemos la fórmula de la desviación estándar:
\[ s = \sqrt{\frac{\sum_{i=1}^{n} (x_i-\bar{x})^2 }{N-1}} \]
Donde:
\(N\) es el tamaño del vector,
\(x_i\) son los valores individuales del vector,
\(\bar{x}\) es la media del vector.
La desviación estándar corresponde, entonces, a un promedio de lo que cada valor se aleja del promedio del vector. En el caso de nuestro vector, \(s = 1,82\) nos muestra que en promedio los datos se alejan 1,82 puntos del promedio.
La desviación estándar es un concepto clave para Inferencia Estadística.
Antes de seguir, recordemos que…
Llamamos inferencia estadística al ejercicio de extrapolar determinadas estimaciones (estadísticos) de una muestra a una población más grande (parámetros). En concreto, es el proceso de realizar conclusiones o predicciones sobre una población a partir de una muestra o subconjunto de esa población.
La probabilidad de error indica en qué medida nos estamos equivocando (o estamos dispuestos a estar equivocados) en tratar de extrapolar una estimación muestral a la población.
2. Probabilidad
Para pensar en la idea de probabilidad realicemos la tarea propuesta en la Clase de Inferencia 1. En esta tarea se buscaba generar los resultados posibles al lanzar dos dados. Primero se busca sumar los resultados entregados por ambos dados, y luego promediar los resultados:
# Generar todas las combinaciones posibles de dos dados
<- rep(1:6, each = 6)
dado1 <- rep(1:6, times = 6)
dado2
# Calcular la suma y el promedio para cada combinación
<- dado1 + dado2
suma <- suma / 2
promedio
# Crear un data frame con los resultados
<- data.frame(dado1, dado2, suma, promedio)
resultados
# Mostrar el data frame
print(resultados)
dado1 dado2 suma promedio
1 1 1 2 1.0
2 1 2 3 1.5
3 1 3 4 2.0
4 1 4 5 2.5
5 1 5 6 3.0
6 1 6 7 3.5
7 2 1 3 1.5
8 2 2 4 2.0
9 2 3 5 2.5
10 2 4 6 3.0
11 2 5 7 3.5
12 2 6 8 4.0
13 3 1 4 2.0
14 3 2 5 2.5
15 3 3 6 3.0
16 3 4 7 3.5
17 3 5 8 4.0
18 3 6 9 4.5
19 4 1 5 2.5
20 4 2 6 3.0
21 4 3 7 3.5
22 4 4 8 4.0
23 4 5 9 4.5
24 4 6 10 5.0
25 5 1 6 3.0
26 5 2 7 3.5
27 5 3 8 4.0
28 5 4 9 4.5
29 5 5 10 5.0
30 5 6 11 5.5
31 6 1 7 3.5
32 6 2 8 4.0
33 6 3 9 4.5
34 6 4 10 5.0
35 6 5 11 5.5
36 6 6 12 6.0
Esto se puede observar de manera gráfica de la siguiente forma:
# Gráfico de frecuencias para la suma
ggplot(resultados, aes(x = suma)) +
geom_bar(fill = "cyan4", color = "black") +
labs(title = "Gráfico de Frecuencias de la Suma", x = "Suma", y = "Frecuencia")
# Gráfico de frecuencias para los promedios
ggplot(resultados, aes(x = promedio)) +
geom_bar(fill = "cyan3", color = "black") +
labs(title = "Gráfico de Frecuencias de los Promedios", x = "Promedio", y = "Frecuencia")
¿Y cuál es la probabilidad de ocurrencia de cada resultaado?
# Calcular las frecuencias de cada promedio
<- table(resultados$promedio)
tabla_frecuencias
# Calcular la probabilidad de ocurrencia de cada promedio
<- tabla_frecuencias / sum(tabla_frecuencias)
probabilidades
# Crear la tabla final con valores de promedios y sus probabilidades
<- data.frame(Promedio = as.numeric(names(probabilidades)),
tabla_final Probabilidad = as.numeric(probabilidades))
# Mostrar la tabla final
print(tabla_final)
Promedio Probabilidad
1 1.0 0.02777778
2 1.5 0.05555556
3 2.0 0.08333333
4 2.5 0.11111111
5 3.0 0.13888889
6 3.5 0.16666667
7 4.0 0.13888889
8 4.5 0.11111111
9 5.0 0.08333333
10 5.5 0.05555556
11 6.0 0.02777778
La ocurrencia de algunos eventos (como la suma o promedio de dos dados) tienen una probabilidad determinada, lo que genera una distribución teórica de probabilidad.
Si repito un evento aleatorio (ej: sacar muestras repetidas de dos dados y promediarlos) obtengo la distribución empírica de probabilidad (de frecuencias de los eventos).
De acuerdo con la ley de los grandes números, el promedio empírico convergerá al teórico a medida que aumenta el número de repeticiones. Eso podemos observarlo:
3. Distribución Normal
3.1. Curvas de distribución
Por distribución nos referimos al conjunto de todos los valores posibles de una variable y las frecuencias (o probabilidades) con las que se producen.
Existen distribuciones empíricas y distribuciones teóricas, en donde:
- las primeras reflejan la distribución de los valores que asume la variable en un grupo concreto a partir de una observación.
- las segundas son una función matématica que expresan la distribución de un conjunto de números mediante su probabilidad de ocurencia.
Estas últimas son también llamadas curvas de distribución.
3.2. Distribución Normal
Es una distribución teórica que corresponde a una curva que representa la distribución de los casos de la población en torno al promedio y con una varianza conocida.
- Simétricas y con un solo punto de elevación
- La pendiente es más fuerte cerca del centro, y se suaviza hacia los extremos
- Coinciden al centro el promedio, la mediana y la moda
- La desviación estandar expresa su dispersión.
- Establece áreas o proporciones bajo la curva en base a desviaciones estándar del promedio.
3.3. Distribución Normal Estándar
La distribución normal estándar es una distribución normal con una media de 0 y una desviación estándar de 1.
3.4. Puntaje Z y estandarización de variables
Al estandarizar las variables (como en la Curva Normal Estándar) lo que hacemos es expresar el valor de una distribución en términos de desviaciones estándar basados en la distribución normal. Esto nos permite comparar distribuciones distintas.
Al valor estandarizado lo llamamos puntaje Z, y corresponde a la cantidad de desviaciones estándar que nos alejamos del promedio (para cada variable con la que trabajemos).
3.5. Cálculo de probabilidades con puntaje z
Los valores estandarizados o puntajes Z además nos permiten conocer probabilidades.
Con R es posible generar un conjunto de datos simulados con una distribución normal.
<- seq(-4,4,length=1000)
x_values <- dnorm(x_values)
y_values plot(x_values,y_values,type="l",xlab="Valor Z",ylab="Probabilidad",main="Distribución Normal")
Podemos preguntar qué parte de la curva cae por debajo de un valor particular. Por ejemplo, preguntaremos sobre el valor 0 antes de ejecutar el código. Piense ¿cuál debería ser la respuesta?
pnorm(q = 0)
[1] 0.5
Por tanto, la probabilidad (en una curva normal estándar) de obtener un valor igual o menor a 0 es de 0.5, es decir, del 50%, pero ¿por qué?
Porque como la distribución normal estándar es simétrica al rededor de cero, la probabilidad de que sea menor o igual a cero es 0.5, es decir, el 50% de la distribución está por debajo de cero y el otro 50% está por encima de cero.
Eso lo podemos ver en el gráfico:
plot(x_values,y_values,type="l",xlab="Valor Z",ylab="Probabilidad",main="Distribución Normal")
abline(v=0)
Ahora probemos los valores Z de +1,96 y -1,96.
Sabemos que estos valores aproximados marcan el 2,5% superior e inferior de la distribución normal estándar. Esto corresponde a un alfa típico \(\alpha = 0,05\) para una prueba de hipótesis de dos colas.
pnorm(q = 1.96, lower.tail=TRUE)
[1] 0.9750021
La respuesta nos dice lo que ya sabemos: el 97,5% de la distribución normal ocurre por debajo del valor z de 1,96.
Podemos agregar una línea al gráfico para mostrar dónde se usaría abline
.
El 97,5% de la distribución queda por debajo de esta línea.
plot(x_values, y_values, type="l", lty=1, xlab="Z value", ylab="Probability", main="Normal Distribution") +
abline(v = 1.96)
integer(0)
4. Intervalos de confianza
Un intervalo de confianza es un rango dentro del cual es probable que se encuentre un parámetro poblacional con un nivel de confianza específico. Además, proporciona información sobre la precisión de nuestras estimaciones.
Como vimos en la sesión 4 el promedio de la muestra \(\bar{x}\) se distruye normal, con un error estándar \(SE\), lo que nos permite estimar probabilidades basándonos en la curva normal.
Por ejemplo, si nos desviamos \(\pm1.96SE\) desde la media abarcaremos aproximadamente el 95% de los valores probables.
Nivel de confianza: Corresponde a la probabilidad de que la muestra elegida produzca un intervalo que incluya el parámetro que se está estimando (\(1-\alpha\)).
Nivel de significacncia: Corresponde a la probabilidad de que el intervalo calculado a partir de la muestra no comprenda el parámetro de la población (\(\alpha\)).
4.1. Cálculo de intervalos de confianza
En el caso de nuestro vector aleatorio, un intervalo de confianza para la media se puede calcular de la siguiente manera:
# Calcular un intervalo de confianza para la media
<- t.test(vector)$conf.int # Intervalo de confianza del 95% para la media
intervalo_confianza intervalo_confianza
[1] 4.818567 5.543057
attr(,"conf.level")
[1] 0.95
También podemos calcular intervalos de confianza para casos reales. Carguemos la base de datos que utilizaremos, que corresponde a un subset de la Encuesta Suplementaria de ingresos ESI para ocupados:
load(url("https://github.com/cursos-metodos-facso/datos-ejemplos/raw/main/esi-2021-ocupados.rdata"))
Recordemos que podemos contar con bases de datos que tengan factor de expansión (ponderador) o no. Esta distinción se presenta cuando trabajamos con muestras simples o complejas. Al trabajar con muestras complejas debemos identificar cuál es la variable del ponderador e incorporarla en nuestro cálculo.
En esta guía practicaa trabajaremos sin factores de expansión o ponderadores.
IC para Medias
Calculemos un intervalo de confianza para la media de ingresos de personas ocupadas:
::describe(esi$ing_t_p) psych
vars n mean sd median trimmed mad min max
X1 1 37124 586360.4 697362.9 405347.7 474473.1 255411.6 0 38206253
range skew kurtosis se
X1 38206253 12 402.32 3619.36
::ci.mean(esi$ing_t_p, alpha = 0.05) Publish
mean CI-95%
586360.41 [579266.37;593454.45]
Contamos con una media de ingresos de $586.360 como estimación puntual. Pero también podemos decir que con un 95% de confianza el parámetro poblacional se encontrará entre $579.266 y $593.454.
Resumen
Hoy pudimos aprender y recordar:
- Los conceptos de promedio y dispersión
- Qué es la probabilidad y su aplicación para estadística
- Qué es la distribución normal
- Cómo calcular e interpretar intervalos de confianza