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?
table(SEG$SEX)
##
## HOMBRE MUJER
## 327 273
table(SEG$RACE)
##
## ASIATICO BLANCO HISPANO NEGRO
## 71 34 437 58
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)
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%.