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


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
library(readr)
## Warning: package 'readr' was built under R version 4.0.5
anscombe <- read_delim("anscombe.csv", ";", 
    escape_double = FALSE, trim_ws = TRUE)
## 
## -- Column specification --------------------------------------------------------
## cols(
##   Set = col_double(),
##   X = col_double(),
##   Y = col_number()
## )
# Imprimir la estructura de datos
View(anscombe)
str(anscombe)
## spec_tbl_df[,3] [44 x 3] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ Set: num [1:44] 1 1 1 1 1 1 1 1 1 1 ...
##  $ X  : num [1:44] 10 8 13 9 11 14 6 4 12 7 ...
##  $ Y  : num [1:44] 804 695 758 881 833 ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   Set = col_double(),
##   ..   X = col_double(),
##   ..   Y = col_number()
##   .. )

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)
## spec_tbl_df[,3] [44 x 3] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ Set: Factor w/ 4 levels "1","2","3","4": 1 1 1 1 1 1 1 1 1 1 ...
##  $ X  : num [1:44] 10 8 13 9 11 14 6 4 12 7 ...
##  $ Y  : num [1:44] 804 695 758 881 833 ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   Set = col_double(),
##   ..   X = col_double(),
##   ..   Y = col_number()
##   .. )

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 750.0909   11 41272.69 0.8164205

Notas de clase 1 - Lina

# Instalo librerias
#install.packages("ggplot2")
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.0.5
# Creo objeto ggplot
grafica <- ggplot(anscombe, aes(X, Y, group=Set, color=Set)) 
# Adiciono geometria de puntos
grafica <- grafica + geom_point() 
# Adiciono geometria de lineas
#grafica <- grafica + geom_line()
# Adiciono linea de tendencia
grafica <- grafica + geom_smooth(method=lm, se=FALSE)
# Dividir en facetas
grafica <- grafica + facet_grid(. ~ Set)
# Dibujo el objeto ggplot
grafica
## `geom_smooth()` using formula 'y ~ x'

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)
# 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?

#install.packages("esquisse")
#library(esquisse)
#esquisse::esquisser(anscombe)