dataR
dataR
Dr. Víctor Cruz
Buy on Leanpub

Table of Contents

Software

DataFrame

Presentación teórica : Introducción al Análisis Multivariado

Un data frame en R es una estructura de datos muy utilizada para almacenar datos tabulares. Cada fila representa una observación y cada columna una variable. Aquí te dejo algunos conceptos básicos y ejemplos para trabajar con data frames en R:

DataFrames introducción : GRAPHICAL METHODS Prezi

Crear un Data Frame

Puedes crear un data frame utilizando la función data.frame(). Por ejemplo:

Figure 2.1. Vectores
# Definir vectores
nombre <- c("Ana", "Luis", "Carlos")
edad <- c(23, 34, 28)
ciudad <- c("Madrid", "Barcelona", "Valencia")

# Crear el data frame
df <- data.frame(nombre, edad, ciudad)
print(df)
str(df)

Acceder a los Datos

Para acceder a los datos de un data frame, puedes usar el signo $ o corchetes []:

Figure 2.2. Acceso a variables
# Acceder a una columna
df$nombre

# Acceder a una fila
df[1, ]

# Acceder a un valor específico
df[1, 2]

Añadir Filas y Columnas

Puedes añadir nuevas filas con rbind() y nuevas columnas con cbind():

Figure 2.3. Nueva columna o Fila
# Añadir una nueva columna
df$salario <- c(30000, 40000, 35000)

# Añadir una nueva fila
nueva_fila <- data.frame(nombre = "María", edad = 30, ciudad = "Sevilla", salario = 32000)
df <- rbind(df, nueva_fila)

Filtrar y Ordenar Datos

Para filtrar y ordenar datos, puedes usar funciones como subset() y order():

Figure 2.4. Filtros en Dataframe
# Filtrar datos
df_filtrado <- subset(df, edad > 25)

# Ordenar datos
df_ordenado <- df[order(df$edad), ]

Aprendiendo Plot

La función plot() en R es una herramienta muy versátil para crear gráficos.

Veamos sus usos y cómo configurarla:

Usos Básicos de plot()

La función plot() se puede utilizar para crear diferentes tipos de gráficos dependiendo de los datos que le pases. Aquí tienes algunos ejemplos básicos:

Gráfico de Dispersión

Figure 3.1. Scatter Plot
# Datos de ejemplo
x <- rnorm(100)
y <- rnorm(100)

# Crear un gráfico de dispersión
plot(x, y, main="Gráfico de Dispersión", xlab="Eje X", ylab="Eje Y")

Gráfico de Líneas

Figure 3.2. Grafico de Lineas
# Datos de ejemplo
x <- 1:10
y <- x^2

# Crear un gráfico de líneas
plot(x, y, type="l", main="Gráfico de Líneas", xlab="Eje X", ylab="Eje Y")

Configuración de plot()

Puedes personalizar tus gráficos utilizando varios argumentos dentro de la función plot(). Aquí tienes algunos de los más comunes:

Tipos de Gráficos (type)

  • "p": Puntos (por defecto)
  • "l": Líneas
  • "b": Puntos y líneas
  • "o": Líneas y puntos superpuestos
  • "h": Barras verticales
  • "s": Escalones
Figure 3.3. Grafico con formato 1
plot(x, y, type="b", main="Puntos y Líneas")

Colores y Símbolos

  • col: Color de los puntos o líneas
  • pch: Tipo de símbolo para los puntos (1 a 25)
  • cex: Tamaño de los puntos
Figure 3.4. Grafico con formato 2
plot(x, y, col="blue", pch=19, cex=1.5, main="Personalización de Colores y Símbolos")

Ejes y Títulos

  • xlab y ylab: Etiquetas de los ejes
  • main: Título del gráfico
  • sub: Subtítulo del gráfico
Figure 3.5. Grafico con formato 3
plot(x, y, xlab="Eje X", ylab="Eje Y", main="Título Principal", sub="Subtítulo")

Líneas y Leyendas

Puedes añadir líneas adicionales y leyendas a tus gráficos:

Figure 3.6. Grafico con lineas
# Añadir una línea horizontal y una vertical
abline(h=50, col="red", lty=2)
abline(v=5, col="green", lty=2)

# Añadir una leyenda
legend("topright", legend=c("Línea Horizontal", "Línea Vertical"), col=c("red", "green"), lty=\
2)

Recursos Adicionales


Aprendiendo GGPLOT2

¿Qué es ggplot2?

ggplot2 es un paquete de R para la creación de gráficos de manera declarativa, basado en la “Gramática de los Gráficos” (The Grammar of Graphics).

Esto significa que puedes construir gráficos complejos a partir de componentes simples y reutilizables.

Con ggplot2, defines cómo los datos se mapean a las estéticas (como el color, la forma y el tamaño) y qué elementos gráficos (como puntos, líneas y barras) se deben usar para representar esos datos

Ggplot Layout
Figure 4.1. Ggplot Layout

Instalación

Para instalar ggplot2, puedes usar:

install.packages("ggplot2")

Ejemplos de Aplicación con la Base cars

