Introducción al análisis de datos en R

Este notebook fue construido en R Studio con R Markdown. Presenta una breve introducción al análisis de datos en R, con lo cual pretende ser una pequeña guía para iniciar el proceso de aprendizaje de esta gran herramienta.

Finalizado el estudio de este recurso estará en capacidad de:

  • Instalar y usar R y R Studio
  • Realizar procesos de análisis de datos en R Studio
  • Realizar análisis gráfico
  • Obtener insights, patrones, tendencias y relaciones
  • Cargar datos desde PC y construir análisis

¨R es una de las herramientas más usadas por la comunidad de cientificos de datos a nivel mundial, una de las grandes ventajas de R es que es software libre, por lo que se puede tener siempre instalada la última versión, para la instalación es necesario ir al repositorio cran: https://cran.r-project.org/ utilizando las opciones por defecto.

R install

R install

A continuación, algunos temas y conceptos que son importantes para entender la temática y familiarizarse con la herramienta de análisis de datos R, uno de los lenguaje de programación y entorno computacional de código abierto más utilizado por la comunidad de científicos de datos, dedicado a la estadística, análisis de datos y machine learning, entre otros.

Vectores

Un vector es la estructura de datos más sencilla en R. Un vector es una colección de uno o más datos del mismo tipo. Todos los vectores tienen tres propiedades:

  • Tipo: Un vector tiene el mismo tipo que los datos que contiene. Si tenemos un vector que contiene datos de tipo numérico, el vector será también de tipo numérico. Los vectores son atómicos, pues sólo pueden contener datos de un sólo tipo, no es posible mezclar datos de tipos diferentes dentro de ellos.
  • Largo: Es el número de elementos que contiene un vector. El largo es la única dimensión que tiene esta estructura de datos.
  • Atributos: Los vectores pueden tener metadatos de muchos tipos, los cuales describen características de los datos que contienen. Todos ellos son incluidos en esta propiedad.
5
## [1] 5
# Revisemos si es vector
is.vector(5)
## [1] TRUE
# ahora veamos la longitud
length(5)
## [1] 1

Creación de vectores

# vector numérico
altura = c(180, 175, 181, 165, 183, 174, 175, 166, 191, 155)
Peso = c(90, 80, 82, 65, 75, 70, 71, 60, 92, 62)

# vector cadena de texto o string

nombre = c("Carlos","Juan", "José", "Ana", "Maria", "Eduardo", "Natalia", "Paola", "Rodrigo", "Edna" )

DataFrame

Los data frames son estructuras de datos de dos dimensiones (rectangulares, filas y columnas) que pueden contener datos de diferentes tipos, por lo tanto, son heterogéneas. Esta estructura de datos es la más usada para realizar análisis de datos y seguro le resultará familiar si has trabajado con otros paquetes estadísticos.

Los datos son el componente clave en la ciencia de datos. Un conjunto de datos es una instancia particular de datos que se utiliza para el análisis o la construcción de modelos en un momento dado. Un conjunto de datos viene en diferentes tipos, como datos numéricos, datos categóricos, datos de texto, datos de imagen, datos de voz y datos de video. Un conjunto de datos puede ser estático (no cambia) o dinámico (cambia con el tiempo, por ejemplo, los precios de las acciones).

A continuación, se crea un DataFrame, tradicionalmente se demonina con las letras df. También se usarán varios comandos que ayudan a conocer la estructura de los datos, conocer las variables y tipos de datos que lo componen y algunas medidas de tendencia central.

# Unión de los vectores en un objeto tipo dataframe
df = data.frame(nombre, altura, Peso)
df
##     nombre altura Peso
## 1   Carlos    180   90
## 2     Juan    175   80
## 3     José    181   82
## 4      Ana    165   65
## 5    Maria    183   75
## 6  Eduardo    174   70
## 7  Natalia    175   71
## 8    Paola    166   60
## 9  Rodrigo    191   92
## 10    Edna    155   62
# veamos las dimensiones
dim(df)
## [1] 10  3
# Veamos la estructura del dataframe
str(df)
## 'data.frame':    10 obs. of  3 variables:
##  $ nombre: Factor w/ 10 levels "Ana","Carlos",..: 2 6 5 1 7 4 8 9 10 3
##  $ altura: num  180 175 181 165 183 174 175 166 191 155
##  $ Peso  : num  90 80 82 65 75 70 71 60 92 62
# Veamos el resumen del dataframe
summary(df)
##      nombre      altura           Peso      
##  Ana    :1   Min.   :155.0   Min.   :60.00  
##  Carlos :1   1st Qu.:168.0   1st Qu.:66.25  
##  Edna   :1   Median :175.0   Median :73.00  
##  Eduardo:1   Mean   :174.5   Mean   :74.70  
##  José   :1   3rd Qu.:180.8   3rd Qu.:81.50  
##  Juan   :1   Max.   :191.0   Max.   :92.00  
##  (Other):4

