1 Introducción

En el análisis de datos, el procesamiento inicial de la información constituye una etapa fundamental para garantizar la calidad, consistencia e interpretabilidad de los resultados estadísticos. En este sentido, el uso de herramientas computacionales como R permite realizar de manera eficiente tareas de importación, exploración, transformación, limpieza y visualización de datos.

En esta práctica se abordarán los elementos básicos del procesamiento de datos en R, partiendo de la construcción de un conjunto de datos simulado que incorpora variables de tipo cuantitativo y cualitativo, tales como edad, sexo, puntaje, salario, carrera universitaria y estrato socioeconómico. A partir de este conjunto de datos, se desarrollarán procedimientos esenciales como la identificación de datos faltantes, la transformación de variables, el filtrado de observaciones y el cálculo de estadísticas descriptivas.

Adicionalmente, se explorarán técnicas de análisis exploratorio de datos (EDA), incluyendo tablas de frecuencias, tablas cruzadas y representaciones gráficas como histogramas, diagramas de caja, diagramas de dispersión y gráficos de barras. Estas herramientas permiten describir la estructura de los datos, identificar patrones, detectar posibles valores atípicos y analizar relaciones entre variables.

El objetivo de esta práctica es fortalecer las competencias básicas en el manejo de datos con R, proporcionando una base sólida para el desarrollo posterior de métodos estadísticos más avanzados, como la inferencia estadística, el modelamiento y el análisis multivariado.

2 Carga de datos

2.1 Creación de un conjunto de datos simulado

datos <- data.frame(
  id = 1:12,
  edad = c(20, 22, 23, NA, 25, 30, 28, 27, 26, 24, 21, 29),
  sexo = c("M", "F", "F", "M", "F", "M", "M", "F", "F", "M", "F", "M"),
  puntaje = c(80, 85, 90, 70, 88, 92, 75, 84, 89, 91, 86, 93),
  
  salario = c(1200000, 1500000, 1800000, 1300000, 2000000,
              2500000, 2200000, 1600000, 1700000, 1900000,
              1400000, 2100000),
  
  carrera = c("Estadística", "Psicología", "Ingeniería", "Economía",
              "Estadística", "Ingeniería", "Matemáticas", "Psicología",
              "Economía", "Ingeniería", "Estadística", "Matemáticas"),
  
  estrato = c(2, 3, 3, 2, 4, 5, 4, 3, 2, 3, 2, 4)
)

datos

2.2 Exploración de datos

Tipo de datos

str(datos) 
## 'data.frame':    12 obs. of  7 variables:
##  $ id     : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ edad   : num  20 22 23 NA 25 30 28 27 26 24 ...
##  $ sexo   : chr  "M" "F" "F" "M" ...
##  $ puntaje: num  80 85 90 70 88 92 75 84 89 91 ...
##  $ salario: num  1200000 1500000 1800000 1300000 2000000 2500000 2200000 1600000 1700000 1900000 ...
##  $ carrera: chr  "Estadística" "Psicología" "Ingeniería" "Economía" ...
##  $ estrato: num  2 3 3 2 4 5 4 3 2 3 ...

Resumen de las variables

summary(datos) 
##        id             edad          sexo              puntaje     
##  Min.   : 1.00   Min.   :20.0   Length:12          Min.   :70.00  
##  1st Qu.: 3.75   1st Qu.:22.5   Class :character   1st Qu.:83.00  
##  Median : 6.50   Median :25.0   Mode  :character   Median :87.00  
##  Mean   : 6.50   Mean   :25.0                      Mean   :85.25  
##  3rd Qu.: 9.25   3rd Qu.:27.5                      3rd Qu.:90.25  
##  Max.   :12.00   Max.   :30.0                      Max.   :93.00  
##                  NA's   :1                                        
##     salario          carrera             estrato     
##  Min.   :1200000   Length:12          Min.   :2.000  
##  1st Qu.:1475000   Class :character   1st Qu.:2.000  
##  Median :1750000   Mode  :character   Median :3.000  
##  Mean   :1766667                      Mean   :3.083  
##  3rd Qu.:2025000                      3rd Qu.:4.000  
##  Max.   :2500000                      Max.   :5.000  
## 