La base de datos cars en R contiene datos sobre la velocidad y la distancia de frenado de automóviles.

1. Gráfico de Dispersión

Un gráfico de dispersión muestra la relación entre dos variables cuantitativas.

# Cargar ggplot2
library(ggplot2)

# Crear un gráfico de dispersión
ggplot(cars, aes(x = speed, y = dist)) +
  geom_point() +
  labs(title = "Gráfico de Dispersión de Velocidad vs Distancia de Frenado",
       x = "Velocidad (mph)",
       y = "Distancia de Frenado (ft)")

2. Gráfico de Líneas

Un gráfico de líneas es útil para mostrar tendencias a lo largo de un rango continuo.

# Crear un gráfico de líneas
ggplot(cars, aes(x = speed, y = dist)) +
  geom_line() +
  labs(title = "Gráfico de Líneas de Velocidad vs Distancia de Frenado",
       x = "Velocidad (mph)",
       y = "Distancia de Frenado (ft)")

3. Gráfico de Barras

Aunque los gráficos de barras son más comunes para datos categóricos, también se pueden usar para mostrar la frecuencia de valores discretos.

# Crear un gráfico de barras
ggplot(cars, aes(x = factor(speed))) +
  geom_bar() +
  labs(title = "Frecuencia de Velocidades",
       x = "Velocidad (mph)",
       y = "Frecuencia")

Recursos Adicionales

Usando Boxplots

¿Qué es un Boxplot?

Un boxplot (o diagrama de caja y bigotes) es una representación gráfica que resume la distribución de un conjunto de datos numéricos a través de sus cuartiles.

Parametros de un Boxplot
Figure 5.1. Parametros de un Boxplot

Es una herramienta muy útil en el análisis exploratorio de datos porque permite identificar rápidamente la mediana, la dispersión, la asimetría y los valores atípicos (outliers) de los datos1.

Los boxplots son herramientas poderosas para el análisis exploratorio de datos, permitiéndote visualizar rápidamente la distribución y detectar posibles problemas en tus datos.

Componentes de un Boxplot

  • Caja: Representa el rango intercuartílico (IQR), que es la distancia entre el primer cuartil (Q1, 25%) y el tercer cuartil (Q3, 75%).
  • Línea dentro de la caja: Indica la mediana (Q2, 50%).
  • Bigotes: Se extienden desde los cuartiles hasta el valor máximo y mínimo dentro de 1.5 veces el IQR.
  • Puntos fuera de los bigotes: Representan los valores atípicos.

Importancia en el Análisis de Datos

  • Identificación de Outliers: Los boxplots permiten detectar valores atípicos que pueden influir en el análisis.
  • Comparación de Distribuciones: Facilitan la comparación de la distribución de datos entre diferentes grupos.
  • Visualización de la Dispersión: Muestran la variabilidad de los datos y la presencia de asimetrías.

Ejemplos con mtcars en R

La base de datos mtcars contiene datos sobre diferentes modelos de automóviles, incluyendo variables como el consumo de combustible, la cilindrada, la potencia, etc. Aquí te dejo algunos ejemplos de cómo crear boxplots con esta base de datos usando R.

1. Boxplot de una Variable

# Cargar ggplot2
library(ggplot2)

# Crear un boxplot para la variable 'mpg' (millas por galón)
ggplot(mtcars, aes(y = mpg)) +
  geom_boxplot() +
  labs(title = "Boxplot de Millas por Galón (mpg)",
       y = "Millas por Galón (mpg)")

2. Boxplot por Grupo

# Crear un boxplot de 'mpg' agrupado por el número de cilindros ('cyl')
ggplot(mtcars, aes(x = factor(cyl), y = mpg)) +
  geom_boxplot() +
  labs(title = "Boxplot de Millas por Galón (mpg) por Número de Cilindros",
       x = "Número de Cilindros",
       y = "Millas por Galón (mpg)")

3. Boxplot con Personalización

# Crear un boxplot personalizado
ggplot(mtcars, aes(x = factor(cyl), y = mpg, fill = factor(cyl))) +
  geom_boxplot() +
  labs(title = "Boxplot de Millas por Galón (mpg) por Número de Cilindros",
       x = "Número de Cilindros",
       y = "Millas por Galón (mpg)") +
  theme_minimal() +
  scale_fill_brewer(palette = "Set3")

Recursos Adicionales

Ejemplo 1

Encabezado

Figure 6.1. Scatter Plot
title: "DataFrame"
output: 
  html_document:
    # keep_md: true
    df_print: paged
    theme: flatly
    toc: true
    number_sections: true
    toc_float:
      collapsed: true
      smooth_scroll: true
    code_folding: hide

llamando mis librerias

library(ggplot2)
library(plotly)

Cargar los datos

data("mtcars")  # dataframe multivariado 
str(mtcars)
attach(mtcars)

Gráfica de consumo de combustible vs potencia

ggplot(mtcars, aes(x=mpg, y=hp, colour = am)) + geom_point()

Grafica de # de Cilindros vs consumo