Medidas de tendencia cental

Una medida de tendencia central es un resumen de un número de los datos que generalmente describe el centro de los datos, hay tres tipos:

  1. Media: La media se define como la relación entre la suma de todas las observaciones en los datos y el número total de observaciones. Esto también se conoce como promedio. Por lo tanto, la media es un número alrededor del cual se extiende todo el conjunto de datos.

\[ Media = \frac {17,16,21,18,15,17,21,19,11,23}{10} = \frac{187}{10} =17.8 \]

  1. Mediana: la mediana es el punto que divide todos los datos en dos mitades iguales. La mitad de los datos es menor que la mediana, y la otra mitad es mayor que la misma. La mediana se calcula organizando primero los datos en orden ascendente o descendente.

    • Si el número de observaciones es impar, la observación intermedia da la mediana en forma ordenada.
    • Si el número de observaciones es par, la mediana está dada por la media de las dos observaciones intermedias en forma ordenada. \[datos = 11, 15, 16, 17, 17, 18, 19, 21, 21, 23\]

\[ Mediana = \frac {5^{ta} obs + 6^{ta}obs}{2} = \frac{17+18}{2} =17.5 \]

  1. Moda: es el número que tiene la frecuencia máxima en todo el conjunto de datos, o en otras palabras, la moda es el número que aparece la cantidad máxima de veces.

Medidas de dispersión

Las medidas de dispersión describen la difusión de los datos en torno al valor central (o las medidas de tendencia central)

  1. Varianza: la varianza mide hasta qué punto los datos están separados de la media. Una variación alta indica que los puntos de datos se extienden ampliamente y una variación pequeña indica que los puntos de datos están más cerca de la media del conjunto de datos. Se calcula como:

\[ Varianza = \frac{1}{N} \sum_{i=1}^{N} \left ( x_{i} - \bar{x}\right )^{2} \]

  1. Desviación estándar: la raíz cuadrada de la varianza se denomina desviación estándar. Se calcula como:

\[ Desviación Estándar =\sqrt{ \frac{1}{N} \sum_{i=1}^{N} \left ( x_{i} - \bar{x}\right )^{2}} \]

  1. Rango: el rango es la diferencia entre el valor máximo y el valor mínimo en el conjunto de datos. Se da como:

\[ range = Maximun - Minumun \]

  1. Cuartiles: los cuartiles son los puntos en el conjunto de datos que divide a éste en cuatro partes iguales. Q1, Q2 y Q3 son el primer, segundo y tercer cuartil del conjunto de datos.
    • El 25% de los puntos de datos están por debajo de Q1 y el 75% por encima.
    • El 50% de los puntos de datos se encuentran por debajo de Q2 y el 50% se encuentran por encima de ellos. Q2 no es más que mediana.
    • El 75% de los puntos de datos se encuentran por debajo de Q3 y el 25% se encuentran por encima de ellos.
    Cuartilesr
  2. Asimetría: la medida de asimetría en una distribución de probabilidad que se define por la inclinación. Puede ser positivo, negativo o indefinido.
    • Inclinación positiva: este es el caso cuando la cola en el lado derecho de la curva es más grande que la del lado izquierdo. Para estas distribuciones, la media es mayor que la moda.
    • Inclinación negativa: este es el caso cuando la cola en el lado izquierdo de la curva es más grande que la del lado derecho. Para estas distribuciones, la media es menor que el moda.
Asimetría

El método más utilizado para calcular la inclinación es:

\[ skenness = \frac{mean - median}{standard\; deviation}\]

Si la asimetría es cero, la distribución es simétrica. Si es negativo, la distribución estará sesgada negativamente y si es positiva, está sesgada positivamente.

  1. Correlación

Correlación entre variables “La Correlación es una técnica estadística usada para determinar la relación entre dos o más variables.”, puede ser de al menos dos variables o de una variable dependiente [Y] y dos o más variables independientes[X], denominada correlación múltiple.

Coeficiente de correlación El Coeficiente de Correlación es un valor cuantitativo de la relación entre dos o más variables, el cual puede variar desde -1.00 hasta 1.00. La correlación de proporcionalidad directa o positiva se establece con los valores +1.00 y de proporcionalidad inversa o negativa, con -1.00. No existe relación entre las variables cuando el coeficiente es de 0.00.

Correlación

Particar con los datos en R

media

