1 Presentación general

Este documento es una versión complementaria en RMarkdown del notebook maestro desarrollado para las semanas 1, 2, 3 y 4 de la asignatura Estadística Aplicada con Python y R. Está pensado para que usted lo copie, lo adapte en Posit Cloud, lo renderice a HTML, PDF y Word, y posteriormente lo publique en RPubs.

La secuencia conserva el mismo hilo pedagógico del notebook:

  1. Semana 1: Fundamentos de Estadística Aplicada.
  2. Semana 2: Visualización Básica.
  3. Semana 3: EDA Estructurado (I): análisis univariado.
  4. Semana 4: EDA Estructurado (II): análisis bivariado y correlación.

Se trabaja con dos conjuntos de datos:

  • Soils del paquete carData, útil para mostrar acceso a datasets de R y análisis exploratorio de variables físicas y químicas del suelo.
  • acero.csv, útil para trabajar tipos de datos, variables productivas, consumo energético y relaciones entre variables en un contexto aplicado.

1.1 Recomendación de uso en Posit Cloud

  1. Cree un proyecto nuevo en Posit Cloud.
  2. Suba este archivo .Rmd.
  3. Suba también el archivo acero.csv.
  4. Ejecute los chunks por bloques.
  5. Revise y adapte títulos, comentarios, explicaciones y estilo.
  6. Renderice primero a HTML, luego a PDF y Word.
  7. Publique el HTML en RPubs.

1.2 Paquetes requeridos

paquetes <- c(
  "tidyverse",
  "carData",
  "PerformanceAnalytics",
  "moments",
  "ggplot2"
)

instalados <- rownames(installed.packages())
faltantes <- setdiff(paquetes, instalados)

if (length(faltantes) > 0) {
  install.packages(faltantes, dependencies = TRUE)
}

invisible(lapply(paquetes, library, character.only = TRUE))

2 Guía transversal para el estudiante

2.1 Guardado progresivo en GitHub

Se recomienda que el estudiante no espere al final del trabajo. Después de completar cada gran sección, debe guardar una nueva versión del archivo en su repositorio. Una sugerencia de nombres es:

  • 01_semana1_fundamentos.Rmd
  • 02_semana2_visualizacion.Rmd
  • 03_semana3_eda_univariado.Rmd
  • 04_semana4_eda_bivariado.Rmd

2.2 Prompt sugerido para pedir explicación detallada del código

Cada vez que el estudiante termine un chunk relevante, puede usar este prompt:

Actúa como tutor experto en R y estadística aplicada.
Explícame línea por línea el siguiente código en R.
Indica: 1. qué hace cada línea,
2. por qué se usa,
3. qué entrada recibe,
4. qué salida produce,
5. cómo interpretar el resultado en contexto de ingeniería.
Además, si encuentras una mejora de estilo o claridad, sugiérela sin cambiar el propósito del código.

2.3 Orientación para traslado a RPubs

El flujo sugerido es:

  1. Editar y revisar el .Rmd.
  2. Renderizar a HTML.
  3. Publicar el HTML en RPubs.
  4. Renderizar también a PDF y Word para evidencias académicas y archivo docente.

3 Carga y preparación de datos

3.1 Dataset 1: Soils

data("Soils", package = "carData")
soils <- Soils
glimpse(soils)
#> Rows: 48
#> Columns: 14
#> $ Group   <fct> 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6,…
#> $ Contour <fct> Top, Top, Top, Top, Top, Top, Top, Top, Top, Top, Top, Top, To…
#> $ Depth   <fct> 0-10, 0-10, 0-10, 0-10, 10-30, 10-30, 10-30, 10-30, 30-60, 30-…
#> $ Gp      <fct> T0, T0, T0, T0, T1, T1, T1, T1, T3, T3, T3, T3, T6, T6, T6, T6…
#> $ Block   <fct> 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1,…
#> $ pH      <dbl> 5.40, 5.65, 5.14, 5.14, 5.14, 5.10, 4.70, 4.46, 4.37, 4.39, 4.…
#> $ N       <dbl> 0.188, 0.165, 0.260, 0.169, 0.164, 0.094, 0.100, 0.112, 0.112,…
#> $ Dens    <dbl> 0.92, 1.04, 0.95, 1.10, 1.12, 1.22, 1.52, 1.47, 1.07, 1.54, 1.…
#> $ P       <int> 215, 208, 300, 248, 174, 129, 117, 170, 121, 115, 112, 117, 12…
#> $ Ca      <dbl> 16.35, 12.25, 13.02, 11.92, 14.17, 8.55, 8.74, 9.49, 8.85, 4.7…
#> $ Mg      <dbl> 7.65, 5.15, 5.68, 7.88, 8.12, 6.92, 8.16, 9.16, 10.35, 6.91, 7…
#> $ K       <dbl> 0.72, 0.71, 0.68, 1.09, 0.70, 0.81, 0.39, 0.70, 0.74, 0.77, 0.…
#> $ Na      <dbl> 1.14, 0.94, 0.60, 1.01, 2.17, 2.67, 3.32, 3.76, 5.74, 5.85, 5.…
#> $ Conduc  <dbl> 1.09, 1.35, 1.41, 1.64, 1.85, 3.18, 4.16, 5.14, 5.73, 6.45, 8.…

3.1.1 Comentario pedagógico

El dataset Soils contiene observaciones de características físicas y químicas del suelo en un diseño en bloques al azar con factores como Contour, Depth y Block. Resulta apropiado para enseñar identificación de tipos de variables, descripción inicial, visualización y relaciones entre variables.

3.2 Dataset 2: acero.csv

Importante: ubique acero.csv en el mismo directorio del proyecto de Posit Cloud o ajuste la ruta en el chunk.

acero_raw <- read.csv("acero.csv", stringsAsFactors = FALSE)
glimpse(acero_raw)
#> Rows: 117
#> Columns: 20
#> $ consumo     <chr> "135,31", "84,08", "131,62", "90,46", "120,04", "153,68", …
#> $ pr.tbc      <int> 6840, 443, 7270, 5031, 9365, 9281, 3223, 10490, 7394, 8654…
#> $ pr.cc       <int> 830, 903, 572, 694, 1054, 1003, 1118, 1077, 1204, 851, 369…
#> $ pr.ca       <int> 0, 58, 36, 122, 157, 172, 0, 179, 167, 0, 32, 0, 0, 0, 0, …
#> $ pr.galv1    <int> 579, 611, 982, 896, 403, 605, 643, 737, 580, 828, 777, 626…
#> $ pr.galv2    <int> 1401, 1636, 1963, 1568, 1480, 1525, 1424, 1333, 934, 1326,…
#> $ pr.pint     <int> 0, 717, 243, 0, 0, 473, 732, 93, 247, 607, 0, 0, 0, 561, 6…
#> $ linea       <chr> "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A"…
#> $ hora        <chr> "1º", "2º", "3º", "4º", "5º", "6º", "7º", "8º", "1º", "2º"…
#> $ temperatura <chr> "Alta", "Alta", "Baja", "Baja", "Baja", "Baja", "Alta", "A…
#> $ averias     <chr> "Si", "No", "No", "No", "No", "Si", "No", "No", "No", "Si"…
#> $ naverias    <int> 1, 0, 0, 0, 0, 1, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ sistema     <chr> "OFF", "OFF", "OFF", "ON", "OFF", "OFF", "OFF", "ON", "ON"…
#> $ ProdTotal   <int> 11266, 7251, 11066, 8311, 12459, 13059, 8555, 18253, 11697…
#> $ NOx         <chr> "0,49", "0,0725", "1,49", "1,715", "0,465", "2,4175", "1,0…
#> $ CO          <chr> "3,545", "2,895", "5,0075", "2,16", "4,845", "3,6725", "2,…
#> $ COV         <chr> "0,545", "0,425", "0,69", "0,36", "0,6625", "0,575", "0,44…
#> $ SO2         <chr> "0,038", "0,047", "0,062", "0,066", "0,086", "0,056", "0,0…
#> $ CO2         <chr> "101,5", "63,565", "98,8175", "70,1825", "88,53", "116,537…
#> $ N2O         <chr> "6,35", "2,23", "5,99", "3,66", "6,06", "6,15", "7,75", "9…