grafica <- ggplot(mtcars,aes(x=mpg, y=hp, colour = factor(cyl))) + geom_point(size=3)+ labs(x=\
"millas por galon ", y="potencia en HP") + scale_color_discrete(labels = c("4 cyl", "6 cyl", "
8 cyl"))

ggplotly(grafica)

Analisis de Variables continuas multivariadas con BoxPlot y plotly

grafica2 <- ggplot(mtcars) + aes(factor(cyl), mpg) + geom_boxplot(fill="#00ff5f")

grafica2
ggplotly(grafica2)

Analisis de Variables continuas multivariadas con BoxPlot y jitter

grafica2 + geom_jitter(width = 0.5) 

Analisis de Variables continuas multivariadas con BoxPlot facet

grafica2 + geom_jitter(width = 0.5) + facet_wrap((cyl~am))

medida de cuantiles

quantile(mpg)

Ejemplos

Dar clic derecho

y luego abrir en nueva pestaña

Software

Software del Curso Análisis de Datos para la Investigación

Importante se deben instalar TODOS en INGLES !!

y seleccionar descarga DIRECTA

Familia de productos IRIS

Cargar Librerias

library(ggplot2)
library(plotly)

Cargar Base de Datos iris

data("iris")
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 .
attach(iris)

##Exploracion inical

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

Boxplot de especies longitud del petalo

ggplot(iris)+aes(Species,Petal.Length)+geom_boxplot(fill="#00ff5f")

Boxplot de especies ancho del sepalo

ggplot(iris)+aes(Species,Sepal.Length)+geom_boxplot(fill="#00ff9f")

Relacion entre Longitud y Ancho del Petalo

La grafica nos muestra que la especie setosa tiene una longitud del petalo mas corta y un ancho de petalo un poco mas bajo, la relacion entre el ancho de su petalo y la longitud de su petalo se muestra mas consistente en las especies Versicolor y Virginica.

ggplot(iris, aes(x = Petal.Length, y = Petal.Width)) + 
  geom_point(aes(color = Species), size = 3) + 
  labs(x = "Longitud del Petalo", y = "Ancho del Petalo", title = "Relacion entre Longitud y a\
ncho del Petalo") +
  theme_minimal()

Relacion entre ancho del Sepalo y ancho del Petalo

La grafica nos muestra que los puntos estan dispersos, no se observa una relacion lineal entre las variables.Los valores para la especie Setosa indican un ancho de sepalo mas bajo y un ancho de petalos reducido permitiendo que sea mas facil diferenciarla.Las especies Versicolor y Virginica no muestran patrones claros, lo que sugiere que el ancho del sepalo y del petalo no son caracteristicas suficentemente determinantes para poder distinguirlas. Los puntos no siguen una linea recta ni curva, reforzando que no existe correlacion entre estas dos variables.

ggplot(iris, aes(x = Sepal.Width, y = Petal.Width)) + 
  geom_point(aes(color = Species), size = 3) + 
  labs(x = "Ancho del Sepalo", y = "Ancho del Petalo", title = "Relacion entre ancho del Sepal\
o y ancho del Petalo") +
  theme_minimal()

Relacion entre longitud del Petalo y longitud del Sepalo

La grafica nos muestra que la longitud del petalo y la longitud del sepalo están positivamente correlacionadas, especialmente para Versicolor y Virginica. Sin embargo, Setosa se diferencia al tener tamaños mucho más pequeños en comparación con las otras especies. La linea de ajuste nos permite ver la relacion positiva, y su pendiente indica que a medida que el sépalo se alarga, también lo hace el pétalo.

ggplot(iris, aes(x = Sepal.Length, y = Petal.Length)) + 
  geom_point(aes(color = Species), size = 3) + 
  geom_smooth(method = "lm", se = FALSE, color = "black") +  # Línea de ajuste
  labs(x = "Longitud del Sepalo", y = "Longitud del Petalo", title = "Relacion con Linea de Aj\
uste") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

Quitamos la columna especies

iris4 <- iris4[, -5]

Calculo de la Matriz de Distancias Euclidianas

distancias <- dist(iris4,method = "euclidean")

Calcula el dendograma de la matriz de distancias

(dendograma <- hclust(distancias, method = "ward.D2"))

Gráfica del Dendograma

plot(dendograma)
rect.hclust(dendograma, k=3, border = "blue")

Crear las etiquetas del cluster

(clusterespecies <- cutree(dendograma, k=3))

Creo el dataframe con los cluster

iris5 <- data.frame(iris4,clusterespecies)
head(iris5)

Graficar los clusters librerias

library(ggplot2)
library(GGally)

Predicion de la Demanda

  1. Importe los datos
byke_train <- read.csv("byke_train.csv", header=TRUE)
byke_test <- read.csv("byke_test.csv", header=TRUEr
  1. Ajuste el modelo

Supongamos que el modelo que usted va a crear es un modelo lineal, este modelo se debe entrenar con los datos train.

modelo <- lm(cnt ~ season + atemp + season*atemp, data=byke_trainr
  1. Calcule las predicciones

Introducción a Power Bl

Archivo Datos

Material de Estudio