mean(df$altura)
## [1] 174.5
mean(df$Peso)
## [1] 74.7
# Incluyamos una etiqueta
Prom_alt <- mean(df$altura)
sprintf("Promedio de la altura: %g", Prom_alt)
## [1] "Promedio de la altura: 174.5"
Prom_peso <- mean(df$Peso)
sprintf("Promedio de la peso: %g", Prom_peso)
## [1] "Promedio de la peso: 74.7"
# mediana
median(df$altura)
## [1] 175
median(df$Peso)
## [1] 73
# rango
range(df$altura)
## [1] 155 191
range(df$Peso)
## [1] 60 92
# Desviación estándar

desv_st_altura = paste("Desviación estándar de altura es =",round(sd(df$altura)),2)
desv_st_altura
## [1] "Desviación estándar de altura es = 10 2"
desv_st_peso = paste("Desviación estándar del peso es =",round(sd(df$Peso)),2)
desv_st_peso
## [1] "Desviación estándar del peso es = 11 2"
# Veamos los estadísticos principales
summary(df)
##      nombre      altura           Peso      
##  Ana    :1   Min.   :155.0   Min.   :60.00  
##  Carlos :1   1st Qu.:168.0   1st Qu.:66.25  
##  Edna   :1   Median :175.0   Median :73.00  
##  Eduardo:1   Mean   :174.5   Mean   :74.70  
##  José   :1   3rd Qu.:180.8   3rd Qu.:81.50  
##  Juan   :1   Max.   :191.0   Max.   :92.00  
##  (Other):4

Análisis gráfico

Histograma de la variable altura

hist(df$altura, main = "Histograma de la altura")

# Histograma de la variable peso
hist(df$Peso, main = "Histograma del peso")

# Gráfico de densidad de la variable altura
plot(density(df$altura), main = "Gráfico de densidad ", xlab = "Altura")
abline(v=mean(df$altura), col="red", lwd=2) # se incluye la linea con la media o promedio
abline(v=median(df$altura), col ="blue", lwd=2) # se incluye la linea con la mediana

# Gráfico de densidad de la variable peso
plot(density(df$Peso), main = "Gráfico de densidad ", xlab = "Peso")
abline(v=mean(df$Peso), col="red", lwd=2) # se incluye la linea con la media o promedio
abline(v=median(df$Peso), col ="blue", lwd=2) # se incluye la linea con la mediana

# Veamos un histograma y box plot en paralelo
par(mfrow=c(1,2))
boxplot(df$Peso)
hist(df$Peso)

# Realicemos un plot de las dos variables de interés
plot(df$altura, df$altura)

# Realicemos un plot de línea y puntos
plot(df$altura, df$altura, type = "o", col="red") # el parámetro type indica que queremos trazar la línea

Ejecicio con IRIS

En este ejercicio de introducción al análisis de datos en R, trabajaremos con un set de datos clasico, se trata de ISIS, el cual contiene 3 clases flores de 50 instancias cada una, donde cada clase se refiere a un tipo de planta de iris. El set de datos esta disponible en UCIrvine Machine Learning Repository.

El set de datos iris contiene las mediciones en centímetros de las variables longitud (Length) y ancho (Width) de los pétalos (Petal) y sépalos (Sepal) de 50 flores de cada una de las 3 especies (Species) del género Iris: Iris setosa, Iris versicolor e Iris virginica. Para obtener más información acerca de la base de datos iris tipea ?iris en la línea de comando de R.

Información general del data set:

  1. sepal length (longitud del sépalo) en centrímetros
  2. sepal width (ancho del sépalo) en centímetros
  3. petal length (longitud del pétalo) en centímetros
  4. petal width i(ancho del pétalo) en centímetros

  5. clase:
  • Iris Setosa
  • Iris Versicolour
  • Iris Virginica