Tamaño (número de filas y número de columnas)

dim(datos) 
## [1] 12  7

Nombres de las variables

names(datos) 
## [1] "id"      "edad"    "sexo"    "puntaje" "salario" "carrera" "estrato"

2.3 Manejo de datos faltantes

Hay algún dato faltante?

is.na(datos)
##          id  edad  sexo puntaje salario carrera estrato
##  [1,] FALSE FALSE FALSE   FALSE   FALSE   FALSE   FALSE
##  [2,] FALSE FALSE FALSE   FALSE   FALSE   FALSE   FALSE
##  [3,] FALSE FALSE FALSE   FALSE   FALSE   FALSE   FALSE
##  [4,] FALSE  TRUE FALSE   FALSE   FALSE   FALSE   FALSE
##  [5,] FALSE FALSE FALSE   FALSE   FALSE   FALSE   FALSE
##  [6,] FALSE FALSE FALSE   FALSE   FALSE   FALSE   FALSE
##  [7,] FALSE FALSE FALSE   FALSE   FALSE   FALSE   FALSE
##  [8,] FALSE FALSE FALSE   FALSE   FALSE   FALSE   FALSE
##  [9,] FALSE FALSE FALSE   FALSE   FALSE   FALSE   FALSE
## [10,] FALSE FALSE FALSE   FALSE   FALSE   FALSE   FALSE
## [11,] FALSE FALSE FALSE   FALSE   FALSE   FALSE   FALSE
## [12,] FALSE FALSE FALSE   FALSE   FALSE   FALSE   FALSE

Eliminación de NA

datos_limpios <- na.omit(datos)
datos_limpios

2.4 Transformación de variables

Se escala el salario para que sea facil de manipular

datos$log_puntaje <- log(datos$puntaje)

Se transforma la variable como factor(cualitativa nominal)

datos$sexo <- factor(datos$sexo)
datos

2.5 Filtardo de datos

Filtro por edad

subset(datos, edad > 25) 

Filtro por salario

subset(datos, salario > 1800000)

2.6 Estadística descriptiva

#promedios
mean(datos$edad, na.rm = TRUE)
## [1] 25
mean(datos$salario)
## [1] 1766667

Desviacion estándar

sd(datos$salario)
## [1] 391578

2.7 Tablas de frecuencias

# Tabla de frecuencias por carrera
table(datos$carrera)
## 
##    Economía Estadística  Ingeniería Matemáticas  Psicología 
##           2           3           3           2           2

Tabla de frecuencias por estrato

table(datos$estrato)
## 
## 2 3 4 5 
## 4 4 3 1

Tabla de frecuencias por sexo

table(datos$sexo)
## 
## F M 
## 6 6

2.8 Visualizacion de datos

2.8.1 Histograma

Histograma del Salario

hist(datos$salario,
     main = "Distribución del salario",
     xlab = "Salario",
     ylab = "Frecuencia",
     col = "lightgreen")

Histograma del Salario

hist(datos$puntaje,
     main = "Distribución de puntajes",
     xlab = "Puntaje",
     ylab = "Frecuencia",
     col = "lightblue")

2.8.2 Boxplot(Diagrama de caja y bigotes)

boxplot(datos$puntaje,
        main = "Boxplot de puntajes",
        ylab = "Puntuaciones",
        col = "white")

2.8.3 Dispersión

plot(datos$edad, datos$puntaje,
     main = "Edad vs Puntaje",
     xlab = "Edad",
     ylab = "Puntaje",
     pch = 19)

plot(datos$edad, datos$salario,
     main = "Edad vs Salario",
     xlab = "Edad",
     ylab = "Salario",
     pch = 19)

2.8.4 Diagrama de barras

barplot(table(datos$estrato),
        main = "Distribución del estrato socioeconómico",
        col = "lightcoral")

2.9 Tablas cruzadas

Las tablas cruzadas o también llamada tablas de contingencia permiten analizar la relación entre dos variables categóricas.

  • Sexo vs carrera
tabla_sexo_carrera <- table(datos$sexo, datos$carrera)
tabla_sexo_carrera
##    
##     Economía Estadística Ingeniería Matemáticas Psicología
##   F        1           2          1           0          2
##   M        1           1          2           2          0
  • Estrato vs carrera