3.3 Limpieza básica de acero.csv

En este archivo aparecen columnas numéricas con coma decimal. Por ello se realiza una transformación controlada para convertirlas correctamente a formato numérico.

acero <- acero_raw

columnas_decimal_coma <- c("consumo", "NOx", "CO", "COV", "SO2", "CO2", "N2O")

acero[columnas_decimal_coma] <- lapply(
  acero[columnas_decimal_coma],
  function(x) as.numeric(gsub(",", ".", x, fixed = TRUE))
)

acero <- acero %>%
  mutate(
    linea = as.factor(linea),
    hora = as.factor(hora),
    temperatura = as.factor(temperatura),
    averias = as.factor(averias),
    sistema = as.factor(sistema)
  )

glimpse(acero)
#> Rows: 117
#> Columns: 20
#> $ consumo     <dbl> 135.31, 84.08, 131.62, 90.46, 120.04, 153.68, 99.09, 226.3…
#> $ pr.tbc      <int> 6840, 443, 7270, 5031, 9365, 9281, 3223, 10490, 7394, 8654…
#> $ pr.cc       <int> 830, 903, 572, 694, 1054, 1003, 1118, 1077, 1204, 851, 369…
#> $ pr.ca       <int> 0, 58, 36, 122, 157, 172, 0, 179, 167, 0, 32, 0, 0, 0, 0, …
#> $ pr.galv1    <int> 579, 611, 982, 896, 403, 605, 643, 737, 580, 828, 777, 626…
#> $ pr.galv2    <int> 1401, 1636, 1963, 1568, 1480, 1525, 1424, 1333, 934, 1326,…
#> $ pr.pint     <int> 0, 717, 243, 0, 0, 473, 732, 93, 247, 607, 0, 0, 0, 561, 6…
#> $ linea       <fct> A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A…
#> $ hora        <fct> 1º, 2º, 3º, 4º, 5º, 6º, 7º, 8º, 1º, 2º, 3º, 4º, 5º, 6º, 7º…
#> $ temperatura <fct> Alta, Alta, Baja, Baja, Baja, Baja, Alta, Alta, Alta, Alta…
#> $ averias     <fct> Si, No, No, No, No, Si, No, No, No, Si, Si, No, No, No, No…
#> $ naverias    <int> 1, 0, 0, 0, 0, 1, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ sistema     <fct> OFF, OFF, OFF, ON, OFF, OFF, OFF, ON, ON, OFF, ON, ON, ON,…
#> $ ProdTotal   <int> 11266, 7251, 11066, 8311, 12459, 13059, 8555, 18253, 11697…
#> $ NOx         <dbl> 0.4900, 0.0725, 1.4900, 1.7150, 0.4650, 2.4175, 1.0250, 1.…
#> $ CO          <dbl> 3.5450, 2.8950, 5.0075, 2.1600, 4.8450, 3.6725, 2.8450, 9.…
#> $ COV         <dbl> 0.5450, 0.4250, 0.6900, 0.3600, 0.6625, 0.5750, 0.4400, 1.…
#> $ SO2         <dbl> 0.038, 0.047, 0.062, 0.066, 0.086, 0.056, 0.070, 0.103, 0.…
#> $ CO2         <dbl> 101.5000, 63.5650, 98.8175, 70.1825, 88.5300, 116.5375, 74…
#> $ N2O         <dbl> 6.35, 2.23, 5.99, 3.66, 6.06, 6.15, 7.75, 9.09, 8.69, 5.00…
summary(acero)
#>     consumo           pr.tbc          pr.cc            pr.ca      
#>  Min.   : 17.50   Min.   :    0   Min.   :   0.0   Min.   :  0.0  
#>  1st Qu.: 99.09   1st Qu.: 5950   1st Qu.:   0.0   1st Qu.:  0.0  
#>  Median :140.07   Median : 8808   Median :  80.0   Median :  0.0  
#>  Mean   :139.46   Mean   : 7568   Mean   : 295.5   Mean   :124.5  
#>  3rd Qu.:182.48   3rd Qu.: 9734   3rd Qu.: 582.0   3rd Qu.:248.0  
#>  Max.   :290.72   Max.   :10979   Max.   :1204.0   Max.   :677.0  
#>                                                                   
#>     pr.galv1        pr.galv2       pr.pint      linea       hora    temperatura
#>  Min.   :  0.0   Min.   :   0   Min.   :  0.0   A:39   1º     :15   Alta :46   
#>  1st Qu.:  0.0   1st Qu.: 933   1st Qu.:  0.0   B:39   2º     :15   Baja :38   
#>  Median :432.0   Median :1360   Median :  0.0   C:39   3º     :15   Media:33   
#>  Mean   :402.8   Mean   :1160   Mean   :188.6          4º     :15              
#>  3rd Qu.:698.0   3rd Qu.:1567   3rd Qu.:394.0          5º     :15              
#>  Max.   :982.0   Max.   :1963   Max.   :898.0          6º     :15              
#>                                                        (Other):27              
#>  averias    naverias      sistema    ProdTotal          NOx        
#>  No:89   Min.   :0.0000   OFF:59   Min.   : 2187   Min.   :0.0125  
#>  Si:28   1st Qu.:0.0000   ON :58   1st Qu.: 9023   1st Qu.:0.7750  
#>          Median :0.0000            Median :11860   Median :1.1200  
#>          Mean   :0.6752            Mean   :11842   Mean   :1.1961  
#>          3rd Qu.:0.0000            3rd Qu.:14908   3rd Qu.:1.6550  
#>          Max.   :4.0000            Max.   :23202   Max.   :2.7750  
#>                                                                    
#>        CO              COV              SO2              CO2        
#>  Min.   : 0.250   Min.   :0.0250   Min.   :0.0010   Min.   : 14.29  
#>  1st Qu.: 2.928   1st Qu.:0.4525   1st Qu.:0.0540   1st Qu.: 73.72  
#>  Median : 4.107   Median :0.6250   Median :0.0660   Median :105.31  
#>  Mean   : 4.377   Mean   :0.6210   Mean   :0.0665   Mean   :104.63  
#>  3rd Qu.: 5.585   3rd Qu.:0.7850   3rd Qu.:0.0800   3rd Qu.:134.88  
#>  Max.   :10.170   Max.   :1.2550   Max.   :0.1270   Max.   :218.31  
#>                                                                     
#>       N2O        
#>  Min.   : 0.870  
#>  1st Qu.: 4.710  
#>  Median : 6.170  
#>  Mean   : 6.115  
#>  3rd Qu.: 7.580  
#>  Max.   :11.140  
#> 

3.3.1 Comentario pedagógico

Este paso permite enseñar una idea fundamental: antes de analizar, hay que asegurar que los tipos de datos sean correctos. Si una variable numérica entra como texto, los resultados estadísticos y gráficos serán erróneos o imposibles de calcular.

