Sesión 2 EXPLORACIÓN CATEGÓRICA

LUEGO DE GENERAR UN ENLACE LO DESCARGO

link = "https://docs.google.com/spreadsheets/d/e/2PACX-1vRtLBWw8ABE5nGVTqGI_PHPf7SsG0DEHjAo0UiGU5KJLDjV9O1xSHXL-7zfeTAS6JIiY659oHscF6mr/pub?gid=1312354955&single=true&output=csv"

# La función read.csv le entrega datos al objeto 'SEG':
SEG =read.csv(link, stringsAsFactors = F, na.strings = '')

Identificando nombres de variables:

names(SEG)
##  [1] "ID"     "SEX"    "RACE"   "SES"    "SCTYP"  "LOCUS"  "CONCPT"
##  [8] "MOT"    "RDG"    "WRTG"   "MATH"   "SCI"    "CIV"

Identificando tipo de variable:

str(SEG)
## 'data.frame':    600 obs. of  13 variables:
##  $ ID    : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ SEX   : chr  "HOMBRE" "MUJER" "HOMBRE" "HOMBRE" ...
##  $ RACE  : chr  "ASIATICO" "ASIATICO" "ASIATICO" "ASIATICO" ...
##  $ SES   : chr  "ALTO" "ALTO" "ALTO" "MEDIO" ...
##  $ SCTYP : chr  "PUBLICA" "PUBLICA" "PUBLICA" "PUBLICA" ...
##  $ LOCUS : num  0.29 -0.42 0.71 0.06 0.22 0.46 0.44 0.68 0.06 0.05 ...
##  $ CONCPT: num  0.88 0.03 0.03 0.03 -0.28 0.03 -0.47 0.25 0.56 0.15 ...
##  $ MOT   : num  0.67 0.33 0.67 0 0 0 0.33 1 0.33 1 ...
##  $ RDG   : num  33.6 46.9 41.6 38.9 36.3 49.5 62.7 44.2 46.9 44.2 ...
##  $ WRTG  : num  43.7 35.9 59.3 41.1 48.9 46.3 64.5 51.5 41.1 49.5 ...
##  $ MATH  : num  40.2 41.9 41.9 32.7 39.5 46.2 48 36.9 45.3 40.5 ...
##  $ SCI   : num  39 36.3 44.4 41.7 41.7 41.7 63.4 49.8 47.1 39 ...
##  $ CIV   : num  40.6 45.6 45.6 40.6 45.6 35.6 55.6 55.6 55.6 50.6 ...

Explorar la categórica, sobre todo como variable dependiente, significa querer saber:

Las modalidades de la variable se distribuyen uniformemente? Hay valores que resaltan? Los que resaltan, acaparan los conteos u ocurrencias? Que problema vemos? que nos podemos preguntar? Y si además la variable fuese ordinal, podríamos querer saber:

Hasta que valor llega el 50% de la población? y el 25% de los valores más bajo? Desde que valor comienza el 25% de la población?

Parte 1: Explorando Variables NOMINALES

  1. Tabla
  1. Sexo
table(SEG$SEX)
## 
## HOMBRE  MUJER 
##    327    273
  1. Raza
table(SEG$RACE)
## 
## ASIATICO   BLANCO  HISPANO    NEGRO 
##       71       34      437       58
  1. SES
table(SEG$SES)
## 
##  ALTO  BAJO MEDIO 
##   139   162   299

Ahora sí, la tabla de frecuencias: a. Tabla de frecuencias avanzada

library(questionr)
library(magrittr)
NDF=freq(SEG$RACE, total = F, sort = "dec", exclude= c(NA))%>% data.frame()
NDF=data.frame(variable=row.names(NDF),NDF,row.names = NULL)
  1. Viendo a NDF
NDF
##   variable   n   X.
## 1  HISPANO 437 72.8
## 2 ASIATICO  71 11.8
## 3    NEGRO  58  9.7
## 4   BLANCO  34  5.7

Gráfico El gráfico para las categóricas es el de barras:

library(ggplot2) #instalar previamente

# en base solo se pone: en data como se llama la tabla de frecuencias
# y en aes la variable 'x' para los nombres y la 'y' para los conteos
base = ggplot(data=NDF,aes(x=variable,y=n)) 

#luego a la base se le pide añadir la 'geometria' deseada:
bar1 = base + geom_bar(stat='identity') 

EL RESULTADO

bar1

Las barras salen orden alfabetico, para que respeten el orden de la tabla ‘NDF’ hay que ser explícitos:

bar1= bar1 + scale_x_discrete(limits= NDF$variable)

Comprobando…

bar1

En los gráficos de barra, sólo las variables de tipo NOMINAL, como ésta, se pueden reordenar a gusto.

Podemos poner titulos así:

text1="¿Qué raza es más común?"
text2="raza"
text3="Conteo"
text4="Fuente: UNMSM"

bar2= bar1 + labs(title=text1,
                      x =text2, 
                      y = text3,
                      caption = text4) 
bar2

Si quieres más cambios detallados:

bar2 + theme_classic() + 
            theme(plot.title = element_text(hjust = 0.5,size=15), # centrar y agrandar
                  plot.caption = element_text(hjust = 0), # a la derecha
                  axis.text.x = element_text(angle=45,hjust = 1)) # Ángulo

El gráfico de Pareto muestra dos medidas, los conteos y los porcentajes acumulados. Por tradición se trata de detectar que valores representan el 80%.