# cargamos los datos
iris
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1            5.1         3.5          1.4         0.2     setosa
## 2            4.9         3.0          1.4         0.2     setosa
## 3            4.7         3.2          1.3         0.2     setosa
## 4            4.6         3.1          1.5         0.2     setosa
## 5            5.0         3.6          1.4         0.2     setosa
## 6            5.4         3.9          1.7         0.4     setosa
## 7            4.6         3.4          1.4         0.3     setosa
## 8            5.0         3.4          1.5         0.2     setosa
## 9            4.4         2.9          1.4         0.2     setosa
## 10           4.9         3.1          1.5         0.1     setosa
## 11           5.4         3.7          1.5         0.2     setosa
## 12           4.8         3.4          1.6         0.2     setosa
## 13           4.8         3.0          1.4         0.1     setosa
## 14           4.3         3.0          1.1         0.1     setosa
## 15           5.8         4.0          1.2         0.2     setosa
## 16           5.7         4.4          1.5         0.4     setosa
## 17           5.4         3.9          1.3         0.4     setosa
## 18           5.1         3.5          1.4         0.3     setosa
## 19           5.7         3.8          1.7         0.3     setosa
## 20           5.1         3.8          1.5         0.3     setosa
## 21           5.4         3.4          1.7         0.2     setosa
## 22           5.1         3.7          1.5         0.4     setosa
## 23           4.6         3.6          1.0         0.2     setosa
## 24           5.1         3.3          1.7         0.5     setosa
## 25           4.8         3.4          1.9         0.2     setosa
## 26           5.0         3.0          1.6         0.2     setosa
## 27           5.0         3.4          1.6         0.4     setosa
## 28           5.2         3.5          1.5         0.2     setosa
## 29           5.2         3.4          1.4         0.2     setosa
## 30           4.7         3.2          1.6         0.2     setosa
## 31           4.8         3.1          1.6         0.2     setosa
## 32           5.4         3.4          1.5         0.4     setosa
## 33           5.2         4.1          1.5         0.1     setosa
## 34           5.5         4.2          1.4         0.2     setosa
## 35           4.9         3.1          1.5         0.2     setosa
## 36           5.0         3.2          1.2         0.2     setosa
## 37           5.5         3.5          1.3         0.2     setosa
## 38           4.9         3.6          1.4         0.1     setosa
## 39           4.4         3.0          1.3         0.2     setosa
## 40           5.1         3.4          1.5         0.2     setosa
## 41           5.0         3.5          1.3         0.3     setosa
## 42           4.5         2.3          1.3         0.3     setosa
## 43           4.4         3.2          1.3         0.2     setosa
## 44           5.0         3.5          1.6         0.6     setosa
## 45           5.1         3.8          1.9         0.4     setosa
## 46           4.8         3.0          1.4         0.3     setosa
## 47           5.1         3.8          1.6         0.2     setosa
## 48           4.6         3.2          1.4         0.2     setosa
## 49           5.3         3.7          1.5         0.2     setosa
## 50           5.0         3.3          1.4         0.2     setosa
## 51           7.0         3.2          4.7         1.4 versicolor
## 52           6.4         3.2          4.5         1.5 versicolor
## 53           6.9         3.1          4.9         1.5 versicolor
## 54           5.5         2.3          4.0         1.3 versicolor
## 55           6.5         2.8          4.6         1.5 versicolor
## 56           5.7         2.8          4.5         1.3 versicolor
## 57           6.3         3.3          4.7         1.6 versicolor
## 58           4.9         2.4          3.3         1.0 versicolor
## 59           6.6         2.9          4.6         1.3 versicolor
## 60           5.2         2.7          3.9         1.4 versicolor
## 61           5.0         2.0          3.5         1.0 versicolor
## 62           5.9         3.0          4.2         1.5 versicolor
## 63           6.0         2.2          4.0         1.0 versicolor
## 64           6.1         2.9          4.7         1.4 versicolor
## 65           5.6         2.9          3.6         1.3 versicolor
## 66           6.7         3.1          4.4         1.4 versicolor
## 67           5.6         3.0          4.5         1.5 versicolor
## 68           5.8         2.7          4.1         1.0 versicolor
## 69           6.2         2.2          4.5         1.5 versicolor
## 70           5.6         2.5          3.9         1.1 versicolor
## 71           5.9         3.2          4.8         1.8 versicolor
## 72           6.1         2.8          4.0         1.3 versicolor
## 73           6.3         2.5          4.9         1.5 versicolor
## 74           6.1         2.8          4.7         1.2 versicolor
## 75           6.4         2.9          4.3         1.3 versicolor
## 76           6.6         3.0          4.4         1.4 versicolor
## 77           6.8         2.8          4.8         1.4 versicolor
## 78           6.7         3.0          5.0         1.7 versicolor
## 79           6.0         2.9          4.5         1.5 versicolor
## 80           5.7         2.6          3.5         1.0 versicolor
## 81           5.5         2.4          3.8         1.1 versicolor
## 82           5.5         2.4          3.7         1.0 versicolor
## 83           5.8         2.7          3.9         1.2 versicolor
## 84           6.0         2.7          5.1         1.6 versicolor
## 85           5.4         3.0          4.5         1.5 versicolor
## 86           6.0         3.4          4.5         1.6 versicolor
## 87           6.7         3.1          4.7         1.5 versicolor
## 88           6.3         2.3          4.4         1.3 versicolor
## 89           5.6         3.0          4.1         1.3 versicolor
## 90           5.5         2.5          4.0         1.3 versicolor
## 91           5.5         2.6          4.4         1.2 versicolor
## 92           6.1         3.0          4.6         1.4 versicolor
## 93           5.8         2.6          4.0         1.2 versicolor
## 94           5.0         2.3          3.3         1.0 versicolor
## 95           5.6         2.7          4.2         1.3 versicolor
## 96           5.7         3.0          4.2         1.2 versicolor
## 97           5.7         2.9          4.2         1.3 versicolor
## 98           6.2         2.9          4.3         1.3 versicolor
## 99           5.1         2.5          3.0         1.1 versicolor
## 100          5.7         2.8          4.1         1.3 versicolor
## 101          6.3         3.3          6.0         2.5  virginica
## 102          5.8         2.7          5.1         1.9  virginica
## 103          7.1         3.0          5.9         2.1  virginica
## 104          6.3         2.9          5.6         1.8  virginica
## 105          6.5         3.0          5.8         2.2  virginica
## 106          7.6         3.0          6.6         2.1  virginica
## 107          4.9         2.5          4.5         1.7  virginica
## 108          7.3         2.9          6.3         1.8  virginica
## 109          6.7         2.5          5.8         1.8  virginica
## 110          7.2         3.6          6.1         2.5  virginica
## 111          6.5         3.2          5.1         2.0  virginica
## 112          6.4         2.7          5.3         1.9  virginica
## 113          6.8         3.0          5.5         2.1  virginica
## 114          5.7         2.5          5.0         2.0  virginica
## 115          5.8         2.8          5.1         2.4  virginica
## 116          6.4         3.2          5.3         2.3  virginica
## 117          6.5         3.0          5.5         1.8  virginica
## 118          7.7         3.8          6.7         2.2  virginica
## 119          7.7         2.6          6.9         2.3  virginica
## 120          6.0         2.2          5.0         1.5  virginica
## 121          6.9         3.2          5.7         2.3  virginica
## 122          5.6         2.8          4.9         2.0  virginica
## 123          7.7         2.8          6.7         2.0  virginica
## 124          6.3         2.7          4.9         1.8  virginica
## 125          6.7         3.3          5.7         2.1  virginica
## 126          7.2         3.2          6.0         1.8  virginica
## 127          6.2         2.8          4.8         1.8  virginica
## 128          6.1         3.0          4.9         1.8  virginica
## 129          6.4         2.8          5.6         2.1  virginica
## 130          7.2         3.0          5.8         1.6  virginica
## 131          7.4         2.8          6.1         1.9  virginica
## 132          7.9         3.8          6.4         2.0  virginica
## 133          6.4         2.8          5.6         2.2  virginica
## 134          6.3         2.8          5.1         1.5  virginica
## 135          6.1         2.6          5.6         1.4  virginica
## 136          7.7         3.0          6.1         2.3  virginica
## 137          6.3         3.4          5.6         2.4  virginica
## 138          6.4         3.1          5.5         1.8  virginica
## 139          6.0         3.0          4.8         1.8  virginica
## 140          6.9         3.1          5.4         2.1  virginica
## 141          6.7         3.1          5.6         2.4  virginica
## 142          6.9         3.1          5.1         2.3  virginica
## 143          5.8         2.7          5.1         1.9  virginica
## 144          6.8         3.2          5.9         2.3  virginica
## 145          6.7         3.3          5.7         2.5  virginica
## 146          6.7         3.0          5.2         2.3  virginica
## 147          6.3         2.5          5.0         1.9  virginica
## 148          6.5         3.0          5.2         2.0  virginica
## 149          6.2         3.4          5.4         2.3  virginica
## 150          5.9         3.0          5.1         1.8  virginica
# veamos los 5 primeros datos
head(iris)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa
# Veamos los últimos 5 datos
tail(iris)
##     Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
## 145          6.7         3.3          5.7         2.5 virginica
## 146          6.7         3.0          5.2         2.3 virginica
## 147          6.3         2.5          5.0         1.9 virginica
## 148          6.5         3.0          5.2         2.0 virginica
## 149          6.2         3.4          5.4         2.3 virginica
## 150          5.9         3.0          5.1         1.8 virginica
# Veamos los estadísticos principales
summary(iris)
##   Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
##  Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
##  1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
##  Median :5.800   Median :3.000   Median :4.350   Median :1.300  
##  Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
##  3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
##  Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
##        Species  
##  setosa    :50  
##  versicolor:50  
##  virginica :50  
##                 
##                 
## 
# veamos las dimensiones
dim(iris)
## [1] 150   5
# veamos el número de filas
nrow(iris)
## [1] 150
# veamos el número de variables
ncol(iris)
## [1] 5
# veamos el nombre de las variables
colnames(iris)
## [1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"
#Tabla de frecuencias absoluctas
table(iris$Species)
## 
##     setosa versicolor  virginica 
##         50         50         50
# veamos las caracteríssticas del set de datos
str(iris)
## 'data.frame':    150 obs. of  5 variables:
##  $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##  $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##  $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##  $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##  $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...

