7.1 Histogramas para graficar variables continuas.
Un histograma es una representación gráfica de los datos de una variable empleando rectángulos (barras) cuya altura es proporcional a la frecuencia de los valores representados y su ancho proporcional a la amplitud de los intervalos de la clase.
Como se mencionó anteriormente, las gráficas se realizarán principalmente con la librería ggplot2
y nos apoyamos en la librería patchwork
para organizar la visual de las gráficas. A continuacuón, se presenta cómo realizar un histograma para la variable ingresos utilizando los factores de expansión de la encuesta. EN primera instancia se define la fuente de información (data), luego se definen la variable a graficar (x) y los pesos de muestreo (weight). Una vez definido los parámetros generales del gráfico se define el tipo de gráfico, que para nuestro caso como es un histograma es geom_histogram. Se definen los títulos que se quiere que tenga el histograma y por último, se aplica el tema de la CEPAL.
<- ggplot(
plot1_Ponde data = encuesta,
aes(x = Income, weight = wk)) +
geom_histogram(
aes(y = ..density..)) +
ylab("") +
ggtitle("Ponderado") +
theme_cepal()
plot1_Ponde
De forma análoga se define el siguiente histograma, note que en este caso se omitió el parámetro weight
. Es decir, se genera un histograma sin pesos de muestreo:
<-
plot1_SinPonde ggplot(encuesta, aes(x = Income)) +
geom_histogram(aes(y = ..density..)) +
ylab("") +
ggtitle("Sin ponderar") +
theme_cepal()
plot1_SinPonde
Ahora bien, para efectos de comparación, se grafica la variable ingreso tomada de la población (BigCity) y se muestran los tres histogramas para notar las diferencias que tienen en comparación con el poblacional.
<- ggplot(BigCity, aes(x = Income)) +
plot1_censo geom_histogram(aes(y = ..density..)) +
ylab("") +
ggtitle("Poblacional") +
theme_cepal() +
xlim(0, 2500)
| plot1_Ponde | plot1_SinPonde plot1_censo
Por otro lado, repetimos ahora la secuencia de gráficos pero en este caso para la variable Expenditure:
<- ggplot(
plot2_Ponde data = encuesta,
aes(x = Expenditure, weight = wk)
+
) geom_histogram(aes(y = ..density..)) +
ylab("") +
ggtitle("Ponderado") +
theme_cepal()
plot2_Ponde
<- ggplot(data = encuesta,
plot2_SinPonde aes(x = Expenditure)) +
geom_histogram(aes(y = ..density..)) +
ylab("") +
ggtitle("Sin ponderar") +
theme_cepal()
plot2_SinPonde
<- ggplot(BigCity, aes(x = Expenditure)) +
plot2_censo geom_histogram(aes(y = ..density..)) +
ylab("") +
ggtitle("Poblacional") +
theme_cepal() +
xlim(0, 1500)
| plot2_Ponde | plot2_SinPonde plot2_censo
Como conclusión, de ambos ejercicios, se puede observar que el histograma que mejor se aproxima al poblacional es aquel que utiliza los pesos de muestreo, aunque el gráfico que no los utiliza se aproxima bien y esto debido a la correcta selección de la muestra.
Por otro lado, cuando el interés ahora es realizar comparaciones entre dos o más agrupaciones, es posible hacer uso del parámetro fill
, el cual “rellena” las barras del histograma con diferentes colores según sea el grupo. Para este ejemplo, se van a graficar subgrupos por zonas:
<- ggplot(
plot3_Ponde
encuesta,aes(x = Income, weight = wk)) +
geom_histogram(
aes(y = ..density.., fill = Zone),
alpha = 0.5,
position = "identity"
+
) ylab("") +
ggtitle("Ponderado") +
theme_cepal()
plot3_Ponde
Como se pudo observar en la generación del histograma, se utilizó el parámetro position el cual permite que las barras del gráfico sean distingibles.
Ahora se graficará la misma variable pero esta vez sin los pesos de muestreo:
<- ggplot(encuesta, aes(x = Income)) +
plot3_SinPonde geom_histogram(aes(y = ..density.., fill = Zone),
alpha = 0.5, position = "identity"
+
) ggtitle("Sin ponderar") +
theme_cepal() +
ylab("")
plot3_SinPonde
Ahora, siguiendo el esquema de comparación anterior, se graficará la variable ingreso usando la información de la población y los subgrupos de zonas definidos anteriormente y por último, se muestran los 3 histogramas para poder compararlos:
<- ggplot(BigCity, aes(x = Income)) +
plot3_censo geom_histogram(aes(y = ..density.., fill = Zone),
alpha = 0.5, position = "identity"
+
) ggtitle("Poblacional") +
theme_cepal() +
xlim(0, 1500) +
ylab("")
| plot3_Ponde | plot3_SinPonde plot3_censo
Ahora, repetimos la secuencia de gráficos anteriores pero, para la variable Expenditure:
<- ggplot(
plot4_Ponde
encuesta,aes(x = Expenditure, weight = wk)
+
) geom_histogram(aes(y = ..density.., fill = Zone),
alpha = 0.5, position = "identity"
+
) ylab("") +
ggtitle("Ponderado") +
theme_cepal()
plot4_Ponde
Sin ponderar,
<- ggplot(
plot4_SinPonde
encuesta,aes(x = Expenditure)
+
) geom_histogram(aes(y = ..density.., fill = Zone),
alpha = 0.5, position = "identity"
+
) ggtitle("Sin ponderar") +
theme_cepal() +
ylab("")
plot4_SinPonde
Poblacional,
<- ggplot(BigCity, aes(x = Expenditure)) +
plot4_censo geom_histogram(aes(y = ..density.., fill = Zone),
alpha = 0.5, position = "identity"
+
) ggtitle("Poblacional") +
theme_cepal() +
xlim(0, 1500) +
ylab("")
| plot4_Ponde | plot4_SinPonde plot4_censo
Ahora, repetimos la secuencia de gráficos para la variable Income, pero hacemos las particiones por la variable sexo, Primero, hagamos el histogramas ponderado:
<- ggplot(
plot5_Ponde
encuesta,aes(x = Income, weight = wk)
+
) geom_histogram(aes(y = ..density.., fill = Sex),
alpha = 0.5, position = "identity"
+
) ylab("") +
ggtitle("Ponderado") +
theme_cepal()
plot5_Ponde
Sin ponderar,
<- ggplot(encuesta, aes(x = Income)) +
plot5_SinPonde geom_histogram(aes(y = ..density.., fill = Sex),
alpha = 0.5, position = "identity"
+
) ggtitle("Sin ponderar") +
theme_cepal() +
ylab("")
plot5_SinPonde
Poblacional,
<- ggplot(BigCity, aes(x = Income)) +
plot5_censo geom_histogram(aes(y = ..density.., fill = Sex),
alpha = 0.5, position = "identity"
+
) ggtitle("Poblacional") +
theme_cepal() +
xlim(0, 1500) +
ylab("")
| plot5_Ponde | plot5_SinPonde plot5_censo
Ahora, repetimos la secuencia de gráficos para la variable Expenditure desagregada por la variable sexo, primero, ponderado:
<- ggplot(
plot6_Ponde
encuesta,aes(x = Expenditure, weight = wk)
+
) geom_histogram(aes(y = ..density.., fill = Sex),
alpha = 0.5, position = "identity"
+
) ylab("") +
ggtitle("Ponderado") +
theme_cepal()
plot6_Ponde
Sin ponderar,
<- ggplot(encuesta, aes(x = Expenditure)) +
plot6_SinPonde geom_histogram(aes(y = ..density.., fill = Sex),
alpha = 0.5, position = "identity"
+
) ggtitle("Sin ponderar") +
theme_cepal() +
ylab("")
plot6_SinPonde
Poblacional,
<- ggplot(BigCity, aes(x = Expenditure)) +
plot6_censo geom_histogram(aes(y = ..density.., fill = Sex),
alpha = 0.5, position = "identity"
+
) ggtitle("Poblacional") +
theme_cepal() +
xlim(0, 1500) +
ylab("")
| plot6_Ponde | plot6_SinPonde plot6_censo