Estos datos los trajimos de Google. Para convertir un archivo en Excel a uno de Google, sigue estos pasos. Verás que al final consigo el link a ser usado en esta sesion:
El link que usaré tiene datos de 2019 de las acciones del Serenazgo de la Municipalidad de San Isidro, lo uso en este código y traigo los datos para el análisis.
Puedes ver la data aqui:
Luego de generar un enlace, la descargo:
# comentario: enlace está entre comillas
link="https://docs.google.com/spreadsheets/d/e/2PACX-1vRcJpnJqH9VzTXl4NMv0zX45yRkXeMNST3fkSfGFCpUTh0S-dSzRtUj7CJqAzqMUE5r6tKQRZzdKq9V/pub?gid=1802780199&single=true&output=csv"
# comentario: funcion read.csv le entrega datos al objeto 'sere19':
sere19=read.csv(link, stringsAsFactors = F,na.strings = '')
names(sere19) # nombres columna en el objeto
## [1] "FECHA" "DÍA" "MES" "MODALIDAD" "MEDIO" "DIRECCIÓN"
str(sere19) # sera numero? texto? o factor?
## 'data.frame': 3414 obs. of 6 variables:
## $ FECHA : chr "01/01/2019 0:01" "01/01/2019 0:07" "01/01/2019 0:17" "01/01/2019 0:25" ...
## $ DÍA : int 3 3 3 3 3 3 3 3 3 3 ...
## $ MES : int 1 1 1 1 1 1 1 1 1 1 ...
## $ MODALIDAD: chr NA "Patrullaje Disuasivo" NA NA ...
## $ MEDIO : chr "TELÉFONO" "TELÉFONO" "TELÉFONO" "TELÉFONO" ...
## $ DIRECCIÓN: chr "AV. DOS DE MAYO N° 0864, SAN ISIDRO" "CA. GARCIA, GODOFREDO N° 0490, SAN ISIDRO" "CA. LOS ROBLES N° 210234, SAN ISIDRO" "CA. BURGOS N° 0179, SAN ISIDRO" ...
Explorar la categorica, sobre todo como variable dependiente, significa querer saber:
Prestemos atención a las variables NOMINALES, aquellas que sirven para denominar a los posibles caracteríticas cualitativas de nuestra unidad de investigación.
# simple exploración con función table:
table(sere19$MODALIDAD)
##
## Conminar / Retirar Exceso de velocidad
## 151 33
## Falla mecánica Imprudencia del conductor
## 5 66
## Patrullaje Disuasivo
## 103
Con este codigo puedes tener un resultado mas similar a lo conocido como tabla de frecuencias:
# quiza necesite instalar
library(questionr)
library(magrittr)
NomDf=freq(sere19$MODALIDAD,
total = F,
# sort = 'dec', # elimina el # si deseas!
exclude = c(NA)) %>% data.frame()
NomDf=data.frame(variable=row.names(NomDf),
NomDf,
row.names = NULL)
names(NomDf)=c("Modalidad","Conteo", "Porcentaje")
# viendo a NomDf
NomDf
## Modalidad Conteo Porcentaje
## 1 Conminar / Retirar 151 42.2
## 2 Exceso de velocidad 33 9.2
## 3 Falla mecánica 5 1.4
## 4 Imprudencia del conductor 66 18.4
## 5 Patrullaje Disuasivo 103 28.8
El gráfico para las categóricas es el de barras:
library(ggplot2) # instalar previamente
# base inicial
base = ggplot(data=NomDf,
aes(x=Modalidad, # para los ejes
y=Conteo))
# luego a la base se le pide añadir la 'geometria' deseada:
bar1 = base + geom_bar(stat='identity')
# aqui resultado:
bar1
Las barras salen orden alfabetico. Por lo general, buscamos ordenar las barras, ya que las modalidades nominales no tiene orden, osea se les puede reasignar posición para resaltar conteos, veamos el uso de la función reorder()
base = ggplot(data=NomDf,
aes(x=reorder(Modalidad,Conteo),
y=Conteo))
bar2 = base + geom_bar(stat='identity')
bar2
Podemos poner titulos así:
text1="¿Qué acción es mas común?"
text2="Acción"
text3="Conteo"
text4="Fuente: Municipalidad de San Isidro"
bar2= bar2 + labs(title=text1,
x =text2,
y = text3,
caption = text4)
bar2
Si quieres cambios más detallados:
#cambio de tema:
bar2=bar2 + theme_classic()
bar2=bar2+ theme(plot.title = element_text(hjust = 0.5,#justificacion
size=15),
plot.caption = element_text(hjust = 0),
axis.text.x =element_text(angle=45,# angulo
hjust = 1))
bar2
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%.
library(qcc) # instalar antes
## Package 'qcc' version 2.7
## Type 'citation("qcc")' for citing this R package in publications.
pareto.chart(table(sere19$MODALIDAD),cumperc = c(0,50,80,100))
##
## Pareto chart analysis for table(sere19$MODALIDAD)
## Frequency Cum.Freq. Percentage Cum.Percent.
## Conminar / Retirar 151.000000 151.000000 42.178771 42.178771
## Patrullaje Disuasivo 103.000000 254.000000 28.770950 70.949721
## Imprudencia del conductor 66.000000 320.000000 18.435754 89.385475
## Exceso de velocidad 33.000000 353.000000 9.217877 98.603352
## Falla mecánica 5.000000 358.000000 1.396648 100.000000
Las acciones de conminar y de patrullaje son casi el 80% de las actividades de serenazgo de San Isidro.
library(DescTools)
Mode(sere19$MODALIDAD)
## [1] "Conminar / Retirar"
Del gráfico ya la sabíamos.
dataTable=table(sere19$MODALIDAD)
# * < 0.01 : indica que la moda no es significativa, las categorias tienen pesos similares.
# * < 0.15 : indica que la moda no es significativa, varias categorias tienen pesos similares.
# * entre 0.15 - 0.3: hay una moda.
# * > 0.3: La moda se diferencia de los demas
Herfindahl(dataTable)
## [1] 0.3033613
1/sum(prop.table(dataTable)**2)
## [1] 3.296399
Hay 3 grupos representativos.
Ver ejercicio dejado en el Classroom.