Selección de observaciones y variables

DE la misma forma en que trabajamos en una hoja de cálculo, frecuentemente necesitamos trabajar con un subconjunto de la tabla, para esto requerimos selecionar filas y/o columnas. Para este tipo de selecciones se usa el corchetes:

Cuando se trabaja con tablas los corchetes siempre tienen dos partes separadas por una coma [,]: - la que la precede se refiere a las filas [1:2,] - la que sigue hace referencia a las columnas [,c(1,2,4)]

# Selecionar las primeras 10 filas
iris[1:10,]
##    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1           5.1         3.5          1.4         0.2  setosa
## 2           4.9         3.0          1.4         0.2  setosa
## 3           4.7         3.2          1.3         0.2  setosa
## 4           4.6         3.1          1.5         0.2  setosa
## 5           5.0         3.6          1.4         0.2  setosa
## 6           5.4         3.9          1.7         0.4  setosa
## 7           4.6         3.4          1.4         0.3  setosa
## 8           5.0         3.4          1.5         0.2  setosa
## 9           4.4         2.9          1.4         0.2  setosa
## 10          4.9         3.1          1.5         0.1  setosa
# Selección de las variables 3 y 4
iris[,3:4]
##     Petal.Length Petal.Width
## 1            1.4         0.2
## 2            1.4         0.2
## 3            1.3         0.2
## 4            1.5         0.2
## 5            1.4         0.2
## 6            1.7         0.4
## 7            1.4         0.3
## 8            1.5         0.2
## 9            1.4         0.2
## 10           1.5         0.1
## 11           1.5         0.2
## 12           1.6         0.2
## 13           1.4         0.1
## 14           1.1         0.1
## 15           1.2         0.2
## 16           1.5         0.4
## 17           1.3         0.4
## 18           1.4         0.3
## 19           1.7         0.3
## 20           1.5         0.3
## 21           1.7         0.2
## 22           1.5         0.4
## 23           1.0         0.2
## 24           1.7         0.5
## 25           1.9         0.2
## 26           1.6         0.2
## 27           1.6         0.4
## 28           1.5         0.2
## 29           1.4         0.2
## 30           1.6         0.2
## 31           1.6         0.2
## 32           1.5         0.4
## 33           1.5         0.1
## 34           1.4         0.2
## 35           1.5         0.2
## 36           1.2         0.2
## 37           1.3         0.2
## 38           1.4         0.1
## 39           1.3         0.2
## 40           1.5         0.2
## 41           1.3         0.3
## 42           1.3         0.3
## 43           1.3         0.2
## 44           1.6         0.6
## 45           1.9         0.4
## 46           1.4         0.3
## 47           1.6         0.2
## 48           1.4         0.2
## 49           1.5         0.2
## 50           1.4         0.2
## 51           4.7         1.4
## 52           4.5         1.5
## 53           4.9         1.5
## 54           4.0         1.3
## 55           4.6         1.5
## 56           4.5         1.3
## 57           4.7         1.6
## 58           3.3         1.0
## 59           4.6         1.3
## 60           3.9         1.4
## 61           3.5         1.0
## 62           4.2         1.5
## 63           4.0         1.0
## 64           4.7         1.4
## 65           3.6         1.3
## 66           4.4         1.4
## 67           4.5         1.5
## 68           4.1         1.0
## 69           4.5         1.5
## 70           3.9         1.1
## 71           4.8         1.8
## 72           4.0         1.3
## 73           4.9         1.5
## 74           4.7         1.2
## 75           4.3         1.3
## 76           4.4         1.4
## 77           4.8         1.4
## 78           5.0         1.7
## 79           4.5         1.5
## 80           3.5         1.0
## 81           3.8         1.1
## 82           3.7         1.0
## 83           3.9         1.2
## 84           5.1         1.6
## 85           4.5         1.5
## 86           4.5         1.6
## 87           4.7         1.5
## 88           4.4         1.3
## 89           4.1         1.3
## 90           4.0         1.3
## 91           4.4         1.2
## 92           4.6         1.4
## 93           4.0         1.2
## 94           3.3         1.0
## 95           4.2         1.3
## 96           4.2         1.2
## 97           4.2         1.3
## 98           4.3         1.3
## 99           3.0         1.1
## 100          4.1         1.3
## 101          6.0         2.5
## 102          5.1         1.9
## 103          5.9         2.1
## 104          5.6         1.8
## 105          5.8         2.2
## 106          6.6         2.1
## 107          4.5         1.7
## 108          6.3         1.8
## 109          5.8         1.8
## 110          6.1         2.5
## 111          5.1         2.0
## 112          5.3         1.9
## 113          5.5         2.1
## 114          5.0         2.0
## 115          5.1         2.4
## 116          5.3         2.3
## 117          5.5         1.8
## 118          6.7         2.2
## 119          6.9         2.3
## 120          5.0         1.5
## 121          5.7         2.3
## 122          4.9         2.0
## 123          6.7         2.0
## 124          4.9         1.8
## 125          5.7         2.1
## 126          6.0         1.8
## 127          4.8         1.8
## 128          4.9         1.8
## 129          5.6         2.1
## 130          5.8         1.6
## 131          6.1         1.9
## 132          6.4         2.0
## 133          5.6         2.2
## 134          5.1         1.5
## 135          5.6         1.4
## 136          6.1         2.3
## 137          5.6         2.4
## 138          5.5         1.8
## 139          4.8         1.8
## 140          5.4         2.1
## 141          5.6         2.4
## 142          5.1         2.3
## 143          5.1         1.9
## 144          5.9         2.3
## 145          5.7         2.5
## 146          5.2         2.3
## 147          5.0         1.9
## 148          5.2         2.0
## 149          5.4         2.3
## 150          5.1         1.8
# Selección de un subconjunto
iris[1:10, 3:4] # primeras 10 filas y las variables 3 y 4
##    Petal.Length Petal.Width
## 1           1.4         0.2
## 2           1.4         0.2
## 3           1.3         0.2
## 4           1.5         0.2
## 5           1.4         0.2
## 6           1.7         0.4
## 7           1.4         0.3
## 8           1.5         0.2
## 9           1.4         0.2
## 10          1.5         0.1