4 Semana 1 — Fundamentos de Estadística Aplicada

4.1 Propósito de la sección

En esta parte se trabaja la base conceptual del curso: tipos de datos, escalas de medición, población, muestra, variables y estadísticos descriptivos básicos. La guía de la semana 1 enfatiza que el software calcula, pero el ingeniero interpreta.

4.2 1.1 Inspección general de tipos de datos

class(soils)
#> [1] "data.frame"
dim(soils)
#> [1] 48 14
names(soils)
#>  [1] "Group"   "Contour" "Depth"   "Gp"      "Block"   "pH"      "N"      
#>  [8] "Dens"    "P"       "Ca"      "Mg"      "K"       "Na"      "Conduc"
sapply(soils, class)
#>     Group   Contour     Depth        Gp     Block        pH         N      Dens 
#>  "factor"  "factor"  "factor"  "factor"  "factor" "numeric" "numeric" "numeric" 
#>         P        Ca        Mg         K        Na    Conduc 
#> "integer" "numeric" "numeric" "numeric" "numeric" "numeric"
sapply(acero, class)
#>     consumo      pr.tbc       pr.cc       pr.ca    pr.galv1    pr.galv2 
#>   "numeric"   "integer"   "integer"   "integer"   "integer"   "integer" 
#>     pr.pint       linea        hora temperatura     averias    naverias 
#>   "integer"    "factor"    "factor"    "factor"    "factor"   "integer" 
#>     sistema   ProdTotal         NOx          CO         COV         SO2 
#>    "factor"   "integer"   "numeric"   "numeric"   "numeric"   "numeric" 
#>         CO2         N2O 
#>   "numeric"   "numeric"

4.2.1 Interpretación

  • En Soils aparecen variables categóricas y numéricas.
  • En acero también se distinguen variables de producción, consumo, emisiones y factores categóricos del proceso.
  • Esta revisión permite discutir:
    • variable cualitativa versus cuantitativa,
    • variable discreta versus continua,
    • factores y respuestas numéricas.

4.3 1.2 Resumen descriptivo inicial

summary(soils)
#>      Group          Contour     Depth          Gp     Block        pH       
#>  1      : 4   Depression:16   0-10 :12   D0     : 4   1:12   Min.   :3.740  
#>  2      : 4   Slope     :16   10-30:12   D1     : 4   2:12   1st Qu.:4.058  
#>  3      : 4   Top       :16   30-60:12   D3     : 4   3:12   Median :4.545  
#>  4      : 4                   60-90:12   D6     : 4   4:12   Mean   :4.669  
#>  5      : 4                              S0     : 4          3rd Qu.:5.140  
#>  6      : 4                              S1     : 4          Max.   :6.670  
#>  (Other):24                              (Other):24                         
#>        N                Dens             P               Ca        
#>  Min.   :0.03000   Min.   :0.780   Min.   : 79.0   Min.   : 3.820  
#>  1st Qu.:0.05075   1st Qu.:1.127   1st Qu.:108.8   1st Qu.: 5.040  
#>  Median :0.08450   Median :1.400   Median :131.0   Median : 7.305  
#>  Mean   :0.10194   Mean   :1.316   Mean   :166.2   Mean   : 8.029  
#>  3rd Qu.:0.12925   3rd Qu.:1.502   3rd Qu.:214.2   3rd Qu.: 9.735  
#>  Max.   :0.29800   Max.   :1.600   Max.   :445.0   Max.   :16.350  
#>                                                                    
#>        Mg               K                Na             Conduc      
#>  Min.   : 5.150   Min.   :0.1400   Min.   : 0.600   Min.   : 0.670  
#>  1st Qu.: 7.537   1st Qu.:0.2750   1st Qu.: 2.545   1st Qu.: 2.790  
#>  Median : 8.515   Median :0.4250   Median : 5.520   Median : 6.635  
#>  Mean   : 8.465   Mean   :0.4662   Mean   : 5.600   Mean   : 6.589  
#>  3rd Qu.: 9.648   3rd Qu.:0.6425   3rd Qu.: 8.355   3rd Qu.: 9.852  
#>  Max.   :10.960   Max.   :1.0900   Max.   :11.040   Max.   :13.320  
#> 
summary(acero)
#>     consumo           pr.tbc          pr.cc            pr.ca      
#>  Min.   : 17.50   Min.   :    0   Min.   :   0.0   Min.   :  0.0  
#>  1st Qu.: 99.09   1st Qu.: 5950   1st Qu.:   0.0   1st Qu.:  0.0  
#>  Median :140.07   Median : 8808   Median :  80.0   Median :  0.0  
#>  Mean   :139.46   Mean   : 7568   Mean   : 295.5   Mean   :124.5  
#>  3rd Qu.:182.48   3rd Qu.: 9734   3rd Qu.: 582.0   3rd Qu.:248.0  
#>  Max.   :290.72   Max.   :10979   Max.   :1204.0   Max.   :677.0  
#>                                                                   
#>     pr.galv1        pr.galv2       pr.pint      linea       hora    temperatura
#>  Min.   :  0.0   Min.   :   0   Min.   :  0.0   A:39   1º     :15   Alta :46   
#>  1st Qu.:  0.0   1st Qu.: 933   1st Qu.:  0.0   B:39   2º     :15   Baja :38   
#>  Median :432.0   Median :1360   Median :  0.0   C:39   3º     :15   Media:33   
#>  Mean   :402.8   Mean   :1160   Mean   :188.6          4º     :15              
#>  3rd Qu.:698.0   3rd Qu.:1567   3rd Qu.:394.0          5º     :15              
#>  Max.   :982.0   Max.   :1963   Max.   :898.0          6º     :15              
#>                                                        (Other):27              
#>  averias    naverias      sistema    ProdTotal          NOx        
#>  No:89   Min.   :0.0000   OFF:59   Min.   : 2187   Min.   :0.0125  
#>  Si:28   1st Qu.:0.0000   ON :58   1st Qu.: 9023   1st Qu.:0.7750  
#>          Median :0.0000            Median :11860   Median :1.1200  
#>          Mean   :0.6752            Mean   :11842   Mean   :1.1961  
#>          3rd Qu.:0.0000            3rd Qu.:14908   3rd Qu.:1.6550  
#>          Max.   :4.0000            Max.   :23202   Max.   :2.7750  
#>                                                                    
#>        CO              COV              SO2              CO2        
#>  Min.   : 0.250   Min.   :0.0250   Min.   :0.0010   Min.   : 14.29  
#>  1st Qu.: 2.928   1st Qu.:0.4525   1st Qu.:0.0540   1st Qu.: 73.72  
#>  Median : 4.107   Median :0.6250   Median :0.0660   Median :105.31  
#>  Mean   : 4.377   Mean   :0.6210   Mean   :0.0665   Mean   :104.63  
#>  3rd Qu.: 5.585   3rd Qu.:0.7850   3rd Qu.:0.0800   3rd Qu.:134.88  
#>  Max.   :10.170   Max.   :1.2550   Max.   :0.1270   Max.   :218.31  
#>                                                                     
#>       N2O        
#>  Min.   : 0.870  
#>  1st Qu.: 4.710  
#>  Median : 6.170  
#>  Mean   : 6.115  
#>  3rd Qu.: 7.580  
#>  Max.   :11.140  
#> 

4.3.1 Orientación conceptual

