Capítulo 1 Introducción
El análisis de datos es el pilar fundamental de Data Analytics y Data Science. Por supuesto, el uso herramientas computacionales es importante. A lo largo de este materal usaremos el R
, pero muchos de los conceptos aquí expuestos pueden trabajarse, sin problema, en otro lenguaje como Python
o Julia
.
En la Universidad del Norte, los estudiantes tienen la posibilidad de tomar, a nivel de pregrado, cursos de Análisis de Datos. Parcticularmente, los estudiantes de la División de Ingenierías pueden tomar los cursos de :
- Análisis de Datos en Ingeniería I, ofrecido por el Departamento de Ingeniería Industrial;
- Análisis de Datos en Ingeniería II, ofrecido por el Departamento de Ingeniería Industrial;
- Machine Learning, ofrecido por el Departamento de Ingeniería Eléctrica y Electrónica y
- Analítica de Datos Avanzada; ofrecido por el Departamento de Ingeniería Industrial.
Estos cursos, cuya dificultad aumenta conforme a la enumeración anterior, permiten a los estudiantes de la División de Ingenierías tener herramientas básicas, intermedias y avanzadoas para convertir datos en información.
1.2 R
R
es un entorno de programación multiplataforma y un lenguaje de programación orientado a objetos similar a S
, pero bajo licencia GNU, para el análisis gráfico y estadístico de datos creado en por Robert Gentleman y Ross Ihaka en Agosto de 1993. La página oficial de R
es https://www.r-project.org/.

Figura 1.1: Logo oficial del R
.
Por ser multiplataforma, R
puede utilizarse en diferentes sistemas operativos, incluyendo Windows, macos y varias distribuciones de Linux.

Figura 1.2: Qué es R
? Ver https://www.youtube.com/watch?v=XcBLEVknqvY.
Desde su concepción y gracias a su constante evolución,
R
proporciona una gran cantidad de métodos estadísticos y gráficos, y es altamente extendible. Esta última característica permite el desarrollo e implementación de nuevos métodos estadísticos y nuevos tipos de gráficos, además de la automatización de reportes con relativa facilidad.
1.2.2 CRAN
CRAN
es el acrónimo de C
omprehensive, R
, A
rchive, N
etwork, y corresponde a una red de servidores ftp y web de todo el mundo que almacenan versiones idénticas y actualizadas de código y documentación para R
.
El sitio web oficial es https://cran.r-project.org/
1.2.3 Descarga e instalación
A Septiembre de 2021, la versión más reciente de R
es la 4.1.1, también denominada “Kick Things”.

Figura 1.3: Página oficial del R
. Note que la versión más reciente es la 4.1.1.
Dependiendo del sistema operativo, R
puede descargarse en los siguientes enlances:
Las versiones de R
tienen un ciclo de actualización cada 6 meses, y es altamente recomendable tener instalada la última versión del programa en el computador.
Una vez descargado el instalador, basta con seguir las instrucciones para instalar el programa con las opciones por defecto.
1.2.4 Paquetes
Los paquetes o packages son colecciones de funciones y/o datos que ayudan a potencializar las funcionalidades de R
. Cada paquete tiene su documentación y, en muchos casos, ejemplos concretos que permiten comenzar a utilizarlos de inmediato.