tabla_estrato_carrera <- table(datos$estrato, datos$carrera)
tabla_estrato_carrera
##    
##     Economía Estadística Ingeniería Matemáticas Psicología
##   2        2           2          0           0          0
##   3        0           0          2           0          2
##   4        0           1          0           2          0
##   5        0           0          1           0          0
  • Sexo vs estrato
tabla_sexo_estrato <- table(datos$sexo, datos$estrato)
tabla_sexo_estrato
##    
##     2 3 4 5
##   F 2 3 1 0
##   M 2 1 2 1

2.10 Tablas cruzadas con proporciones

Proporciones por fila (dentro de cada sexo)

prop.table(tabla_sexo_carrera, margin = 2)
##    
##      Economía Estadística Ingeniería Matemáticas Psicología
##   F 0.5000000   0.6666667  0.3333333   0.0000000  1.0000000
##   M 0.5000000   0.3333333  0.6666667   1.0000000  0.0000000
round(prop.table(tabla_sexo_carrera, margin = 2),2)
##    
##     Economía Estadística Ingeniería Matemáticas Psicología
##   F     0.50        0.67       0.33        0.00       1.00
##   M     0.50        0.33       0.67        1.00       0.00

Proporciones por columna (dentro de cada carrera)

round(prop.table(tabla_sexo_carrera, margin = 2), 2)
##    
##     Economía Estadística Ingeniería Matemáticas Psicología
##   F     0.50        0.67       0.33        0.00       1.00
##   M     0.50        0.33       0.67        1.00       0.00

2.11 Visualizaciones de tablas cruzadas

  • Barras agrupadas (Sexo vs Carrera)
barplot(tabla_sexo_carrera,
        beside = T,
        col = c("skyblue", "salmon"),
        legend.text = TRUE,
        main = "Sexo vs Carrera",
        xlab = "Carrera",
        ylab = "Frecuencia")

3 Ejercicio

PROBLEMA DE INVESTIGACIÓN (Instrucciones para el proyecto)

En este proyecto de aplicación, el estudiante trabajará con una base de datos en un contexto aplicado de ingeniería o ciencias afines. El objetivo es desarrollar habilidades básicas de análisis exploratorio de datos y preparación de información para futuros modelos estadísticos, especialmente regresión lineal.

3.1 Comprensión de la base de datos

Antes de realizar cualquier análisis, el estudiante debe explorar la base de datos y comprender su estructura.

Para ello, debe:

•   Cargar los datos a RStudio
•   Identificar todas las variables presentes en la base de datos.
•   Describir cada variable según su naturaleza:
•   Cuantitativa (discreta o continua)
•   Cualitativa (nominal u ordinal)
•   Determinar el rol de cada variable dentro del análisis:
•   Variable respuesta (Y)
•   Variables explicativas (X₁, X₂, …)

3.2 Planteamiento del problema

A partir de la base de datos, el estudiante debe formular un problema de investigación aplicado que esté relacionado con un fenómeno observable en ingeniería o ciencias aplicadas.

El problema debe responder a la siguiente idea general:

¿Qué relación existe entre una variable respuesta cuantitativa y una o más variables explicativas?

Ejemplos orientadores:

•   Relación entre el rendimiento y variables socioeconómicas.
•   Relación entre salario y nivel educativo o experiencia.
•   Relación entre puntaje y características demográficas.

3.3 Identificación de variables del estudio

El estudiante debe definir claramente:

•   Variable dependiente (Y): variable cuantitativa que se desea explicar o predecir.
•   Variables independientes (X): variables que podrían influir en Y, tanto cuantitativas como cualitativas.

Se debe justificar brevemente por qué estas variables son relevantes dentro del contexto del problema.

3.4 Inicio del análisis exploratorio

Una vez definidas las variables, el estudiante debe iniciar el análisis exploratorio de datos (EDA), el cual incluirá:

•   Tablas de frecuencias
•   Estadísticos descriptivos
•   Gráficos básicos (histogramas, boxplots, diagramas de dispersión)
•   Tablas cruzadas entre variables cualitativas
• Matriz de correlaciones