Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Autor:
Santiago, 2021
Índice general
1.4.4. Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.4.7. Facetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.4.8. Transformaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4.13. Histograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1
ÍNDICE GENERAL
1.4.15. patchwork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
1.4.16. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2. Metodo Exploratorio 67
3. Bibliografia 70
La Minería de Datos (MD) es una disciplina que busca convertir datos brutos en información
útil.
Antes de definir el concepto de MD, comentaremos algunas ideas básicas, para entender la MD.
Hoy en día, la cantidad de datos que ha sido almacenada en las bases de datos excede nuestra
habilidad para reducir y analizar los datos sin el uso de técnicas de análisis automatizadas. Muchas
bases de datos comerciales transaccionales y científicas crecen a una proporción fenomenal.
KDD (Knowledge Discovery in Databases) es una metodología genérica para encontrar informa-
ción en un gran conjunto de datos y con ello generar conocimiento. Se define como un proceso no
trivial de extracción de información a partir de los datos, la cual se encuentra presente de forma
implícita, previamente desconocida y potencialmente útil para el usuario o para el negocio
Las etapas de este proceso, tal como se muestra en la Figura 1.1, son:
1. Identificación del problema en estudio, teniendo un objetivo claro para el problema a resolver,
entendiendo las metas del proceso y cuáles son las preguntas que se quieren responder.
2. Selección e integración de los datos, para contar con un conjunto objetivo desde el cual
obtener el conocimiento. Se obtienen los datos desde los sistemas operacionales, los cuales
3
1. Introducción a la minería de datos
pueden venir en diferentes formatos y en algunas oportunidades con errores, por lo cual es
importante realizar una etapa de procesamiento.
planteada y el análisis que se quiera hacer. Las técnicas seleccionadas permitirán generar
modelos de minería de datos, y con ello descubrir patrones de información implícitos en los
datos.
Las etapas iniciales del proceso KDD son muy importantes porque serán la base sobre la cual se
hará minería de datos. Si la preparación de los datos no está bien hecha, los resultados obtenidos
en los análisis no serán confiables. Por lo tanto, hay que asegurar que se esté trabajando sobre un
repositorio bien diseñado, y es por esta razón que la mayor parte de los esfuerzos se emplean en
las etapas de selección y preparación de los datos. La relación entre el proceso KDD y los Data
Warehouses se da de forma natural, pues el primero busca contar con datos procesados, limpios y
consolidados, mientras que los segundos ofrecen una estructura bien definida en donde almacenar
la información con esas características.
MD corresponde a una de las etapas del proceso llamado “Knowledge Discovery in Databases”
(KDD). Está conformado por un conjunto de técnicas y algoritmos que sirven para hacer análisis
de conjuntos de datos, extrayendo patrones y relaciones entre ellos, convirtiéndolos en información
valiosa y útil para quienes toman las decisiones.
El uso de minería de datos se debe entender como un apoyo para los analistas, y no reemplaza
al conocimiento que tienen los expertos del negocio, ni elimina la necesidad de entender los datos.
El MD no funciona por sí sólo, ya que los patrones que se encuentren en los datos deben ser
interpretados y validados para ver si responden a las consultas del negocio, y si son aplicables en
el mundo real.
El objetivo del MD, como se ha dicho antes, es producir nuevo conocimiento para que los usuarios
del negocio puedan tomar decisiones, a partir de la construcción de un modelo del mundo real
y basándose en datos de diversas fuentes. La decisión del modelo de Data Mining a utilizar está
condicionada por los objetivos del negocio, los cuales se alcanzan al diseñar y probar combinaciones
de algoritmos.
Es importante notar que no existe un “mejor” modelo o algoritmo de minería de datos, depende
del problema en estudio y de los datos disponibles para decir cuál entrega resultados más confiables.
Los modelos de MD se clasifican como predictivos y descriptivos. En el primer caso, se tiene una
variable con valor desconocido, y la finalidad es determinarlo. Esta variable se llama respuesta,
variable dependiente u objetivo, mientras que aquellas utilizadas para hacer la predicción son los
predictores o variables independientes
Los modelos predictivos requieren ser “entrenados”, utilizando un conjunto de datos de entrena-
miento cuyo valor de variable objetivo es conocido. La idea es que el modelo entregue resultados
en base un aprendizaje, en otras palabras, que se vaya ajustando a la realidad conocida.
A este tipo de modelos se les conoce también como modelos de aprendizaje supervisado, debido
a que los valores estimados o calculados son comparados con los resultados conocidos, y por lo
tanto se tiene una clara medida del éxito o falla de la predicción. Algunos algoritmos que se utilizan
en estos modelos son los de clasificación y las regresiones.
El aprendizaje supervisado se utiliza en problemas en los que se tiene conocimiento del resultado
al que se quiere llegar, por ejemplo para la detección de aquellos clientes que son más propensos
a la fuga de la empresa.
Por otra parte, se tienen los modelos descriptivos, en los cuales no se cuenta con un resultado
conocido para poder guiar a los algoritmos, y por ello se conocen como modelos de aprendizaje no
supervisado, donde el modelo se va ajustando de acuerdo a las observaciones o datos entregados, y
se recurre muchas veces a argumentos heurísticos para evaluar la calidad de los resultados. Algunos
algoritmos que se utilizan en estos modelos son los de clustering y las reglas de asociación
El aprendizaje no supervisado, es usado en los casos en que no se tiene conocimiento previo del
resultado al que se va a llegar, por ejemplo al segmentar a los clientes en grupos que no hayan
sido definidos previamente. Luego que el modelo ya ha sido entrenado, se utiliza una muestra de
datos independiente de aquella utilizada para la fase de construcción y entrenamiento del modelo,
con la intención de evaluar la capacidad de predicción de éste.
Los dos caminos principales del MD hacen referencia a la predicción y a la descripción. Para
ambos existen una variedad de métodos de minería de datos que se pueden utilizar, con el fin
de descubrir conocimiento. Dentro de los métodos predictivos se encuentran la clasificación y
regresión, por otra parte en los descriptivos se tienen el clustering y las reglas de asociación
de datos. Este último se puede utilizar para predecir cómo se comportarán nuevas instancias
La regresión es una función que le asigna a un elemento un valor real, utilizando valores exis-
tentes para predecir datos futuros. En el caso más simple, la regresión usa técnicas estadísticas
como la regresión lineal, sin embargo muchos de los problemas del mundo real no funcionan con
proyecciones lineales. Las regresiones se pueden utilizar por ejemplo para predecir comportamiento
de la demanda futura, utilizando las ventas o el consumo pasado
El clustering divide el conjunto de datos en grupos que son muy diferentes unos de otros, pero
cuyos elementos sean muy similares entre sí. Es un método descriptivo que identifica un grupo de
categorías o “clusters” para describir los datos. Estas categorías pueden ser exclusivas, jerárquicas
o superpuestas. Entre los algoritmos más conocidos de clustering se encuentran K-means y las
redes neuronales o mapas de Kohonen.
A diferencia de la clasificación, en clustering no se sabe cuáles serán los grupos que se formarán
según los atributos escogidos, por lo tanto, es necesario que los expertos del negocio interpreten
las categorías que se formen y vean si hacen sentido o no. Una vez obtenidos los clusters que
segmentan los datos, se pueden clasificar otros nuevos.
Las reglas de asociación son otro instrumento descriptivo, donde el objetivo es encontrar rela-
ciones significativas entre los datos, utilizando probabilidades de ocurrencia de dos objetos. Un
claro ejemplo es el análisis de los artículos o productos de una canasta de compras en una tienda.
1. Datos provenientes de Base de Datos (BD) relacionadas como ACCES, MySQL, Oracle,
entre otros.
Son las mas sencillas de trabajar, ya que, están claramente estructurados en tablas, registros
y campos .
Desde las técnicas de minería de datos se manejan 2 tipos de atributos (columnas o campos)
Nuestros ojos son atraídos por los colores y patrones. Podemos identificar rápidamente el rojo
del azul o el cuadrado del círculo. Nuestra cultura es visual, lo que incluye todo tipo de cosas,
desde arte y publicidad hasta televisión y películas.
La visualización de datos es otra forma de arte visual que capta nuestro interés y mantiene
nuestros ojos en el mensaje. Cuando vemos un gráfico, vemos rápidamente las tendencias y los
valores atípicos. Si podemos ver algo, lo interiorizamos rápidamente. Es contar historias con un
propósito. Si alguna vez haz visto una gigantesca hoja de cálculo de datos y no te fue posible ver
una tendencia, sabes cuán eficaz puede ser una visualización.
Sin embargo, no es tan simple como adornar un gráfico para que se vea mejor o pegar la parte
ïnformativa"de una infografía. La visualización eficaz de datos es un delicado equilibrio entre forma
y función. La gráfica más simple podría ser demasiado aburrida para captar la atención del público
o lograr que diga algo importante; la visualización más sorprendente podría fallar por completo a
la hora de transmitir el mensaje correcto o podría decir mucho. Los datos y los elementos visuales
deben trabajar juntos, y hay algo de arte en combinar un gran análisis con una gran narración.
a) Cuadros.
b) Tablas.
c) Mapas.
d ) Infografías.
e) Dashboards.
a) Grafico de áreas.
b) Diagramas de caja y bigotes
c) Nube de burbujas
d ) Gráfico de bala
e) Cartograma
f ) Vista circular
g) Mapa de distribución de puntos
h) Gráfico de Gantt
i ) Mapa de calor
j ) Tabla de resaltado
k ) Histograma
l ) Matriz
m) Red
n) Área polar
ñ) Árbol radial
o) Diagrama de dispersión (2D o 3D)
p) Gráfico de flujo
q) Tablas de texto
r ) Escala de tiempo
s) Diagrama de árbol
t) Gráfico circular apilado
u) Nube de palabras
Tus análisis serán una serie de comandos escritos (R script), lo que es muy conveniente porque:
* Conlleva a tener el control y completo entendimiento de qué estás haciendo (adiós a la caja
negra en tus análisis in silico).
* Tus análisis son claros y transparentes, cualquier colega o tú en el futuro pueden leerlo para
encontrar errores y/o hacer mejoras.
* ¡Escalabilidad! R está diseñado para el análisis de datos. Las habilidades que vayas apren-
diendo en R se pueden escalar fácilmente con el tamaño de tus datos (set de datos con cientos
a miles, incluso millones de líneas).
* ¡Gráficos de alta calidad! R tiene innumerables funcionalidades para todo tipo de gráficas a
tu disposición para lograr una efectiva visualización de tus resultados. Visita The R Graph
Gallery para ver ejemplos de lo que puedes llegar a hacer.
* ¡Amplia documentación! R cuenta con una basta documentación y la web está minada de
tutoriales, sólo debes buscar. Por ejemplo, Cookbook for R que provee de soluciones a tareas
y problemas básicos en análisis de datos.
Aprender R puede ser difícil y tomar tiempo en un principio, pero ¡no te preocupes, no estás
sólo! R cuenta con una amplia comunidad de usuarios dispuestos a ayudar a través de mailing-lists
y websites como Stack Overflow y RStudio community. Sin embargo, lo más probable es que tus
dudas ya se encuentren resueltas en la web, asi que primero haz una búsqueda en Google usando
palabras clave o copia y pega en el buscador el mensaje de error que te aparezca en la consola de
R. Consejo: haz tus búsquedas y consultas en inglés, tendrás acceso a más y mejor información.
Todo lo que necesitas en una ventana! Como puedes ver en la imagen a continuación, RStudio
se divide en 4 paneles principales:
2. Panel inferior izquierdo: consola de R, donde se ejecutan las líneas de comando en tu script.
3. Panel superior derecho: aquí puedes visualizar los datos presentes en la memoria de R.
Figura 1.5
Acá aprenderemos como visualizar tus datos usando el paquete ggplot2. De los muchos sistemas
que posee R para hacer gráficos, ggplot2 es uno de los más elegantes y versátiles. Esto se debe a
que ggplot2 implementa un sistema coherente para describir y construir gráficos, conocido como
la gramática de gráficos. Con ggplot2 puedes hacer más cosas en menor tiempo, aprendiendo un
único sistema y aplicándolo en diferentes ámbitos.
Cada vez que un usuario abre una nueva sesión en R, ésta se abre como “recién salido de
fábrica”. Es decir, no sólo se abre sin objetos, sino también con sólo los paquetes básicos que
permiten que R funcione. Entonces, tenemos que cargar los paquetes extra que queremos usar. Es
como cuando compras un smartphone y descargas las aplicaciones que usarás de acuerdo a tus
necesidades diarias. La forma más común de hacerlo es a través de la función library, como se ve
a continuación. Tenga en cuenta que esta vez el “tiempo de espera” no está entre comillas
Además, para sacar el máximo provecho de este libro, debe instalar nuestro paquete comple-
mentario, paqueteadp. Esto le dará acceso a las bases de datos que se utilizarán en los diferentes
capítulos de este libro, además de algunas funciones de soporte. La instalación es ligeramente
diferente, porque es un trabajo en progreso. Para obtenerlo, primero debes tener instalado el pa-
quete remotes, que te permitirá utilizar los paquetes almacenados en GitHub, una plataforma de
desarrollo de software.
Una vez cargado el paquete remotes, su función install.github() le permitirá instalar el paquete
de este libro:
Fíjate que uno de nosotros tiene el nombre de usuario “arcruz0” en GitHub, donde se almacena
el paquete “paqueteadp”. ¡Ahora está instalado en tu sistema! Cada vez que lo necesites en una
sesión R, tienes que cargarlo con library():
1.4.4. Datos
La primera capa corresponde a los datos que usaremos. Para hacerlo más demostrativo, carga-
remos la base datos que se utilizará como ejemplo.
El conjunto de datos debería estar ahora en nuestro ambiente. Estos datos corresponden a la
información de los municipios chilenos. Algunos son del Servicio Electoral y otros del Sistema Na-
cional de Información Municipal de Chile. En la primera base de datos, encontramos los resultados
electorales de las elecciones locales, regionales y nacionales del país; mientras que en la segunda
encontramos las características económicas, sociales y demográficas de los municipios chilenos. En
este caso, tenemos los datos electorales comunales de 1992 a 2012, con datos descriptivos como la
población, el ingreso total del municipio, el gasto en asistencia social y el porcentaje de personas en
situación de pobreza en base al total comunal de la Encuesta de Caracterización Socioeconómica
Nacional (CASEN).
Al mirar a la base de datos, encontramos que hay variables continuas (numéricas) y categóricas
(de texto). Saber con qué tipo de variable estamos trabajando es esencial para el siguiente paso.
La segunda capa corresponde al mapeo de las variables dentro del espacio. En este paso, usamos
mapping=aes(), que contendrá la variable que tendremos en nuestros ejes x e y. Para aes(),
hay muchas opciones que veremos a lo largo del capítulo: algunas de ellas son, por ejemplo, fill,
color, shape, y alpha. Todas estas opciones son un conjunto de señales que nos permitirán traducir
mejor lo que queremos decir a través de nuestro gráfico. Normalmente, estas opciones se llaman
estéticas o aes().
El resultado muestra un marco vacío. Esto se debe a que no le hemos dicho a R qué objeto
geométrico usar.
Suena extraño, pero cuando hablamos del objeto geométrico o geom, nos referimos al tipo de
gráfico que queremos hacer, ya sea un gráfico lineal, un gráfico de barras, un histograma, un gráfico
de densidad, o un gráfico de puntos, o si queremos hacer un gráfico de cajas. Esto corresponde a
la tercera capa. En este caso, ya que tenemos datos de la encuesta CASEN, haremos un gráfico
de caja para ver cómo se distribuyen los municipios en nuestra muestra.
1.4.7. Facetas
Ahora, usaremos nuestras nuevas habilidades para hacer dos cosas: primero, usaremos filter()
para conservar sólo los años que nos interesan. Segundo, dividiremos los resultados por zonas
usando facet_wrap(), que corresponde a la cuarta capa que podemos usar para construir un
gráfico con ggplot2. Cuando usamos esta capa, lo que queremos es organizar las “geoms” que
estamos usando en función de una variable categórica. En este caso, la zona. Sin embargo, las
facetas, como acción, son mucho más que eso. face_wrap() y facet_grid() pueden adoptar una
serie de argumentos, siendo el primero el más importante. En este caso, la sintaxis que utilizamos
es la misma que se usa para las fórmulas en R, y denotamos el primer argumento con un signo
“∼”. Con los argumentos nrow = y ncol = podemos especificar cómo queremos ordenar nuestro
gráfico.
Finalmente, añadimos dos líneas de código, una para filtrar y otra para subdividir nuestra
información. Esto es lo que logramos:
Tanto con facet_wrap() como con facet_grid() podemos usar más de un argumento, pero los
resultados son diferentes. facet_wrap() no sólo ordena los geoms, sino que es capaz de cruzarlos,
creando gráficos con dos o más dimensiones usando variables categóricas. Mira los siguientes
ejemplos:
Este gráfico muestra que, por zonas, el porcentaje de pobreza ha variado considerablemente
de 2004 a 2012, y que existe una gran variabilidad interregional. Además, nos muestra cómo
ggplot2 ofrece resultados de alta calidad sin mucha complejidad. La función facet_wrap() es
una capa opcional dentro de las múltiples capas de “Una Gramática de Gráficos en Capas”, pero
es importante recordar que las otras tres deben estar presentes para cualquier tipo de resultados.
1.4.8. Transformaciones
Otra capa que se puede usar es la que nos permite hacer transformaciones de escala en las varia-
bles. Normalmente, aparecerá con el nombre scale_x_discrete(), que variará dependiendo de la
estética utilizada dentro de nuestro mapeo. Así, podemos encontrarnos con scale_fill_continous()
o scale_y_log10(). Por ejemplo, podemos ver cómo se distribuyen los ingresos de los municipios
según la tasa de pobreza de nuestra muestra. Normalmente, haríamos esto de la siguiente manera:
Lo más frecuente es que cuando usamos una variable relacionada con el dinero, aplicamos una
transformación logarítmica. Sin embargo, ¿cómo se traduce esto en nuestra figura?
Por lo general, trabajaremos con un eje X y un eje Y. Hay funciones en ggplot2, como
coord_flip, que nos permiten cambiar la dirección de nuestra gráfica. Sin embargo, también
podemos utilizar este tipo de capa cuando trabajamos con datos geográficos, o cuando, por ejem-
plo, queremos hacer un gráfico de torta. Sin embargo, normalmente, no queremos hacer gráficos
de pastel. Cuanto más se utilice ggplot2, más se aprenderá sobre cada opción.
que un gráfico de barras puede ayudarnos a observar la frecuencia de nuestros datos categóricos,
y un gráfico lineal es práctico para comprender el cambio a lo largo del tiempo. Estos son sólo
algunos ejemplos dentro de una variedad de posibilidades. En esta tercera sección, aprenderemos
a visualizar diferentes tipos de gráficos con datos de la reelección municipal en Chile. Para con-
textualizar, la división político-administrativa más pequeña de Chile es la comuna o municipio,
que cada cuatro años elige a sus autoridades locales: un alcalde y un consejo municipal. Desde
1992 a 2000, los alcaldes fueron elegidos indirectamente, y desde 2004 comenzaron a ser elegidos
directamente por los ciudadanos.
Como ya conocemos nuestros datos, podemos empezar con los más simples. Una buena idea,
por ejemplo, es ver el número de mujeres elegidas como alcaldes en comparación con el número de
hombres elegidos. Para ello, podemos utilizar un gráfico de barras. Como aprendimos en la sección
anterior, para construir cualquier tipo de gráfico necesitamos saber la(s) variable(s) que queremos
usar y qué geometría o geom nos permite representarla. En este caso, usaremos geom_bar()
para ver cuántos hombres y mujeres han sido elegidos desde 1992.
Debemos sospechar de cualquier conjunto de datos (grande o pequeño) que parezca perfecto.
Como podemos ver, construir un gráfico de barras es una tarea fácil. Vemos que, a partir de
2004, más de 800 hombres fueron elegidos como alcaldes, un número que supera con creces el
número de mujeres elegidas para el mismo cargo en el mismo período.
Tal vez, este número ha cambiado con el tiempo, y no podemos verlo en este tipo de gráfico?
Esto parece ser una buena razón para usar facet_wrap.
Como vemos, el número de mujeres alcaldesas parece aumentar, aunque es un aumento mucho
menor del que se esperaría. Esto podría ser un problema sustantivo para hacer un análisis del
gobierno local en Chile.
Por ejemplo, podríamos estar interesados en el número de autoridades locales por zona geográ-
fica. Para ello, sería útil utilizar una proporción, ya que cada zona geográfica está formada por
un número diferente de municipios. De esta manera, será más fácil comparar la situación entre las
zonas.
Cuando queremos calcular una proporción con fy=..prop.., tenemos que tomar algunas precau-
ciones si estamos usando ffacet_wrap. Esta función no calcula la proporción basada en la suma
de ambos géneros por zona. Por ejemplo, esta función registra que hay 89 hombres y 13 mujeres
elegidos en la zona del Gran Norte. Concluye que “en el Gran Norte, los 89 hombres corresponden
al 100 % de los hombres elegidos y las 13 mujeres al 100 % de las mujeres elegidas”. Claramente,
esto no es lo que intentamos representar en el gráfico. Por eso usamos fgroup=1. Intenta ver el
resultado sin fgroup=1 para comprobar lo que sucede.
Ya lo hemos hecho! Vemos que no hay grandes diferencias, donde la zona del “Norte Pequeño”
es la que tiene más mujeres en la alcaldía que hombres. Sin embargo, no hay grandes diferencias
entre las zonas, y los resultados del primer gráfico de barras se replican en este.
Ahora, podemos cambiar la presentación del gráfico. Todo buen gráfico debe contener, por
ejemplo, un título claro, la fuente de los datos y el detalle de los ejes.
Ahora, sólo tenemos que añadir etiquetas para el eje X. Podemos hacerlo fácilmente con
fscale_x_discrete(). Tienes que considerar qué estética de faes() modificarás, ya que esto
cambiará la fscale = que necesitas. Si examináramos las etiquetas desde ffill =, por ejemplo,
tendríamos que usar fscale_fill_discrete(). También hay que tener en cuenta el tipo de variable
que se utiliza. fscale_x_discrete() no tiene “discrete” al final sin motivo. Como comprenderás,
depende totalmente del tipo de variable que estamos usando.
En el último gráfico de la sección anterior vimos que, aunque la elección de mujeres como al-
caldesas en Chile ha aumentado, este aumento no parece ser significativo: en 2012, sólo el 13 %
de los alcaldes elegidos eran mujeres. Tal vez esto se deba a que los cambios socioeconómicos no
han afectado las percepciones de los roles de género en la sociedad. El examen de los datos econó-
micos de los ingresos municipales o del porcentaje de pobreza según la CASEN podría ayudarnos
a comprender por qué la elección de mujeres en las instancias municipales no ha aumentado sus-
tancialmente. Para ello, podemos utilizar geom_line, el objeto geométrico que permite observar
la evolución en el tiempo de nuestro sujeto de interés. La intuición sería hacer la figura de esta
manera:
Una de las cuestiones que surge a primera vista es que, teniendo en cuenta que Chile tiene 345
municipios, parece imposible mostrarlos todos en un solo gráfico.
Ahora, podemos separar el gráfico como lo hemos hecho antes. Se puede hacer por zonas o
regiones, considerando sus intereses. Ya hemos visto resultados diferentes por zonas, por lo que
valdría la pena ver los ingresos de la misma manera:
Figura 1.20: Evolución anual de los ingresos por municipio enfrentado por zona.
Como nuestra muestra se compone de un pequeño número de años, no podemos ver mucha
variabilidad y, a primera vista, los ingresos de todos los municipios han aumentado considerable-
mente. Tal vez, todavía podemos hacer algunos ajustes a nuestro gráfico. Lo más probable es que
no estés familiarizado con la notación científica y te resulte mejor leer números grandes. Tal vez
sepas que es mejor trabajar con una variable monetaria en su transformación logarítmica, como
nos han enseñado en diferentes cursos de metodología. Además, puede que quieras añadir otro tipo
de información en este gráfico, por ejemplo, los promedios. ¿Qué piensas de este gráfico?
Figura 1.21: Versión completa de nuestro gráfico de líneas para los ingresos de los municipios en
los años electorales.
1. Primero, creamos un conjunto de datos (“promedio”) que contiene los ingresos medios de
cada zona. Lo hicimos usando group_by() y summarize() del tidyverse.
3. Después de eso, añadimos a nuestro código geom_hline(). Este objeto geométrico, como
geom_vline() o geom_abline(), nos permite añadir líneas con información. En este caso,
lo usé para agregar el ingreso promedio de cada zona. Especificamos la variable que contiene la
media yintercept = mean, la base de datos means, y el color con color = "dodgerblue3".
5. Luego, usamos scale_x_discrete() para escalar nuestros datos. Esta es una transformación
logarítmica que se hace normalmente cuando trabajamos con modelos lineales que contienen
datos monetarios. Además, cambiamos las etiquetas del eje y: ya no aparece con notación
científica. Esto se hizo con un paquete llamado scales. Aquí llamamos a la función directa-
mente con scales::dollar.
7. Finalmente, especificamos la información sobre el tema. Sin ella, los años entre un panel y
otro se colapsarían. Para eso, lo especificamos con panel.spacing = unit(2, "lines") en
la capa de theme().
Ya vimos que los ingresos de los municipios en Chile aumentaron entre 2004 y 2012. Si bien
miramos el gráfico sin transformaciones funcionales, observamos que algunos municipios tenían
ingresos muy superiores al promedio y se destacaban dentro de sus zonas. La intuición es que pro-
bablemente son extravagantes. Pudimos verlo claramente con un gráfico de caja, que nos permite
graficar diversos datos descriptivos en nuestras variables como la mediana, el mínimo y el máximo.
En este caso, lo utilizaremos para observar si nuestra intuición es correcta o no.
Comencemos filtrando los datos como lo hicimos en el gráfico anterior. En nuestro eje x coloca-
remos las zonas de Chile y en el eje y los ingresos:
Figura 1.22: Recuadro de ingresos del municipio por zona, facetado por año.
Podemos ver valores atípicos muy claros. Tal vez, luego de mirar estos resultados, nos gustaría
identificar qué municipalidades tienen mayores ingreso. Para esto podemos usar el mapeo estético
label =, parte de geom_text(). Para etiquetas solo para los valores atípicos, debemos hacer un
filtro en nuestra base:
Desafortunadamente, las etiquetas están sobre los puntos y, en algunos casos, estos se superponen
cuando están cerca uno del otro. Podemos resolver esto con el paquete ggrepel, que tiene un
elemento geométrico geom_text() “mejorado” que evita la coalición de las etiquetas:
Figura 1.23: Podemos arreglar las etiquetas que se superponen usando el ggrepel.
También podríamos añadir otra información o cambiar la forma en que se presenta actualmente
el gráfico.
4. Por último, con guides, y especificando las aes() que queríamos dirigir, escribimos el código
color=F para eliminar la etiqueta, ya que era información repetida dentro del gráfico.
1.4.13. Histograma
Como observamos en nuestro boxplot, muchos municipios, especialmente los de la zona central,
están muy por encima de la media de ingresos por zona. Podemos ver la distribución de estos
datos a través de un histograma. Construir un histograma es una tarea fácil, y como se mencionó
anteriormente, geom_histogram no tiene un eje y explícito, ya que cuenta la frecuencia de un
evento dentro de un intervalo.
Figura 1.25: La versión más simple de un histograma de los ingresos fiscales del municipio.
Como podemos ver, el gráfico da una “Advertencia” que indica la existencia de “738 filas que
contienen valores no finitos”. Esta advertencia ha estado presente a lo largo de todo este capí-
tulo, y no significa nada más que “Hay valores desconocidos dentro de esta variable” y se debe
a que no hay datos de los primeros años. Así que no te preocupes, si filtramos los datos con
filter(!is.na(ingreso)), esta advertencia seguramente desaparecerá.
Además, la consola da el siguiente mensaje: stat_bin() usando bins = 30. Elija mejores valores
con binwidth. Simplemente, dice que es posible modificar los intervalos para el histograma.
El siguiente paso es modificar el eje x. Por otro lado, intentaremos cambiar el número de inter-
valos con bins.
Figura 1.26: Histograma de los ingresos fiscales del municipio con una escala corregida en x.
Consulta
Considerando el número de valores atípicos que encontramos, eliminaremos los municipios con
ingresos superiores a 50.000.000 dólares. También podemos examinar la frecuencia por zona. Como
cuando usamos color con geom_boxplot, usaremos fill con geom_histogram.
Figura 1.27: Versión pulida de nuestro histograma en el que haremos ‘fill’ por zona..
Es probable que una de tus mayores preocupaciones sea si las dos variables que estás estudiando
están relacionadas de alguna manera. Con ggplot2 esto es fácil de verificar. En este caso, tenemos
dos variables continuas: la tasa de pobreza, del conjunto de datos de CASEN, y los ingresos
municipales. Siguiendo la teoría, debería haber algún tipo de correlación: cuanto mayor sea el
ingreso municipal, menor será la tasa de pobreza en el municipio. Creamos nuestros datos:
Para este tipo de gráfico, usaremos geom_smooth. Con este objeto, puedes modificar la forma
en que las variables se relacionan con method. También puedes introducir tus propias fórmulas.
Por defecto, se especifica una relación lineal entre las variables, por lo que no es necesario escribirla.
Parece vacía, ¿no? Normalmente, usamos geom_smooth con otras figuras geométricas, como
geom_point, para indicar la posición de las columnas en el espacio. Usamos alpha para ver
la superposición de los puntos. Como no son demasiados, no hay problemas para ver cómo se
distribuyen.
Ahora podemos hacer dos mejoras. Primero, insertaremos el título y el nombre de los ejes.
Segundo, en geom_x_continuous especificaremos donde empieza y acaba nuestra gráfica. Ya
habíamos usado esto con geom_line.
Claramente, hay una correlación negativa entre ambas variables. ¡Esto es lo que esperábamos!
Ahora, podemos calcular la correlación entre ambas variables, para estar más seguros de los resul-
tados obtenidos visualmente:
La correlación entre ambas variables es de -0,27. Sería interesante añadir esta información en
el gráfico. Podemos hacer esto con annotate(). Sólo necesitamos especificar el tipo de objeto
geométrico que queremos generar. En este caso, lo que queremos crear es el texto geom = "text",
pero podría ser una caja que resalte un punto específico en el gráfico geom = rect" o una línea
geom = "segment". Especificamos dónde queremos ubicarlo y, finalmente, anotamos lo que
queremos anotar.
1.4.15. patchwork
Esta es una gran herramienta para combinar diferentes ggplots en el mismo gráfico. Usarás +,
| y / para organizarlos.
1.4.16. Ejemplo
En esta sección se centra en ggplot2, uno de los paquetes principales del Tidyverse. Para acceder
a sus funciones y las páginas de ayuda que utilizaremos para el ejemlo, debes cargar el Tidyverse
ejecutando este código:
Recuerda que solo es necesario que instales los paquetes una única vez; sin embargo, tendrás
que cargarlos siempre que inicies una nueva sesión.
En esta sección trabajaremos con el conjunto de datos, que contiene observaciones para 38
modelos de automóviles recopiladas por la Agencia de Protección Ambiental de los EE. UU.
Además del Tidyverse, es necesario que cargue el paquete datos, ya que en él están contenidas
las versiones en español de los datos:
Primeros pasos
¿los automóviles con motores grandes consumen más combustible que los automóviles con mo-
tores pequeños?
Probablemente ya tengas una respuesta, pero trata de responder de forma precisa. ¿Cómo es
la relación entre el tamaño del motor y la eficiencia del combustible? ¿Es positiva? ¿Es negativa?
¿Es lineal o no lineal?
Puedes poner a prueba tu respuesta empleando el data frame millas que se encuentra en el
paquete datos (datos::millas). Un data frame es una colección rectangular de variables (columnas)
y observaciones (filas).
2. autopista: eficiencia del uso de combustible de un automóvil en carretera, en millas por galón.
Al recorrer la misma distancia, un automóvil de baja eficiencia consume más combustible
que un automóvil de alta eficiencia.
Para obtener más información sobre el data frame millas, abre su página de ayuda ejecutando
?millas.
Para gráficar millas, ejecuta este código para poner cilindrada en el eje x y autopista en el eje
y:
El gráfico muestra una relación negativa entre el tamaño del motor (cilindrada) y la eficiencia
del combustible (autopista). En otras palabras, los vehículos con motores grandes usan más com-
bustible. Este resultado, ¿confirma o refuta tu hipótesis acerca de la relación entre la eficiencia del
combustible y el tamaño del motor?
Mapeos estéticos
Los colores revelan que muchos de los puntos inusuales son automóviles de dos asientos. ¡Estos
no parecen híbridos y son, de hecho, automóviles deportivos! Los automóviles deportivos tienen
motores grandes, como las camionetas todo terreno o pickups, pero su cuerpo es pequeño, como
los automóviles medianos y compactos, lo que mejora su consumo de gasolina. En retrospectiva,
es poco probable que estos automóviles sean híbridos, ya que tienen motores grandes.
Separar en facetas
Objetos geométricos
Ambos gráficos contienen las mismas variables x e y, y ambos describen los mismos datos. Pero
los gráficos no son idénticos. Cada uno utiliza un objeto visual diferente para representar los datos.
En la sintaxis de ggplot2, decimos que usan diferentes geoms.
Un geom es el objeto geométrico usado para representar datos de forma gráfica. La gente a
menudo llama a los gráficos por el tipo de geom que utiliza. Por ejemplo, los diagramas de barras
usan geoms de barra (bar), los diagramas de líneas usan geoms de línea (line), los diagramas de caja
usan geoms de diagrama de caja (boxplot), y así sucesivamente. En inglés, los diagramas de puntos
(llamados scatterplots) rompen la tendencia; ellos usan geom de punto (o point). Como vemos
arriba, puedes usar diferentes geoms para graficar los mismos datos. La gráfica de la izquierda usa el
geom de punto (geom_point()), y la gráfica de la derecha usa el geom suavizado (geom_smooth()),
una línea suavizada ajustada a los datos.
Para cambiar el geom de tu gráfico, modifica la función geom que acompaña a ggplot(). Por
ejemplo, para hacer los gráficos que se muestran arriba, puedes usar este código:
Cada función geom en ggplot2 toma un argumento de mapping. Sin embargo, no todas las
estéticas funcionan con todos los geom. Puedes establecer la forma para un punto, pero no puedes
establecer la “forma” de una línea. Por otro lado, para una línea podrías elegir el tipo de línea
(linetype). geom_smooth() dibujará una línea diferente, con un tipo de línea distinto (linetype),
para cada valor único de la variable que asignes al tipo de línea (linetype).
Aquí geom_smooth() separa los automóviles en tres líneas en función de su valor de traccion,
que describe el tipo de transmisión de un automóvil. Una línea describe todos los puntos con un
valor de 4, otra línea los de valor d, y una tercera línea describe los puntos con un valor t. Aquí,
4 significa tracción en las cuatro ruedas, d tracción delantera y t tracción trasera.
Muchos geoms, como geom_smooth(), usan un único objeto geométrico para mostrar múltiples
filas de datos. Con estos geoms, puedes asignar la estética de group (grupo) a una variable categó-
rica para graficar múltiples objetos. ggplot2 representará un objeto distinto por cada valor único
de la variable de agrupamiento. En la práctica, ggplot2 agrupará automáticamente los datos para
estos geoms siempre que se asigne una estética a una variable discreta (como en el ejemplo del
tipo de línea o linetype). Es conveniente confiar en esta característica porque la estética del grupo
en sí misma no agrega una leyenda o características distintivas a los geoms.
En el eje x, el gráfico muestra corte, una variable de diamantes. En el eje y muestra ‘recuento’
(count), ¡pero el recuento no es una variable en diamantes! ¿De dónde viene? Muchos gráficos,
como los diagramas de dispersión (scatterplots), grafican los valores brutos de un conjunto de
datos. Otros gráficos, como los de barras, calculan nuevos valores para presentar:
♠ Los gráficos de barras, los histogramas y los polígonos de frecuencia almacenan los datos y
luego grafican los conteos por contenedores, es decir, el número de puntos que caen en cada
contenedor.
♠ los gráficos de líneas suavizadas (smoothers) ajustan un modelo a los datos y luego grafican
las predicciones del modelo.
El algoritmo utilizado para calcular nuevos valores para un gráfico se llama stat, abreviatura
en inglés de transformación estadística (stattistical transformation). La siguiente figura describe
cómo funciona este proceso con geom_bar().
Puedes aprender acerca de qué stat usa cada geom inspeccionando el valor predeterminado para
el argumento stat. Por ejemplo, ?geom_bar muestra que el valor predeterminado para stat es
“count”, lo que significa que geom_bar() usa statvcount(). stat_count() está documentado en la
misma página que geom_bar(), y si te desplazas hacia abajo puedes encontrar una sección llamada
“Computed variables” (Variables calculadas). Ahí se describe cómo calcula dos nuevas variables:
count y prop.
Por lo general, puedes usar geoms y estadísticas de forma intercambiable. Por ejemplo, puedes
Esto funciona porque cada geom tiene una estadística predeterminada, y cada estadística tiene
un geom predeterminado. Esto significa que generalmente puedes usar geoms sin preocuparte por
la transformación estadística subyacente.
Hay tres razones por las que podrías necesitar usar una estadística explícitamente:
2. Es posible que desees anular el mapeo predeterminado de las variables transformadas a las
estéticas. Por ejemplo, es posible que desees mostrar un gráfico de barras de proporciones,
en lugar de un recuento:
Para encontrar las variables calculadas por stat, busca la sección de ayuda titulada “Compute
Variables”.
3. Es posible que desees resaltar la transformación estadística en tu código. Por ejemplo, puedes
usar stat_summary(), que resume los valores de y para cada valor único de x, para así resaltar
el resumen que se está computando:
Siempre debemos sospechar de cualquier conjunto de datos (grande o pequeño) que parezca
perfecto.
Estos resultados pueden ser un modelo, una agrupación de datos en diferentes grupos o simple-
mente una serie de variables importantes que representan a todos los datos de forma significativa,
ahorrándose tiempo y cantidad de procesamientos.
Por ejemplo: una agencia de viajes desea identificar grupos de personas con gustos similares
y así organizar ofertas hacia grupos. Para ello, analiza los viajes realizados por sus clientes
e infiere un modelo descriptivo que caracteriza estos grupos.
Las principales técnicas descriptivas que usa las MD son:
a) Metodo de Clasificación.
b) Árboles de Desición.
c) Curva de Rock.
d ) Redes Bayesianas.
e) Naivas Vayes.
f ) KNN
Metodo Exploratorio
Pretende identificar patrones (tendencias, correlaciones, anomalías, grupos, datos atípicos, etc.)
que explican o resumen las relaciones subyacentes en los datos, es decir, exploran las propiedades
de los datos examinados.
67
2. Metodo Exploratorio
2. Permite transformar las variables originales, en general correladas, en nuevas variables inco-
rreladas, facilitando la interpretación de los datos.
En este apartado presentamos únicamente esta técnica como una herramienta exploratoria para
facilitar la descripción y la interpretación de los datos. El problema de inferir si las propiedades
de reducción de la dimensión encontradas en los datos pueden extenderse a una población, se
estudiará más adelante.
Cuando se recoge la información de una muestra de datos, lo mas frecuente es tomar el mayor
número posible de variables con el objetivo de recabar la mayor información.
2. La fuerte correlación que muchas veces se presenta entre las variables: si tomamos demasiadas
variables (cosa que en general sucede cuando no se sabe demasiado sobre los datos o sólo se
tiene ánimo exploratorio), lo normal es que estén relacionadas o que midan lo mismo bajo
distintos puntos de vista. Por ejemplo, en estudios médicos, la presión sanguínea a la salida
del corazón y a la salida de los pulmones están fuertemente relacionadas.
Se hace necesario, pues, reducir el número de variables. Es importante resaltar el hecho de que
el concepto de mayor información se relaciona con el de mayor variabilidad o varianza. Cuanto
mayor sea la variabilidad de los datos (varianza) se considera que existe mayor información, lo
cual está relacionado con el concepto de entropía.
Es decir, ante un banco de datos con muchas variables relacionadas, el objetivo será reducirlas
a un menor número perdiendo la menor cantidad de información posible.
Para ello intentaremos eliminar la(s) posible(s) redundancia(s) entre ellas, dando lugar a nuevas
componentes (o factores), que serán una combinación lienal de las variables originales, y además
serán independientes entre sí.
Para estudiar las relaciones que se presentan entre p variables correlacionadas se puede transfor-
mar el conjunto original de variables en otro nuevo conjunto de nuevas variables incorrelacionadas
entre si ( que no tengas repetición o redundancia en la información) llamado conjunto de compo-
nentes principales
Las nuevas variables con combinaciones lineales de las anteriores y se van constituyendo según
el orden de importancia en cuanto a la variabilidad total que recoge la muestra.
De mo ideal se busca z < p variables que sean combinación lineales de las p originales y que
estén incorreladas (si, que tengan poca o ninguna correlación entre ellas para que aporten más
información), recogiendo la mayor parte de la información o variabilidad de los datos.
Esto es:
Se considera una serie de variables (x1 , x2 , ..., xp ) sobre un grupo de objetos o individuos y se
trata de calcular, a partir de ellas, un nuevo conjunto de variables y1 , y2 , ..., yp , incorreladas entre
sí, cuyas varianzas vayan decreciendo progresivamente.
Cada yj (donde j = 1, ..., p) es una combinación lineal de las x1 , x2 , ..., xp originales, es decir:
Bibliografia
[2 ] h
[2 ] h
[2 ] h
[2 ] h
[2 ] h
[2 ] h
[2 ] h
[2 ] h
[2 ] h
[1 ] https://arcruz0.github.io/libroadp/basic-r.html.
[2 ] https://analisisdedatos.net/mineria/index.php.
[2 ] h
70