Aquí el estudiante debe observar:

  • medias y medianas en variables numéricas,
  • mínimos y máximos,
  • distribución básica de niveles en variables categóricas,
  • posibles primeras alertas sobre dispersión o asimetría.

4.4 1.3 Selección de variables numéricas

soils_num <- soils %>% select(where(is.numeric))
acero_num <- acero %>% select(where(is.numeric))

names(soils_num)
#> [1] "pH"     "N"      "Dens"   "P"      "Ca"     "Mg"     "K"      "Na"    
#> [9] "Conduc"
names(acero_num)
#>  [1] "consumo"   "pr.tbc"    "pr.cc"     "pr.ca"     "pr.galv1"  "pr.galv2" 
#>  [7] "pr.pint"   "naverias"  "ProdTotal" "NOx"       "CO"        "COV"      
#> [13] "SO2"       "CO2"       "N2O"

4.4.1 Actividad sugerida para el estudiante

Pídale al chatbot que clasifique cada variable como:

  • cualitativa nominal,
  • cualitativa ordinal,
  • cuantitativa discreta,
  • cuantitativa continua,

y que la relacione con una decisión de ingeniería.

4.5 1.4 Estadísticos básicos calculados manualmente con funciones

estadisticos_soils <- soils_num %>%
  summarise(across(
    everything(),
    list(
      media = mean,
      mediana = median,
      sd = sd,
      varianza = var,
      minimo = min,
      maximo = max
    ),
    na.rm = TRUE
  ))

estadisticos_acero <- acero_num %>%
  summarise(across(
    everything(),
    list(
      media = mean,
      mediana = median,
      sd = sd,
      varianza = var,
      minimo = min,
      maximo = max
    ),
    na.rm = TRUE
  ))

estadisticos_soils
estadisticos_acero

4.5.1 Recomendación para GitHub

Al terminar esta sección, guarde una copia del trabajo como:

01_semana1_fundamentos.Rmd

5 Semana 2 — Visualización Básica

5.1 Propósito de la sección

La guía de la semana 2 plantea que la visualización no es adorno, sino herramienta de análisis. Aquí se ilustran histogramas, boxplots y scatterplots, y se insiste en la interpretación de forma, centro, dispersión y posibles anomalías.

5.2 2.1 Histograma de una variable numérica en Soils

ggplot(soils, aes(x = pH)) +
  geom_histogram(bins = 10, fill = "steelblue", color = "black") +
  labs(
    title = "Histograma de pH en Soils",
    x = "pH",
    y = "Frecuencia"
  ) +
  theme_minimal()

5.2.1 Interpretación sugerida

Analizar:

  • concentración de valores,
  • posible asimetría,
  • amplitud de variación,
  • si la distribución parece aproximadamente simétrica o no.

5.3 2.2 Histograma de consumo energético en acero

ggplot(acero, aes(x = consumo)) +
  geom_histogram(bins = 12, fill = "darkorange", color = "black") +
  labs(
    title = "Histograma del consumo energético",
    x = "Consumo (MWh)",
    y = "Frecuencia"
  ) +
  theme_minimal()

5.3.1 Comentario aplicado

Este gráfico permite discutir si el consumo energético se concentra en ciertos rangos operativos y si existen valores inusualmente bajos o altos que ameriten revisión.

5.4 2.3 Boxplot por grupo categórico en Soils

ggplot(soils, aes(x = Contour, y = pH, fill = Contour)) +
  geom_boxplot() +
  labs(
    title = "Boxplot de pH según contorno",
    x = "Contorno",
    y = "pH"
  ) +
  theme_minimal()

5.4.1 Interpretación sugerida

Se puede discutir:

  • mediana por grupo,
  • dispersión relativa,
  • presencia de valores atípicos,
  • comparación entre contornos.

5.5 2.4 Boxplot de consumo según línea de producción

ggplot(acero, aes(x = linea, y = consumo, fill = linea)) +
  geom_boxplot() +
  labs(
    title = "Consumo energético según línea de producción",
    x = "Línea",
    y = "Consumo (MWh)"
  ) +
  theme_minimal()

5.5.1 Comentario ingenieril

El estudiante puede relacionar este gráfico con eficiencia operativa y variabilidad del proceso entre líneas.

5.6 2.5 Scatterplot en Soils

ggplot(soils, aes(x = Ca, y = Mg, color = Contour)) +
  geom_point(size = 2) +
  labs(
    title = "Relación entre Ca y Mg",
    x = "Calcio",
    y = "Magnesio"
  ) +
  theme_minimal()

5.7 2.6 Scatterplot en acero

ggplot(acero, aes(x = ProdTotal, y = consumo, color = linea)) +
  geom_point(size = 2) +
  labs(
    title = "Producción total vs consumo energético",
    x = "Producción total",
    y = "Consumo"
  ) +
  theme_minimal()

5.7.1 Recomendación para GitHub

Al terminar esta sección, guarde una nueva versión como:

02_semana2_visualizacion.Rmd

6 Semana 3 — EDA Estructurado (I): análisis univariado

6.1 Propósito de la sección

La guía de la semana 3 introduce el EDA como proceso estructurado. Ya no se trata solo de “mirar datos”, sino de seguir una secuencia: estructura, faltantes, análisis univariado, forma de distribución y detección de atípicos.

6.2 3.1 Inspección estructural

dim(soils)
#> [1] 48 14
str(soils)
#> 'data.frame':    48 obs. of  14 variables:
#>  $ Group  : Factor w/ 12 levels "1","2","3","4",..: 1 1 1 1 2 2 2 2 3 3 ...
#>  $ Contour: Factor w/ 3 levels "Depression","Slope",..: 3 3 3 3 3 3 3 3 3 3 ...
#>  $ Depth  : Factor w/ 4 levels "0-10","10-30",..: 1 1 1 1 2 2 2 2 3 3 ...
#>  $ Gp     : Factor w/ 12 levels "D0","D1","D3",..: 9 9 9 9 10 10 10 10 11 11 ...
#>  $ Block  : Factor w/ 4 levels "1","2","3","4": 1 2 3 4 1 2 3 4 1 2 ...
#>  $ pH     : num  5.4 5.65 5.14 5.14 5.14 5.1 4.7 4.46 4.37 4.39 ...
#>  $ N      : num  0.188 0.165 0.26 0.169 0.164 0.094 0.1 0.112 0.112 0.058 ...
#>  $ Dens   : num  0.92 1.04 0.95 1.1 1.12 1.22 1.52 1.47 1.07 1.54 ...
#>  $ P      : int  215 208 300 248 174 129 117 170 121 115 ...
#>  $ Ca     : num  16.4 12.2 13 11.9 14.2 ...
#>  $ Mg     : num  7.65 5.15 5.68 7.88 8.12 ...
#>  $ K      : num  0.72 0.71 0.68 1.09 0.7 0.81 0.39 0.7 0.74 0.77 ...
#>  $ Na     : num  1.14 0.94 0.6 1.01 2.17 2.67 3.32 3.76 5.74 5.85 ...
#>  $ Conduc : num  1.09 1.35 1.41 1.64 1.85 3.18 4.16 5.14 5.73 6.45 ...
dim(acero)
#> [1] 117  20
str(acero)
#> 'data.frame':    117 obs. of  20 variables:
#>  $ consumo    : num  135.3 84.1 131.6 90.5 120 ...
#>  $ pr.tbc     : int  6840 443 7270 5031 9365 9281 3223 10490 7394 8654 ...
#>  $ pr.cc      : int  830 903 572 694 1054 1003 1118 1077 1204 851 ...
#>  $ pr.ca      : int  0 58 36 122 157 172 0 179 167 0 ...
#>  $ pr.galv1   : int  579 611 982 896 403 605 643 737 580 828 ...
#>  $ pr.galv2   : int  1401 1636 1963 1568 1480 1525 1424 1333 934 1326 ...
#>  $ pr.pint    : int  0 717 243 0 0 473 732 93 247 607 ...
#>  $ linea      : Factor w/ 3 levels "A","B","C": 1 1 1 1 1 1 1 1 1 1 ...
#>  $ hora       : Factor w/ 8 levels "1º","2º","3º",..: 1 2 3 4 5 6 7 8 1 2 ...
#>  $ temperatura: Factor w/ 3 levels "Alta","Baja",..: 1 1 2 2 2 2 1 1 1 1 ...
#>  $ averias    : Factor w/ 2 levels "No","Si": 2 1 1 1 1 2 1 1 1 2 ...
#>  $ naverias   : int  1 0 0 0 0 1 0 0 0 3 ...
#>  $ sistema    : Factor w/ 2 levels "OFF","ON": 1 1 1 2 1 1 1 2 2 1 ...
#>  $ ProdTotal  : int  11266 7251 11066 8311 12459 13059 8555 18253 11697 13194 ...
#>  $ NOx        : num  0.49 0.0725 1.49 1.715 0.465 ...
#>  $ CO         : num  3.54 2.9 5.01 2.16 4.84 ...
#>  $ COV        : num  0.545 0.425 0.69 0.36 0.662 ...
#>  $ SO2        : num  0.038 0.047 0.062 0.066 0.086 0.056 0.07 0.103 0.058 0.066 ...
#>  $ CO2        : num  101.5 63.6 98.8 70.2 88.5 ...
#>  $ N2O        : num  6.35 2.23 5.99 3.66 6.06 6.15 7.75 9.09 8.69 5 ...

