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
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
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'
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'
Se podría hacer un boxplot de este conjunto de datos?
#install.packages("esquisse")
#library(esquisse)
#esquisse::esquisser(anscombe)