Análisis gráfico

El Visual Analytics visualización de datos es una de las ramas más importantes de la ciencia de datos. Es una de potente herramienta para analizar y estudiar las relaciones entre diferentes variables, identificar patrones y tendencias. La visualización de datos (por ejemplo, diagramas de dispersión, gráficos de líneas, diagramas de barras, histogramas, qqplots, densidades suaves, diagramas de caja, diagramas de pares, mapas de calor, etc.) se puede utilizar para análisis descriptivos. Estos análisis son fundamentales para la selección de características.También es un excelente recurso para mostrar los resultados de los diferentes análisis de datos, o resultados de modelos analíticos, en últimas se puede ver como una de las mejores herramientas para transmitir un mensaje, algo en lo que fallan muchos, pues no tienen buenas habilidades para comunicar.

Es por esto que algunos expertos afirman que el visual analytics es más un arte que una ciencia.

# Histograma
hist(iris$Sepal.Width)

#Histograma personalizado
hist(iris$Sepal.Width, main = "Histograma de la anchura de los sépalos",
xlab = "anchura del sépalo", ylab = "frecuencia",
col = "steelblue")

# Gráfico de barras
barplot(table(iris$Species), col= "orange",  main=" Gráfico de barras de Iris")

# gráfic boxplot
boxplot(iris$Sepal.Width ~ iris$Species, col = "darkolivegreen1",
main = "Especies de iris\nsegún la anchura del sépalo") # con \n se separa la línea 

