Vamos a trabajar con los datos de la encuesta sobre Familia y Roles de Género 2012 del IOP-PUCP.
library(foreign)
genero12 <- read.spss("IOP_1212_01_D.sav", to.data.frame = TRUE,
use.value.labels = TRUE)
Vamos a calcular dos índices para poder trabajar con esta base de datos:
v.acoso.c <- genero12[, c(173:180)]
library(dplyr)
v.acoso.c <- v.acoso.c %>% mutate_if(is.factor, as.numeric)
v.acoso.c.2 <- v.acoso.c %>%
mutate_all(~recode(., '2'=0, .missing=0))
i.acoso <- rowSums(v.acoso.c.2)
i.acoso[i.acoso > 1] <- 1
genero12$i.acoso <- factor(i.acoso, labels = c("No", "Sí"))
homofob <- genero12[, c(111:117)]
homofob <- homofob %>% mutate_if(is.factor, as.numeric)
homofob <- homofob %>% mutate_all(~recode(., '5'= NaN))
homofob <- homofob %>% mutate_all(~((. -4)*(-1)))
genero12$i.homofob <- rowSums(homofob)/21*100
Los estadísticos de tendencia central nos indican la puntuación típica o común en una distribución de valores de una variable:
\[\bar{x}= \frac{\sum{x}}{n}\]
Variable de análisis: Edad ideal para que una mujer se case (P1)
Moda:
table(genero12$P1)
##
## 15 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
## 1 12 3 101 6 37 31 40 393 72 71 101 22 207 1 12 7 1 34 3
## 38 40 60
## 1 4 1
frecuencias <- as.data.frame(table(genero12$P1))
frecuencias[which.max(frecuencias$Freq), 1]
## [1] 25
## 23 Levels: 15 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ... 60
Mediana:
median(genero12$P1, na.rm = T)
## [1] 25
Media:
mean(genero12$P1, na.rm = T)
## [1] 26.22481
Variable de análisis: Edad ideal para que un hombre se case (P2)
frecuencias <- as.data.frame(table(genero12$P2))
frecuencias[which.max(frecuencias$Freq), 1]
## [1] 30
## 24 Levels: 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ... 42
median(genero12$P2, na.rm = T)
## [1] 29
mean(genero12$P2, na.rm = T)
## [1] 28.55508
Ejemplo 1: Edad ideal para que un hombre y una mujer se casen.
La media está representada por la línea roja y la mediana por la línea azul
Ejemplo 2: Horas dedicadas a las labores domésticas:
summary(genero12$P19A)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0.00 7.00 16.00 23.19 30.00 168.00 2
Ejemplo 4: Índice de homofobia
summary(genero12$i.homofob)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0.00 38.10 47.62 48.64 61.90 100.00 252
Los estadísticos de dispersión describen como se dispersan o distribuyen los valores de una variable de intervalo o razón.
Los principales estadísticos de dispersión son:
Para calcular la desviación estándar se debe primero calcular la varianza que es la media de las desviaciones al cuadrado: \[s^2_{x}=\frac{\sum (x-\bar{x})^2}{n-1}\]
Una puntuación de desviación \((x-\bar{x})\) nos dice cuánto se “desvía” el puntaje de un caso particular respecto de la media.
La varianza es una medida y un concepto que es muy importante para otros procedimientos estadísticos, como el Análisis de la Varianza y el análisis de regresión.
En el R, las funciones para el rango, la desviación estándar y la varianza son las siguientes, tomando como ejemplo la variable “edad ideal para que una mujer se case”:
range(genero12$P1, na.rm=T) # Rango
## [1] 15 60
sd(genero12$P1, na.rm = T) # Desviación Estándar
## [1] 3.734084
var(genero12$P1, na.rm = T) # Varianza
## [1] 13.94338
Otro ejemplo: veamos cómo están distribuídos los estadísticos descriptivos del índice de homofobia, según ámbito de residencia. Ello nos permitirá identificar en qué ámbitos econtramos mayores niveles de homofobia y qué tan dispersos o concentrados están los casos alrededor de la media.
Hay que tomar en cuenta que una mayor dispersión nos dice que la distribución de la variable es más heterogénea, es decir presenta mayores diferencias en la población objetivo.
Para calcular un conjunto de estadísticos descriptivos por grupos podemos usar la función summaryBy del paquete doBy
library(doBy)
tab1 <- summaryBy(i.homofob ~ Ambito, data = genero12,
FUN = function(x) {c(Media = mean(x, na.rm = T),
Md = median(x, na.rm = T),
Desv = sd(x, na.rm = T),
Rg = range(x, na.rm = T))})
tab1
## Ambito i.homofob.Media i.homofob.Md i.homofob.Desv i.homofob.Rg1
## 1 Lima-Callao 45.15041 47.61905 15.18230 0
## 2 Interior Urbano 49.27438 52.38095 20.27958 0
## 3 Interior Rural 54.03959 57.14286 20.25500 0
## i.homofob.Rg2
## 1 95.2381
## 2 100.0000
## 3 100.0000
En el siguiente gráfico de densidades se muestran las medias de cada grupo como líneas verticales:
La función summaryBy nos permite pedir estadísticos descriptivos de más de una variable, por diferentes grupos compuestos. Por ejemplo, estadísticos descriptivos de la edad ideal para que un hombre se case y para que una mujer se case, según sexo del entrevistado y grupo de edad:
tab2 <- summaryBy(P1 + P2 ~ SEXO + GEDAD, data = genero12,
FUN = function(x) {c(Media = mean(x, na.rm = T),
Md = median(x, na.rm = T),
Desv = sd(x, na.rm = T),
Rg = range(x, na.rm = T))})
tab2
## SEXO GEDAD P1.Media P1.Md P1.Desv P1.Rg1 P1.Rg2 P2.Media P2.Md
## 1 Masculino 18 a 29 26.58883 25.0 3.244851 18 38 28.46701 28
## 2 Masculino 30 a 44 26.25556 25.0 4.267746 18 60 28.24022 28
## 3 Masculino 45 a más 25.13298 25.0 3.431278 18 40 27.87895 28
## 4 Femenino 18 a 29 26.34653 26.0 3.219764 18 36 28.57711 30
## 5 Femenino 30 a 44 27.14583 26.5 4.142688 15 40 29.59067 30
## 6 Femenino 45 a más 25.86139 25.0 3.761628 18 40 28.54455 30
## P2.Desv P2.Rg1 P2.Rg2
## 1 3.436773 18 40
## 2 4.143948 18 40
## 3 3.670428 19 40
## 4 3.532035 18 40
## 5 4.466696 20 42
## 6 3.756321 18 40
Otra función útil que nos permite calcular estadísticos descriptivos por grupos es summarySE del paquete Rmisc. Esta función nos muestra el número de casos válidos, la media, la desviación estándar, además del error estándar (se) y el intervalo de confianza al 95% (ci). Estos dos últimos estadísticos los veremos más adelante en el curso.
summarySE nos permite hacer comparaciones entre diversos grupos compuestos, por ejemplo:
Índice de homofobia según sexo:
library(Rmisc)
## Loading required package: lattice
tab3 <- summarySE(data = genero12, measurevar = "i.homofob", groupvars = "SEXO", na.rm = T)
tab3
## SEXO N i.homofob sd se ci
## 1 Masculino 454 52.00336 18.70172 0.8777151 1.724898
## 2 Femenino 497 45.55907 18.37323 0.8241519 1.619259
Índice de homofobia según sexo y grupo de edad:
tab4 <- summarySE(data = genero12, measurevar = "i.homofob",
groupvars = c("SEXO", "GEDAD"), na.rm = T)
tab4
## SEXO GEDAD N i.homofob sd se ci
## 1 Masculino 18 a 29 164 48.75145 18.56579 1.449745 2.862702
## 2 Masculino 30 a 44 148 53.05663 17.15590 1.410206 2.786897
## 3 Masculino 45 a más 142 54.66130 19.94443 1.673699 3.308788
## 4 Femenino 18 a 29 175 42.36735 19.76004 1.493718 2.948139
## 5 Femenino 30 a 44 161 45.07542 16.71787 1.317553 2.602037
## 6 Femenino 45 a más 161 49.51198 17.75590 1.399361 2.763600
Los estadísticos de orden o posición nos permiten conocer la distribución relativa de los valores de una variable al divivir la distribución en proporciones específicas de casos. Nos indican la proporción de casos que está por encima o por debajo de un estadístico de orden o posición especifico. Reciben el nombre genérico de cuantiles. Algunos cuantiles tienen nombres especiales:
La función summary, además de rango y la media, nos proporciona los cuartiles. Por ejemplo en el caso de las horas dedicadas a labores domésticas en el hogar, tenemos:
summary(genero12$P19A)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0.00 7.00 16.00 23.19 30.00 168.00 2
Si queremos pedir otros cuantiles de la misma variable:
quantile(genero12$P19A, probs = seq(0,1, 0.1), na.rm = T) # Los deciles
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## 0 3 6 9 14 16 21 28 35 56 168
quantile(genero12$P19A, probs = seq(0,1, 0.2), na.rm = T) # Los quintiles
## 0% 20% 40% 60% 80% 100%
## 0 6 14 21 35 168
quantile(genero12$P19A, probs = c(.3, .45, .66), na.rm = T) # Percentiles específicos
## 30% 45% 66%
## 9 14 28
Con la función summaryBy Podemos comparar los cuartiles de esta variable entre hombres y mujeres:
tab5 <- summaryBy(P19A ~ SEXO, data = genero12,
FUN = function(x) {c(quantile(x, probs = c(.25,.5,.75), na.rm = T))})
tab5
## SEXO P19A.25% P19A.50% P19A.75%
## 1 Masculino 4 10 21
## 2 Femenino 14 28 42
… o comparar los deciles:
tab6 <- summaryBy(P19A ~ SEXO, data = genero12,
FUN = function(x) {c(quantile(x, probs = seq(0, 1, 0.1), na.rm = T))})
tab6
## SEXO P19A.0% P19A.10% P19A.20% P19A.30% P19A.40% P19A.50% P19A.60%
## 1 Masculino 0 0 3 6 7 10 14
## 2 Femenino 0 7 14 18 21 28 30
## P19A.70% P19A.80% P19A.90% P19A.100%
## 1 15 21 28.0 84
## 2 42 49 68.8 168
Seleccione un subconjunto de datos de sólo mujeres y compare los principales estadísticos de tendencia central y de dispersión de la edad de las entrevistadas, según el índice de acoso sexual callejero y el ámbito de residencia. ¿Las edades de las mujeres acosadas son las mismas que las de las mujeres que no reportan sufrir esos hechos?, ¿qué cambios observa entre ámbitos de residencia?
Compare los estadísticos de tendencia central y de dispersión del índice de homofobia según niveles socioeconómicos (NSEGrup) y analice qué diferencias encuentra entre los grupos.
¿Qué diferencia encontramos en las horas dedicadas a labores domésticas entre mujeres de distintos grupos de edad?
Compare los deciles de la edad ideal para que una mujer se case según el sexo del entrevistado. ¿Qué diferencia observa entre hombres y mujeres?