6.3 3.2 Valores faltantes

colSums(is.na(soils))
#>   Group Contour   Depth      Gp   Block      pH       N    Dens       P      Ca 
#>       0       0       0       0       0       0       0       0       0       0 
#>      Mg       K      Na  Conduc 
#>       0       0       0       0
colSums(is.na(acero))
#>     consumo      pr.tbc       pr.cc       pr.ca    pr.galv1    pr.galv2 
#>           0           0           0           0           0           0 
#>     pr.pint       linea        hora temperatura     averias    naverias 
#>           0           0           0           0           0           0 
#>     sistema   ProdTotal         NOx          CO         COV         SO2 
#>           0           0           0           0           0           0 
#>         CO2         N2O 
#>           0           0

6.3.1 Comentario pedagógico

Aunque un dataset no tenga faltantes, el paso debe hacerse siempre. La ausencia de valores faltantes también es un hallazgo importante.

6.4 3.3 Medidas de tendencia y dispersión

medidas_soils <- soils_num %>%
  summarise(across(
    everything(),
    list(
      media = ~ mean(.x, na.rm = TRUE),
      mediana = ~ median(.x, na.rm = TRUE),
      sd = ~ sd(.x, na.rm = TRUE),
      rango = ~ max(.x, na.rm = TRUE) - min(.x, na.rm = TRUE)
    )
  ))

medidas_acero <- acero_num %>%
  summarise(across(
    everything(),
    list(
      media = ~ mean(.x, na.rm = TRUE),
      mediana = ~ median(.x, na.rm = TRUE),
      sd = ~ sd(.x, na.rm = TRUE),
      rango = ~ max(.x, na.rm = TRUE) - min(.x, na.rm = TRUE)
    )
  ))

medidas_soils
medidas_acero
medidas_soils <- soils_num %>%
  summarise(across(
    everything(),
    list(
      media = ~ mean(.x, na.rm = TRUE),
      mediana = ~ median(.x, na.rm = TRUE),
      sd = ~ sd(.x, na.rm = TRUE),
      rango = ~ max(.x, na.rm = TRUE) - min(.x, na.rm = TRUE)
    )
  ))

medidas_acero <- acero_num %>%
  summarise(across(
    everything(),
    list(
      media = ~ mean(.x, na.rm = TRUE),
      mediana = ~ median(.x, na.rm = TRUE),
      sd = ~ sd(.x, na.rm = TRUE),
      rango = ~ max(.x, na.rm = TRUE) - min(.x, na.rm = TRUE)
    )
  ))

medidas_soils
medidas_acero

6.5 3.4 Asimetría y curtosis

skew_soils <- sapply(soils_num, moments::skewness, na.rm = TRUE)
kurt_soils <- sapply(soils_num, moments::kurtosis, na.rm = TRUE)

skew_acero <- sapply(acero_num, moments::skewness, na.rm = TRUE)
kurt_acero <- sapply(acero_num, moments::kurtosis, na.rm = TRUE)

skew_soils
#>           pH            N         Dens            P           Ca           Mg 
#>  0.598184778  1.245697971 -0.637341556  1.431175740  0.680720289 -0.249438519 
#>            K           Na       Conduc 
#>  0.377961059  0.008738835 -0.012390673
kurt_soils
#>       pH        N     Dens        P       Ca       Mg        K       Na 
#> 2.882805 3.793367 2.220929 4.816547 2.431754 2.355985 2.514051 1.612310 
#>   Conduc 
#> 1.576215
skew_acero
#>      consumo       pr.tbc        pr.cc        pr.ca     pr.galv1     pr.galv2 
#>  0.003201892 -1.243764926  0.816123166  1.179388549 -0.005802244 -0.937249395 
#>      pr.pint     naverias    ProdTotal          NOx           CO          COV 
#>  1.129745663  1.608273078 -0.082773410  0.081687346  0.388874084  0.087019000 
#>          SO2          CO2          N2O 
#> -0.138286706  0.006413696 -0.142690117
kurt_acero
#>   consumo    pr.tbc     pr.cc     pr.ca  pr.galv1  pr.galv2   pr.pint  naverias 
#>  2.618134  3.579382  2.307391  3.655330  1.484137  2.647911  2.648712  4.014125 
#> ProdTotal       NOx        CO       COV       SO2       CO2       N2O 
#>  2.911264  2.403473  2.933368  2.771855  3.536115  2.606436  2.603108

6.5.1 Interpretación sugerida

  • Asimetría positiva: cola hacia la derecha.
  • Asimetría negativa: cola hacia la izquierda.
  • Curtosis alta: distribución más concentrada con colas más pesadas.
  • Curtosis baja: distribución más plana.

6.6 3.5 Detección visual de outliers

ggplot(acero, aes(x = "", y = consumo)) +
  geom_boxplot(fill = "tomato") +
  labs(
    title = "Detección visual de outliers en consumo",
    x = "",
    y = "Consumo"
  ) +
  theme_minimal()

6.7 3.6 Densidad como complemento del histograma

ggplot(acero, aes(x = consumo)) +
  geom_density(fill = "skyblue", alpha = 0.5) +
  labs(
    title = "Densidad del consumo energético",
    x = "Consumo",
    y = "Densidad"
  ) +
  theme_minimal()

6.7.1 Recomendación para GitHub

Al terminar esta sección, guarde una nueva versión como:

03_semana3_eda_univariado.Rmd

7 Semana 4 — EDA Estructurado (II): análisis bivariado

7.1 Propósito de la sección

La guía de la semana 4 lleva el EDA al estudio de relaciones entre variables. Se enfatiza la interpretación de correlación, diferencia entre Pearson y Spearman, lectura de matrices y advertencia de que correlación no implica causalidad.