Figura 1.4: Algnos paquetes de R
.
Existen paquetes para visualización, minería de texto, automatización de reportes y mucho más. La lista completa de paquetes se encuentra aquí. A la fecha existen href=“available_packages_by_date.html” paquetes; algunos ejemplos conocidos son MASS
, ggplot2
, shiny
, y caret
, entre otros.
Para utilizar un paquete, debemos seguir dos pasos
- Instalar el paquete; y
- cargarlo a la sesión de trabajo.
La instalación de los paquetes se realiza utilizando la función install.packages('PackageName')
, donde el argumento PackageName
corresponde al nombre del paquete que quiere instalarse. Por ejemplo, si quisiéramos instalar el paquete DescTools
, escribimos:
Posteriormente, aparecerán algunos mensajes que nos indican el progreso de dicha instalación.
Cuando el proceso concluya, procedemos cargar el paquete a la sesión de trabajo. Para ello, utilizamos la función library('PackageName')
. En nuestro caso, reemplazamos el argumento PackageName
por el nombre del paquete que quieres utilizar:
Con esta instrucción, R
importa las funciones contenidas en el paquete DescTools
a la sesión de trabajo actual.
install.packages('PackageName')
sólo debe ejecutarse una vez. Sin embargo, es necesario ejecutar library('PackageName')
cada que inicies una sesión en R
. Esto se debe a que aunque hayas instalado las funciones de un paquete con anterioridad, las sesiones de R
se inician sólo con los objetos y funciones de base.
1.2.5 Operadores básicos
Operadores aritméticos
.](images/artimeticos.png)
Figura 1.5: Operadores artiméticos en R
. Tomado de R para principantes.
Operadores relacionales
.](images/relacionales.png)
Figura 1.6: Operadores relacionales en R
. Tomado de R para principantes.
Operadores lógicos
.](images/logicos.png)
Figura 1.7: Operadores lógicos en R
. Tomado de R para principantes.
1.2.6 Creación de funciones
Una de las grandes ventajas de R
es la posibilidad de construir y/o agregar funciones propias. Como se mencionó anteriormente, los paquetes están conformados por funciones, además de datos.
Una función es un conjunto de instrucciones organizadas para realizar una tarea específica y corresponde a un objeto que el intérprete de R
es capaz de entender y utilizar sus argumentos para completar una acción.
Algunas funciones disponibles por defecto en R
son
La estructura de una función es
.](images/Rfunctions.png)
Figura 1.8: Estructura de una funcíon en R
. Tomado de Learn by <example>.
lo cual implica que toda función, como mínimo, cuatro componentes:
name
: Corresponde al nombre de la función. Se recomienda usar guión bajo o nombres con tipografía camello para nombrarlas, es decir,calcula_media
yGraficoHist
. Bajo ninguna circunstancia deben usarse nombres comocoeficiente-variacion
.args
: Este componente de la función hace referencia a los argumentos de esta. Por argumentos denominamos a las entradas que requiere la función para hacer su trabajo. Una función puede tener varios argumentos; por ejemplo la funciónt.test
tiene los argumentosx
,y
,alternative
,mu
,paired
,var.equal
, yconf.level
. Algunas veces los argumentos tienen valores por defecto. De esta forma, cuando se utiliza la función, no es necesario especificar el valor de dicho argumento. Por ejemplo, en la funciónmean
, el argumentotrim = 0
.function body
: Contiene los pasos, procedimientos y cálculos que deben hacerse para producir un resultado.value
: Este es el resultado de la función. Dependiendo de qué tan compleja sea la función, elvalue
puede ser un escalar, undata.frame
, una lista, un archivo de texto o un gráfico. Hay muchas posibilidades.
Ejemplo
Como ilustración, construyamos una función que, dado un vector de datos de cualquier longitud, calcule el coeficiente de variación (CV).
El CV está definido como
\[CV = \frac{s}{\bar{x}}\] donde \(s\) es la desviación estándar y \(\bar{x}\) es la media muestral.
Si el vector de datos es
entonces nuestra función, que llamaremos CoefVar
, debe tener como argumento dicho vector. Internamente, CoefVar
debe calcular la desviación estándar y la media muestral de v
. Por lo tanto,
## cálculo del coeficiente de variación
## v es un vector numérico
CoefVar <- function(v){
## cálculos
m <- mean(v) ## media
s <- sd(v) ## s
resultado <- s/m ## CV
## output
return(resultado)
}
Ahora, para usar nuestra función CoefVar
con el vector v
hacemos
## [1] 0.4784937
Teniendo el valor del CV, podríamos determinar si la media muestral es una cantidad representativa del conjunto de datos. Para ello comparamos el resultado de \(100\times\)CoefVar
con 30%.
## función para determinar si la media representativa
representativa <- function(v, cutoff = 30){
CV_p <- 100*CoefVar(v)
decision <- ifelse(CV_p > cutoff, 'no', 'si')
list(CV_p = CV_p, decision = decision)
}
Observe que en esta función incluimos un argumento denominado cutoff
. Por defecto, cutoff = 30
. Además. la eultima línea de la función comienza con list
, lo cual implica que el resultado de la función será una lista de dos componentes: CV_p
y decision
.
Veamos qué ocurre con el vector v
utilizando los valores por defecto:
## $CV_p
## [1] 47.84937
##
## $decision
## [1] "no"
Por lo tanto, el CV del vector v
es 0.478. Como \(100\times\)CVp
\(>30\), la decisión es que la media no
es representativa de los datos.
Si queremos cambiar el argumento cutoff
basta con hacer
## $CV_p
## [1] 47.84937
##
## $decision
## [1] "si"
Observe que decision
es diferente esta vez. Si queremos extraer el segundo elemento del resultado obtenido con la función representativa
, debemos asignar dicho resultado a un objeto y posteriormente operar sobre él de la siguiente manera:
## [1] "si"
1.2.7 Obteniendo ayuda
Hay múltiples formas de acceder a la ayuda cuando trabajamos con R
. En https://www.r-project.org/help.html se encuentra una descripción de cómo hacerlo.
Podemos buscar ayuda, principalmente, a través de la consola del R
utilizando los siguientes mecanismos:
help
y?
. Si requerimos ayuda sobre la funciónmean
, podemos escribir?mean
ohelp(mean)
en la consola delR
. El resultado será:

Figura 1.9: Resultado de escribir ?mean
en la consola del R
.
apropos('word')
. Esta función enR
permite encontrar todas las funciones del espacio de tabajo que contienen la palabraword
. Por ejemplo,apropos('mean')
produce
## [1] ".colMeans" ".rowMeans" "colMeans" "kmeans"
## [5] "mean" "mean.Date" "mean.default" "mean.difftime"
## [9] "mean.POSIXct" "mean.POSIXlt" "rowMeans" "weighted.mean"
Si queremos saber qué hace rowMeans
o cuáles son sus argumentos, basta con escribir ?rowMeans
o help(rowMeans)
en la consola.
RSiteSearch()
. Esta función busca información en las páginas de ayuda de las todas las funciones y en las viñetas de todos los paquetes deCRAN
, así como enCRAN Task Views
.R FAQs. Hay tres listas principales de preguntas frecuentes (FAQs) que se actualizan periódicamente para reflejar las preguntas más frecuentes de los usuarios de
R
:R Main FAQs
,R FAQs para Windows
yR FAQs para macos
Stack overflow. Este es un sitio bien organizado para ayuda y discusiones sobre programación. Para acceder directamente a las discusiones relacionadas con
R
, se recomienda visitar https://stackoverflow.com/questions/tagged/rR-help-es. Esta es una lista de correo, creada en 2009, para solicitar ayuda sobre
R
en español y se entiende como un complemento social a la documentación, libros, etc. disponibles sobreR
. Puede acceder directamente a los archivos en https://stat.ethz.ch/pipermail/r-help-es/
1.2.8 Lectura de datos
Los datos se almacenan de múltiples formas. Los formatos más comunes son
- Archivos de texto cuya extensión es
.txt
; - hojas de cálculo de Excel, cuya extensión es
.xls
o.xlsx
; - archivos separados por coma, cuya extensión es
.csv
; - archivos con extensión
.dat
; - archivos con extensión
.sav
provenientes de SPSS; y - archivos disponibles en Google Drive o Dropbox.
En R
existen diferentes funciones que permiten leer casi cualquier tipo de datos. Algunas funciones clave son
scan()
read.table()
read.csv()
readLines()
read.xls() # del paquete gdata
fread() # del paquete data.table
Algunos ejemplos adicionales pueden encontrarse en el Capítulo8 del Manual de R, o en el Capítulo 11 de R for Data Science.
Por ejemplo, si tenemos el URL https://bit.ly/2RmO1OR donde se encuentran almacenados unos datos, podemos utilizar la función read.table
para leerlos en R
:
## lectura de datos desde un URL
url <- "https://bit.ly/2RmO1OR"
d <- read.table(url, header = TRUE)
## primeras 10 filas
head(d, 10)
## Resistencia Edad
## 1 2158.70 15.50
## 2 1678.15 23.75
## 3 2316.00 8.00
## 4 2061.30 17.00
## 5 2207.50 5.50
## 6 1708.30 19.00
## 7 1784.70 24.00
## 8 2575.00 2.50
## 9 2357.90 7.50
## 10 2256.70 11.00
Ahora, utilizar los datos contenidos en el objeto d
podemos aplicar diferentes técnicas de Analítica de Datos para extrer información. Por ejemplo, podemos construir un diagrama de dispersión para explorar la relación que existe entre las variables Resistencia
y Edad
:
## paquetes
library(ggplot2)
library(ggExtra)
## gráfico
p <- ggplot(d, aes(x = Edad, y= Resistencia)) +
geom_point() +
theme(legend.position="none") + theme_minimal()
ggMarginal(p, type="density")

