A continuación encontrarás mi primer trabajo en RMarkdown para aprender juntos !
Importo el dataset como “From text (base)…”
#importamos los datos y les damos un vistazo
anscombe <- read.csv2("C:/Users/Dayana Castro/Desktop/anscome/anscombe.csv")
View(anscombe)
#Revisamos la estructura de los 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 ...
Como vemos, la variable “Set” aparece como “int” cuando debería ser categórica (“Factor”). Podemos cambiar el tipo de variable con el siguiente código:
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 ...
Ahora crearemos subconjuntos de valores con las categorías de la variable “Set”, con el fin de generar análisis estadísticos y de otro tipo para dicha variable:
uno <- subset(anscombe, Set=="1")
dos <- subset(anscombe, Set=="2")
tres <- subset(anscombe, Set=="3")
cuatro <- subset(anscombe, Set=="4")
Seguidamente, calcularemos medidas estadísticas como el promedio, la varianza, y coeficiente de correlación de las variables númericas (“X” y “Y”) del subconjunto “uno” generado arriba; estos los guardaremos en un nuevo dataframe:
#El comando "mean" calcula la media:
XProm <- mean(uno$X)
YProm <- mean (uno$Y)
#El comando "var" calcula la varianza:
Xvar <- var(uno$X)
Yvar <- var(uno$Y)
#Finalmente el comando "cor" calculará la correlación entre ambas variables:
Corr <- cor(uno$X, uno$Y)
#Guardamos todos estos resultados en un dataframe:
SummaryStats <- data.frame(XProm, YProm, Xvar, Yvar, Corr)
SummaryStats
## XProm YProm Xvar Yvar Corr
## 1 9 7.500909 11 4.127269 0.8164205
Haremos el procedimiento anterior para los otros 3 subconjuntos:
XProm2 <- mean(dos$X)
YProm2 <- mean (dos$Y)
Xvar2 <- var(dos$X)
Yvar2 <- var(dos$Y)
Corr2 <- cor(dos$X, dos$Y)
SummaryStats2 <- data.frame(XProm2, YProm2, Xvar2, Yvar2, Corr2)
SummaryStats2
## XProm2 YProm2 Xvar2 Yvar2 Corr2
## 1 9 7.500909 11 4.127629 0.8162365
XProm3 <- mean(tres$X)
YProm3 <- mean (tres$Y)
Xvar3 <- var(tres$X)
Yvar3 <- var(tres$Y)
Corr3 <- cor(tres$X, tres$Y)
SummaryStats3 <- data.frame(XProm3, YProm3, Xvar3, Yvar3, Corr3)
SummaryStats3
## XProm3 YProm3 Xvar3 Yvar3 Corr3
## 1 9 7.5 11 4.12262 0.8162867
XProm4 <- mean(cuatro$X)
YProm4 <- mean(cuatro$Y)
Xvar4 <- var(cuatro$X)
Yvar4 <- var(cuatro$Y)
Corr4 <- cor(cuatro$X, cuatro$Y)
SummaryStats4 <- data.frame(XProm4, YProm4, Xvar4, Yvar4, Corr4)
SummaryStats4
## XProm4 YProm4 Xvar4 Yvar4 Corr4
## 1 9 7.500909 11 4.123249 0.8165214
Usaremos la libreria “ggplot2” para examinar de manera gráfica el conjunto de datos a trabajar:
#"Activamos" la libreria "ggplot2"
#install.packages("ggplot2")
Con esta libreria, crearemos “facetas” de los datos y trazaremos una línea de regresion.
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 gráfico elaborado con la libreria “ggplot” se puede, de cierta manera, descomponer teniendo en cuenta los valores de cualquier variable. Para este ejercicio usaremos la variable “Set” (recordemos que es la variable categorica de este ejercicio).
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'
A continuación podrás explorar una herramienta interactiva para visualización. Disfrutala !
# Sólo quita los "#" y correlo en tu consola de R
#install.packages("esquisse")
#library(esquisse)
#esquisse::esquisser(anscombe)
(C)Dayana Ibeth Castro Guevara
Economista Esp. Estadística
Mg Analítica e Inteligencia de Negocios
UNIVALLE