Un valor atípico es un punto de datos que es muy diferente del resto del conjunto de datos. Los valores atípicos son a menudo datos erróneos, por ejemplo, debido a un sensor averiado; experimentos contaminados; o error humano en el registro de datos. A veces, los valores atípicos podrían indicar algo real, como un mal funcionamiento en un sistema. Los valores atípicos son muy comunes y se esperan en grandes conjuntos de datos. Una forma común de detectar valores atípicos en un conjunto de datos es mediante un diagrama de caja.

#Gráfico circular
pie(table(iris$Species), main="Gráfico circular")

Nota: Consulte aquí la paleta de colores para R Colors in R

Correlación

Cuando se dispone de múltiples variables y se quiere estudiar la relación entre todas ellas se recurre al cálculo de matrices con el coeficiente de correlación para cada par de variables, el análisis gráfico también es útil. En R existen diferentes funciones que permiten realizar este tipo de análisis, las diferencias entre ellas son el modo en que se representan gráficamente los resultados.

Se quiere estudiar la relación entre el tamaño de diferentes partes de las flores.

# Asignamos el dataframe a un objeto
data(iris)


#Selecionamos únicamente las variables numéricas
datos = iris[,c(1,2,3,4)]
head(datos)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1          5.1         3.5          1.4         0.2
## 2          4.9         3.0          1.4         0.2
## 3          4.7         3.2          1.3         0.2
## 4          4.6         3.1          1.5         0.2
## 5          5.0         3.6          1.4         0.2
## 6          5.4         3.9          1.7         0.4
#No se muestra la diagonal inferior ya que es lo mismo que la superior
round(cor(x = datos, method = "pearson"),2)
##              Sepal.Length Sepal.Width Petal.Length Petal.Width
## Sepal.Length         1.00       -0.12         0.87        0.82
## Sepal.Width         -0.12        1.00        -0.43       -0.37
## Petal.Length         0.87       -0.43         1.00        0.96
## Petal.Width          0.82       -0.37         0.96        1.00
# Veamos la distribución de los datos
library(psych)
multi.hist(x = datos, dcol = c("blue", "red"), dlty = c("dotted", "solid"), 
           main = "Distribución de los datos de IRIS")