Figura 1.10: Diagrama de dispersión y densidades para Resistencia
vs. Edad
.
1.3 RStudio
RStudio es un entorno de desarrollo integrado (IDE) para R
disponible en ediciones comerciales y de código abierto y se ejecuta en el escritorio (Windows, macos y Linux).

Figura 1.11: Página oficial del R
. Note que la versión más reciente es la 4.1.1.
RStudio incluye una consola, un editor que resalta la sintaxis y admite la ejecución directa del código, así como herramientas para el trazado, el historial, la depuración y la gestión del espacio de trabajo.
Para descargar Rstudio, basta con visitar la página oficial. Una vez allí, basta escoger la versión acorde con nuestro sistema operativo, preferiblemente gratuita.
Una vez descargado, es suficiente con abrir el instalador y seguir las instrucciones. Cuando el proceso termine, el siguiente paso es abrirl el programa haciendo click en el ícono de RStudio y vse abrirá una ventana similar a esto:
.](images/RstudioIDE.png)
Figura 1.12: RStudio IDE. Tomado de Diego Calvo.
Por ser un IDE, RStudio está compuesto por cuatro paneles:
Panel 1
. Está ubicado en la esquina superior izquierda. En este panel se escriben los scripts, los cuales corresponde a instrucciones queR
puede leer y ejecutar.Panel 2
. Está ubicado en la parte superior derecha. Este panel está compuesto, principalmente, por dos pestañas:Workspace
yHistory
. La pestañaWorkspace
muestra los objetos y funciones creados dutante la sesión de trabajo.Panel 3
. Este panel, ubicado en la esquina inferior derecha, está compuesto por varias pestañas, incuyendoFiles
,Plots
,Packages
yHelp
. La pestañaFiles
muestra los archivos presentes en el directorio de trabajo;Plots
muestra los diferentes gráficos que se crean en la sesión;Packages
muestra los diferentes paquetes instalados enR
y aquellos en uso durante la sesión de trabajo; y, finalmente,Help
nos muestra la ayuda de funciones y/o paquetes.Panel 4
. Este panel, ubicado en la esquina inferior izquierda, corresponde a la consola delR
. En este panel todas las instrucciones o scripts son interpretadas y ejecutadas por el programa.
Tools
–> Global Options...
–> Pane Layout
.