7.2 4.1 Correlación de Pearson en Soils

cor_soils_pearson <- cor(soils_num, use = "pairwise.complete.obs", method = "pearson")
round(cor_soils_pearson, 3)
#>            pH      N   Dens      P     Ca     Mg      K     Na Conduc
#> pH      1.000  0.637 -0.589  0.591  0.809 -0.396  0.580 -0.693 -0.765
#> N       0.637  1.000 -0.864  0.842  0.850 -0.522  0.676 -0.812 -0.804
#> Dens   -0.589 -0.864  1.000 -0.794 -0.791  0.490 -0.667  0.742  0.763
#> P       0.591  0.842 -0.794  1.000  0.688 -0.489  0.556 -0.773 -0.762
#> Ca      0.809  0.850 -0.791  0.688  1.000 -0.427  0.721 -0.789 -0.832
#> Mg     -0.396 -0.522  0.490 -0.489 -0.427  1.000 -0.357  0.565  0.508
#> K       0.580  0.676 -0.667  0.556  0.721 -0.357  1.000 -0.693 -0.753
#> Na     -0.693 -0.812  0.742 -0.773 -0.789  0.565 -0.693  1.000  0.972
#> Conduc -0.765 -0.804  0.763 -0.762 -0.832  0.508 -0.753  0.972  1.000

7.3 4.2 Correlación de Pearson en acero

cor_acero_pearson <- cor(acero_num, use = "pairwise.complete.obs", method = "pearson")
round(cor_acero_pearson, 3)
#>           consumo pr.tbc  pr.cc  pr.ca pr.galv1 pr.galv2 pr.pint naverias
#> consumo     1.000  0.743  0.385 -0.045    0.401    0.241   0.194    0.082
#> pr.tbc      0.743  1.000  0.154 -0.040    0.066    0.102   0.003    0.044
#> pr.cc       0.385  0.154  1.000 -0.191    0.300    0.071   0.268   -0.006
#> pr.ca      -0.045 -0.040 -0.191  1.000    0.083   -0.085  -0.027    0.034
#> pr.galv1    0.401  0.066  0.300  0.083    1.000    0.050   0.301    0.192
#> pr.galv2    0.241  0.102  0.071 -0.085    0.050    1.000   0.073   -0.111
#> pr.pint     0.194  0.003  0.268 -0.027    0.301    0.073   1.000    0.025
#> naverias    0.082  0.044 -0.006  0.034    0.192   -0.111   0.025    1.000
#> ProdTotal   0.984  0.797  0.379 -0.069    0.368    0.251   0.196    0.061
#> NOx         0.558  0.422  0.227  0.034    0.280    0.050   0.228    0.007
#> CO          0.945  0.655  0.364 -0.044    0.403    0.240   0.208    0.017
#> COV         0.966  0.697  0.372 -0.044    0.401    0.254   0.210    0.030
#> SO2        -0.029 -0.019  0.024  0.137   -0.032   -0.022   0.022   -0.108
#> CO2         1.000  0.742  0.385 -0.045    0.402    0.239   0.196    0.079
#> N2O         0.853  0.656  0.337 -0.055    0.290    0.182   0.188    0.033
#>           ProdTotal    NOx     CO    COV    SO2    CO2    N2O
#> consumo       0.984  0.558  0.945  0.966 -0.029  1.000  0.853
#> pr.tbc        0.797  0.422  0.655  0.697 -0.019  0.742  0.656
#> pr.cc         0.379  0.227  0.364  0.372  0.024  0.385  0.337
#> pr.ca        -0.069  0.034 -0.044 -0.044  0.137 -0.045 -0.055
#> pr.galv1      0.368  0.280  0.403  0.401 -0.032  0.402  0.290
#> pr.galv2      0.251  0.050  0.240  0.254 -0.022  0.239  0.182
#> pr.pint       0.196  0.228  0.208  0.210  0.022  0.196  0.188
#> naverias      0.061  0.007  0.017  0.030 -0.108  0.079  0.033
#> ProdTotal     1.000  0.553  0.933  0.953 -0.006  0.984  0.854
#> NOx           0.553  1.000  0.519  0.534 -0.126  0.568  0.532
#> CO            0.933  0.519  1.000  0.995  0.044  0.944  0.820
#> COV           0.953  0.534  0.995  1.000  0.031  0.965  0.836
#> SO2          -0.006 -0.126  0.044  0.031  1.000 -0.029  0.007
#> CO2           0.984  0.568  0.944  0.965 -0.029  1.000  0.854
#> N2O           0.854  0.532  0.820  0.836  0.007  0.854  1.000

7.4 4.3 Correlación de Spearman en acero

cor_acero_spearman <- cor(acero_num, use = "pairwise.complete.obs", method = "spearman")
round(cor_acero_spearman, 3)
#>           consumo pr.tbc  pr.cc  pr.ca pr.galv1 pr.galv2 pr.pint naverias
#> consumo     1.000  0.751  0.421 -0.049    0.421    0.155   0.214    0.096
#> pr.tbc      0.751  1.000  0.210 -0.048    0.126   -0.017   0.073    0.065
#> pr.cc       0.421  0.210  1.000 -0.175    0.375    0.050   0.336    0.030
#> pr.ca      -0.049 -0.048 -0.175  1.000    0.051   -0.090  -0.040    0.052
#> pr.galv1    0.421  0.126  0.375  0.051    1.000    0.041   0.347    0.186
#> pr.galv2    0.155 -0.017  0.050 -0.090    0.041    1.000  -0.010   -0.108
#> pr.pint     0.214  0.073  0.336 -0.040    0.347   -0.010   1.000    0.019
#> naverias    0.096  0.065  0.030  0.052    0.186   -0.108   0.019    1.000
#> ProdTotal   0.980  0.813  0.407 -0.074    0.395    0.144   0.217    0.076
#> NOx         0.607  0.497  0.249  0.007    0.267    0.001   0.262    0.031
#> CO          0.947  0.724  0.397 -0.049    0.403    0.166   0.231    0.036
#> COV         0.963  0.734  0.405 -0.054    0.413    0.164   0.230    0.047
#> SO2        -0.038 -0.024  0.072  0.079   -0.018   -0.056   0.110   -0.119
#> CO2         0.999  0.752  0.422 -0.052    0.419    0.149   0.218    0.096
#> N2O         0.837  0.639  0.355 -0.058    0.295    0.098   0.202    0.053
#>           ProdTotal    NOx     CO    COV    SO2    CO2    N2O
#> consumo       0.980  0.607  0.947  0.963 -0.038  0.999  0.837
#> pr.tbc        0.813  0.497  0.724  0.734 -0.024  0.752  0.639
#> pr.cc         0.407  0.249  0.397  0.405  0.072  0.422  0.355
#> pr.ca        -0.074  0.007 -0.049 -0.054  0.079 -0.052 -0.058
#> pr.galv1      0.395  0.267  0.403  0.413 -0.018  0.419  0.295
#> pr.galv2      0.144  0.001  0.166  0.164 -0.056  0.149  0.098
#> pr.pint       0.217  0.262  0.231  0.230  0.110  0.218  0.202
#> naverias      0.076  0.031  0.036  0.047 -0.119  0.096  0.053
#> ProdTotal     1.000  0.608  0.941  0.954 -0.013  0.980  0.837
#> NOx           0.608  1.000  0.565  0.574 -0.132  0.612  0.571
#> CO            0.941  0.565  1.000  0.997  0.018  0.946  0.811
#> COV           0.954  0.574  0.997  1.000  0.011  0.962  0.822
#> SO2          -0.013 -0.132  0.018  0.011  1.000 -0.039 -0.001
#> CO2           0.980  0.612  0.946  0.962 -0.039  1.000  0.840
#> N2O           0.837  0.571  0.811  0.822 -0.001  0.840  1.000

