Este taller introductorio tiene el objetivo de presentar aspectos fundamentales del valor de visualizar preliminarmente un conjunto de datos para determinar sus propiedades. Utilizaremos el dataset tradicional de Anscombe.

Referencias: Munzner Tamara (2013). Visualization Analysis & Design. CRC Press, Boca Raton FL

Universidad del Valle
Maestrƭa en AnƔlitica e inteligencia de Negocios
Asignatura: Inteligencia de Negocios Parte II Presentado por: William Montenegro Guevara cod 2300262-7727


CƔlculo de estadƭsticas descriptivas

Importe el dataset anscombe.csv disponible en https://www.smartartifact.com/icesi/anscombe/data/anscombe.csv.

# Importar los datos seleccionando el archivo
anscombe <- read.csv(file.choose(),header=TRUE,sep=",",stringsAsFactors = FALSE) 
# Imprimir la estructura de datos
str(anscombe)
## 'data.frame':    44 obs. of  3 variables:
##  $ Set: int  1 1 1 1 1 1 1 1 1 1 ...
##  $ X  : int  10 8 13 9 11 14 6 4 12 7 ...
##  $ Y  : num  8.04 6.95 7.58 8.81 8.33 ...

Es probable que al importar el tipo de dato de la columna Set aparece de tipo entero. Conviertala a factor para que sea una variable categorica

anscombe$Set <- as.factor(anscombe$Set)
str(anscombe)
## 'data.frame':    44 obs. of  3 variables:
##  $ Set: Factor w/ 4 levels "1","2","3","4": 1 1 1 1 1 1 1 1 1 1 ...
##  $ X  : int  10 8 13 9 11 14 6 4 12 7 ...
##  $ Y  : num  8.04 6.95 7.58 8.81 8.33 ...

A partir de este punto el objetivo es calcular el promedio, varianza y correlacion entre los valores de X y Y de cada grupo de datos del conjunto de datos. A continuacion se describe como: Cree un subconjunto para cada valor de Set

uno <- subset(anscombe, Set=="1")
dos <- subset(anscombe, Set=="2")
tres <- subset(anscombe, Set=="3")
cuatro <- subset(anscombe, Set=="4")

Calcule el promedio, varianza, y correlación para cada objeto y guÔrdelos en una dataframe

XProm <- mean(uno$X)
YProm <- mean(uno$Y)
Xvar <- var(uno$X)
Yvar <- var(uno$Y)
Corr <- cor(uno$X,uno$Y)

# Se guardan en un dataset
SummaryStats <- data.frame(XProm, YProm, Xvar, Yvar, Corr)
SummaryStats
##   XProm    YProm Xvar     Yvar      Corr
## 1     9 7.500909   11 4.127269 0.8164205

Repita el proceso para cada subconjunto y guarde los resultados en el dataframe SummaryStats

Visualización del conjunto de datos

Veamos los conjuntos grƔficamente usando la libreria ggplot2. Descargue e importe la libreria ggplot2

# omita el signo '#' si no tiene la libreria descargada
# install.packages("ggplot2")

Usaremos metodos de la libreria ggplot2 para crear facetas y trazar la regresion lineal

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.3
# Canvas sobre el que vamos a dibujar
plotAns <- ggplot(anscombe,aes(X,Y, color = Set))
# Diagrama de lineas
plotAns <- plotAns + geom_line()
# Regresion lineal
plotAns <- plotAns + geom_smooth(method=lm, se=FALSE)
# promedio X
plotAns <- plotAns + geom_vline (aes ( xintercept = SummaryStats[1,1]))
# promedio Y
plotAns <- plotAns + geom_hline (aes ( yintercept = SummaryStats[1,2]))
plotAns
## `geom_smooth()` using formula = 'y ~ x'

Facetas

Un diagrama hecho en ggplot se puede descomponer con base en los valores de una de las columnas del conjunto de datos. En este caso usamos la columna Set

library(ggplot2)
# Canvas sobre el que vamos a dibujar
plotAns <- ggplot(anscombe,aes(X,Y))
# Diagrama de dispersion
plotAns <- plotAns + geom_point()
# Regresion lineal
plotAns <- plotAns + geom_smooth(method=lm, se=FALSE)
# promedio X
plotAns <- plotAns + geom_vline (aes ( xintercept = SummaryStats[1,1]))
# promedio Y
plotAns <- plotAns + geom_hline (aes ( yintercept = SummaryStats[1,2]))
# facetas
plotAns <- plotAns + facet_grid(. ~ Set)
plotAns
## `geom_smooth()` using formula = 'y ~ x'

Pregunta

Se podrĆ­a hacer un boxplot de este conjunto de datos?

A continuació presentamos un boxplot de los cuatro grupos de conjuntos de datos con cada una de las variables X y Y del dataset anscombe.

#install.packages("esquisse")
#library(esquisse)
#esquisse::esquisser(anscombe)
#Grafico de Boxplot con puntos de dispersión para la variable X
#windows(height=10,width=15)
anscombe$Set <- as.factor(anscombe$Set)
  ggplot(anscombe,aes(x= Set, y= X)) +
  geom_boxplot(aes(fill = Set), alpha = 0.5) +
  guides(fill = guide_legend(title = "Grupos"))  +
  geom_jitter(aes(x = Set, y = X, fill = Set), alpha = 0.8, width = 0.2)  +   
  labs(title = "Boxplot de los valores de la variable X por Grupo", x = "Grupos", y = "Valores variable X")

#Grafico de Boxplot con puntos de dispersión para la variable Y
 # windows(height=10,width=15)
  anscombe$Set <- as.factor(anscombe$Set)
  ggplot(anscombe,aes(x= Set, y= Y)) +
    geom_boxplot(aes(fill = Set), alpha = 0.5) +
    guides(fill = guide_legend(title = "Grupos"))  +
    geom_jitter(aes(x = Set, y = Y, fill = Set), alpha = 0.8, width = 0.2)  +   
    labs(title = "Boxplot de los valores de la variable Y por Grupo", x = "Grupos", y = "Valores variable Y")