Análisis gráfico de la correlación

La función corrplot() del paquete corrplot recibe como argumento la matriz de correlaciones generada por la función cor() y genera diferentes tipos de heatmaps mucho más visuales que la matriz numérica, esta función tiene varios parámetros que ayudan a personalizar los gráficos, se recomienda revisarla.

# Análisis gráfico de la correlación
library(corrplot)
## corrplot 0.84 loaded
corrplot(corr = cor(x = datos, method = "pearson"), method = "number")

# Otra opción de ver la correlación y la distribución de los datos
library(psych)
pairs.panels(x = datos, ellipses = FALSE, lm = TRUE, method = "pearson")

El anterior grafico es muy rico en información, ya que entre otros presenta el índice de correlación, muestra gráficos como los de dispersión, histogramas y curva de densidad, lo cual ayuda facilmente a identificar patrones, tendencias y relaciones entre las variables.

Nota: No se recomienda el uso de este recurso cuando se cuentan con más de 10 variables, ya que tiene un alto costo computacional y con más de 10 variables es muy díficil de leer.

# Una última opción
library(GGally)
## Loading required package: ggplot2
## 
## Attaching package: 'ggplot2'
## The following objects are masked from 'package:psych':
## 
##     %+%, alpha
## Registered S3 method overwritten by 'GGally':
##   method from   
##   +.gg   ggplot2
ggpairs(iris, lower = list(continuous = "smooth"), 
        diag = list(continuous = "bar"), axisLabels = "none")
## Warning in check_and_set_ggpairs_defaults("diag", diag, continuous =
## "densityDiag", : Changing diag$continuous from 'bar' to 'barDiag'
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Exportar y cargar datos

Finalmente, se explica cómo se pueden exportar datos desde R, guardarlos en el equipo y cargar un archivo csv

# Exportar datos

write.csv(datos, "Datos.csv")

Nota: El set de datos se exporta con el nombre de “Datos.csv”, este archivo tipo csv queda guardado en el directorio activo donde está guardado el Script de R Markdown.

# Cargar datos desde el PC

datos_2 = read.csv("Datos.csv")

# Ver los primeros registros

head(datos_2)
##   X Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1 1          5.1         3.5          1.4         0.2
## 2 2          4.9         3.0          1.4         0.2
## 3 3          4.7         3.2          1.3         0.2
## 4 4          4.6         3.1          1.5         0.2
## 5 5          5.0         3.6          1.4         0.2
## 6 6          5.4         3.9          1.7         0.4

Nota: Para cargar los datos desde el PC se debe selecionar el directorio activo; para esto se pueden usar dos opciones:

  1. En el menú de session, clic en la opción de Set Working Directory y Choose Directory
Set
  1. Con la función de setwd() se puede especificar la ruta de la siguiente manera:

setwd(“C:Users/mi_pc/Mis_documentos/Archivos de R”)

Trabajo independiente

Ya has aprendido a manejar la herramienta de R con el IDE de R Studio, además, ya sabes:

Ahora es momento de prácticar por tu cuenta, recuerda que esto se apropia con la práctica, es por esto que el challenge es que selecciones un dataset de interes del sitio de Machine Learning Repository, donde en encontrarás conjuntos de datos que son muy estudiados y utilidados por la comunidad de cientificos de datos, el objetivo es que realices:

!“El talento es importante, pero son las horas de práctica lo que hace la diferencia” 1

  1. David Frichman: Autor, Consultor, Conferencista Internacional y miembro fundador de la Universidad Peruana de Ciencias Aplicadas (UPC)