7.4.1 Comentario pedagógico

Aquí conviene discutir:

  • magnitud del coeficiente,
  • signo positivo o negativo,
  • diferencia entre asociación lineal y monotónica,
  • sensibilidad de Pearson a valores extremos.

7.5 4.4 Matriz gráfica de correlaciones en acero

PerformanceAnalytics::chart.Correlation(
  acero_num,
  histogram = TRUE,
  pch = 19
)

7.6 4.5 Relación entre producción total y consumo con línea de tendencia

ggplot(acero, aes(x = ProdTotal, y = consumo)) +
  geom_point() +
  geom_smooth(method = "lm", se = TRUE) +
  labs(
    title = "Producción total y consumo energético",
    x = "Producción total",
    y = "Consumo"
  ) +
  theme_minimal()

7.7 4.6 Relación entre calcio y magnesio en Soils con tendencia lineal

ggplot(soils, aes(x = Ca, y = Mg)) +
  geom_point() +
  geom_smooth(method = "lm", se = TRUE) +
  labs(
    title = "Relación entre Ca y Mg en Soils",
    x = "Ca",
    y = "Mg"
  ) +
  theme_minimal()

7.7.1 Comentario conceptual

Este bloque prepara el terreno para regresión, pero todavía no pretende construir modelos formales. El foco es explorar relaciones y detectar posibles redundancias o multicolinealidad.

7.7.2 Recomendación para GitHub

Al terminar esta sección, guarde una nueva versión como:

04_semana4_eda_bivariado.Rmd

8 Sección especial para trabajo docente en clase

8.1 Preguntas orientadoras para discusión

8.1.1 Semana 1

  1. ¿Qué diferencia existe entre población y muestra en estos datasets?
  2. ¿Qué variables son cualitativas y cuáles cuantitativas?
  3. ¿Qué estadísticos básicos son más útiles según el tipo de variable?

8.1.2 Semana 2

  1. ¿Qué gráfico conviene usar para una variable numérica?
  2. ¿Qué revela un boxplot que no revela fácilmente una tabla?
  3. ¿Qué errores pueden cometerse al interpretar una nube de puntos?

8.1.3 Semana 3

  1. ¿Qué secuencia ordenada debe seguir un EDA?
  2. ¿Por qué no basta con calcular la media?
  3. ¿Qué puede sugerir una alta asimetría en contexto de ingeniería?

8.1.4 Semana 4

  1. ¿Qué diferencia hay entre Pearson y Spearman?
  2. ¿Por qué correlación no implica causalidad?
  3. ¿Qué variables parecen estar más asociadas con el fenómeno estudiado?

9 Sugerencia para construir el documento final de los estudiantes

9.1 Estructura sugerida del informe

  1. Introducción
  2. Objetivo general
  3. Descripción de los datasets
  4. Fundamentos estadísticos
  5. Visualización básica
  6. EDA estructurado univariado
  7. EDA estructurado bivariado
  8. Conclusiones
  9. Referencias

10 Cómo renderizar en Posit Cloud

10.1 Opción 1: usar el botón Knit

En el editor de Posit Cloud:

  1. Abra este archivo .Rmd.
  2. Pulse Knit.
  3. Seleccione:
    • Knit to HTML
    • Knit to PDF
    • Knit to Word

10.2 Opción 2: renderizar por consola

rmarkdown::render("guia_semanas_1_4.Rmd", output_format = "html_document")
rmarkdown::render("guia_semanas_1_4.Rmd", output_format = "pdf_document")
rmarkdown::render("guia_semanas_1_4.Rmd", output_format = "word_document")

10.3 Nota sobre PDF

Para pdf_document, R Markdown requiere un motor LaTeX. La documentación de R Markdown indica que el formato PDF se declara con pdf_document, y la generación de Word se hace con word_document; además, el IDE puede publicar documentos R Markdown en RPubs. En Posit/RStudio, la publicación puede dirigirse a RPubs desde el cuadro de publicación.

11 Cómo publicar en RPubs

  1. Renderice primero el documento a HTML.
  2. Abra el HTML desde Posit Cloud o desde el IDE.
  3. Use el botón Publish.
  4. Seleccione RPubs como destino.
  5. Defina título, descripción y visibilidad pública.

12 Cierre pedagógico

Este documento conserva la secuencia conceptual de las cuatro semanas:

  • primero, fundamentos;
  • luego, visualización;
  • después, EDA univariado;
  • finalmente, EDA bivariado.

La intención no es solo mostrar código en R, sino mantener una lógica de formación donde:

  • el software calcula,
  • la visualización ayuda a diagnosticar,
  • el EDA ordena el razonamiento,
  • y el estudiante interpreta con criterio ingenieril.

13 Anexo: bloque mínimo para quienes inician

summary(soils)
#>      Group          Contour     Depth          Gp     Block        pH       
#>  1      : 4   Depression:16   0-10 :12   D0     : 4   1:12   Min.   :3.740  
#>  2      : 4   Slope     :16   10-30:12   D1     : 4   2:12   1st Qu.:4.058  
#>  3      : 4   Top       :16   30-60:12   D3     : 4   3:12   Median :4.545  
#>  4      : 4                   60-90:12   D6     : 4   4:12   Mean   :4.669  
#>  5      : 4                              S0     : 4          3rd Qu.:5.140  
#>  6      : 4                              S1     : 4          Max.   :6.670  
#>  (Other):24                              (Other):24                         
#>        N                Dens             P               Ca        
#>  Min.   :0.03000   Min.   :0.780   Min.   : 79.0   Min.   : 3.820  
#>  1st Qu.:0.05075   1st Qu.:1.127   1st Qu.:108.8   1st Qu.: 5.040  
#>  Median :0.08450   Median :1.400   Median :131.0   Median : 7.305  
#>  Mean   :0.10194   Mean   :1.316   Mean   :166.2   Mean   : 8.029  
#>  3rd Qu.:0.12925   3rd Qu.:1.502   3rd Qu.:214.2   3rd Qu.: 9.735  
#>  Max.   :0.29800   Max.   :1.600   Max.   :445.0   Max.   :16.350  
#>                                                                    
#>        Mg               K                Na             Conduc      
#>  Min.   : 5.150   Min.   :0.1400   Min.   : 0.600   Min.   : 0.670  
#>  1st Qu.: 7.537   1st Qu.:0.2750   1st Qu.: 2.545   1st Qu.: 2.790  
#>  Median : 8.515   Median :0.4250   Median : 5.520   Median : 6.635  
#>  Mean   : 8.465   Mean   :0.4662   Mean   : 5.600   Mean   : 6.589  
#>  3rd Qu.: 9.648   3rd Qu.:0.6425   3rd Qu.: 8.355   3rd Qu.: 9.852  
#>  Max.   :10.960   Max.   :1.0900   Max.   :11.040   Max.   :13.320  
#> 
summary(acero)
#>     consumo           pr.tbc          pr.cc            pr.ca      
#>  Min.   : 17.50   Min.   :    0   Min.   :   0.0   Min.   :  0.0  
#>  1st Qu.: 99.09   1st Qu.: 5950   1st Qu.:   0.0   1st Qu.:  0.0  
#>  Median :140.07   Median : 8808   Median :  80.0   Median :  0.0  
#>  Mean   :139.46   Mean   : 7568   Mean   : 295.5   Mean   :124.5  
#>  3rd Qu.:182.48   3rd Qu.: 9734   3rd Qu.: 582.0   3rd Qu.:248.0  
#>  Max.   :290.72   Max.   :10979   Max.   :1204.0   Max.   :677.0  
#>                                                                   
#>     pr.galv1        pr.galv2       pr.pint      linea       hora    temperatura
#>  Min.   :  0.0   Min.   :   0   Min.   :  0.0   A:39   1º     :15   Alta :46   
#>  1st Qu.:  0.0   1st Qu.: 933   1st Qu.:  0.0   B:39   2º     :15   Baja :38   
#>  Median :432.0   Median :1360   Median :  0.0   C:39   3º     :15   Media:33   
#>  Mean   :402.8   Mean   :1160   Mean   :188.6          4º     :15              
#>  3rd Qu.:698.0   3rd Qu.:1567   3rd Qu.:394.0          5º     :15              
#>  Max.   :982.0   Max.   :1963   Max.   :898.0          6º     :15              
#>                                                        (Other):27              
#>  averias    naverias      sistema    ProdTotal          NOx        
#>  No:89   Min.   :0.0000   OFF:59   Min.   : 2187   Min.   :0.0125  
#>  Si:28   1st Qu.:0.0000   ON :58   1st Qu.: 9023   1st Qu.:0.7750  
#>          Median :0.0000            Median :11860   Median :1.1200  
#>          Mean   :0.6752            Mean   :11842   Mean   :1.1961  
#>          3rd Qu.:0.0000            3rd Qu.:14908   3rd Qu.:1.6550  
#>          Max.   :4.0000            Max.   :23202   Max.   :2.7750  
#>                                                                    
#>        CO              COV              SO2              CO2        
#>  Min.   : 0.250   Min.   :0.0250   Min.   :0.0010   Min.   : 14.29  
#>  1st Qu.: 2.928   1st Qu.:0.4525   1st Qu.:0.0540   1st Qu.: 73.72  
#>  Median : 4.107   Median :0.6250   Median :0.0660   Median :105.31  
#>  Mean   : 4.377   Mean   :0.6210   Mean   :0.0665   Mean   :104.63  
#>  3rd Qu.: 5.585   3rd Qu.:0.7850   3rd Qu.:0.0800   3rd Qu.:134.88  
#>  Max.   :10.170   Max.   :1.2550   Max.   :0.1270   Max.   :218.31  
#>                                                                     
#>       N2O        
#>  Min.   : 0.870  
#>  1st Qu.: 4.710  
#>  Median : 6.170  
#>  Mean   : 6.115  
#>  3rd Qu.: 7.580  
#>  Max.   :11.140  
#> 
ggplot(acero, aes(x = consumo)) +
  geom_histogram(bins = 10)

cor(acero_num, method = "pearson")
#>               consumo       pr.tbc        pr.cc       pr.ca    pr.galv1
#> consumo    1.00000000  0.743294582  0.385335203 -0.04462924  0.40126392
#> pr.tbc     0.74329458  1.000000000  0.153963066 -0.03999992  0.06614846
#> pr.cc      0.38533520  0.153963066  1.000000000 -0.19078475  0.30011090
#> pr.ca     -0.04462924 -0.039999921 -0.190784746  1.00000000  0.08285971
#> pr.galv1   0.40126392  0.066148462  0.300110895  0.08285971  1.00000000
#> pr.galv2   0.24073916  0.102247494  0.071083806 -0.08530484  0.04964655
#> pr.pint    0.19358492  0.003463181  0.268146068 -0.02709511  0.30078858
#> naverias   0.08159454  0.043766798 -0.006062556  0.03419317  0.19234310
#> ProdTotal  0.98411477  0.796884106  0.378792207 -0.06944511  0.36801534
#> NOx        0.55823709  0.421965121  0.226522618  0.03419399  0.27964572
#> CO         0.94517247  0.654857129  0.363734814 -0.04387984  0.40278763
#> COV        0.96592575  0.697052420  0.371621928 -0.04427419  0.40106530
#> SO2       -0.02855792 -0.019458190  0.023663924  0.13729688 -0.03168346
#> CO2        0.99974286  0.741999831  0.384874382 -0.04478564  0.40226240
#> N2O        0.85256929  0.655629358  0.336932276 -0.05524991  0.28963394
#>              pr.galv2      pr.pint     naverias    ProdTotal          NOx
#> consumo    0.24073916  0.193584920  0.081594535  0.984114769  0.558237089
#> pr.tbc     0.10224749  0.003463181  0.043766798  0.796884106  0.421965121
#> pr.cc      0.07108381  0.268146068 -0.006062556  0.378792207  0.226522618
#> pr.ca     -0.08530484 -0.027095106  0.034193168 -0.069445113  0.034193994
#> pr.galv1   0.04964655  0.300788576  0.192343100  0.368015341  0.279645716
#> pr.galv2   1.00000000  0.072855628 -0.110816558  0.251297646  0.049692805
#> pr.pint    0.07285563  1.000000000  0.024874363  0.195591110  0.227947791
#> naverias  -0.11081656  0.024874363  1.000000000  0.061010424  0.007078148
#> ProdTotal  0.25129765  0.195591110  0.061010424  1.000000000  0.553461773
#> NOx        0.04969281  0.227947791  0.007078148  0.553461773  1.000000000
#> CO         0.23960105  0.208304556  0.017011796  0.933465635  0.519471754
#> COV        0.25428635  0.209777456  0.029575561  0.953059807  0.534443884
#> SO2       -0.02235232  0.021772640 -0.107906290 -0.005547291 -0.126162900
#> CO2        0.23888384  0.196377049  0.079158396  0.983920527  0.568486815
#> N2O        0.18241273  0.188485503  0.033063524  0.854197218  0.531728148
#>                    CO         COV          SO2         CO2          N2O
#> consumo    0.94517247  0.96592575 -0.028557917  0.99974286  0.852569287
#> pr.tbc     0.65485713  0.69705242 -0.019458190  0.74199983  0.655629358
#> pr.cc      0.36373481  0.37162193  0.023663924  0.38487438  0.336932276
#> pr.ca     -0.04387984 -0.04427419  0.137296884 -0.04478564 -0.055249910
#> pr.galv1   0.40278763  0.40106530 -0.031683456  0.40226240  0.289633942
#> pr.galv2   0.23960105  0.25428635 -0.022352315  0.23888384  0.182412726
#> pr.pint    0.20830456  0.20977746  0.021772640  0.19637705  0.188485503
#> naverias   0.01701180  0.02957556 -0.107906290  0.07915840  0.033063524
#> ProdTotal  0.93346563  0.95305981 -0.005547291  0.98392053  0.854197218
#> NOx        0.51947175  0.53444388 -0.126162900  0.56848681  0.531728148
#> CO         1.00000000  0.99504982  0.044382463  0.94420266  0.819564142
#> COV        0.99504982  1.00000000  0.030834999  0.96500809  0.835862403
#> SO2        0.04438246  0.03083500  1.000000000 -0.02855760  0.007062938
#> CO2        0.94420266  0.96500809 -0.028557603  1.00000000  0.853984322
#> N2O        0.81956414  0.83586240  0.007062938  0.85398432  1.000000000

Este bloque mínimo puede servir para una primera demostración corta antes de recorrer todo el documento.