1. Introducción

En este trabajo se realiza un análisis estadístico de un conjunto de datos relacionado con una línea de producción de acero. El análisis se centra en el estudio de la relación entre la variable linea y la variable sistema, utilizando tablas de contingencia, probabilidades marginales, probabilidades conjuntas, probabilidades condicionales y una prueba de independencia Chi-cuadrado.

El objetivo es aplicar conceptos de probabilidad y estadística a una situación relacionada con un proceso industrial, interpretando los resultados tanto desde el punto de vista estadístico como desde una perspectiva de ingeniería.

2. Objetivos

2.1 Objetivo general

Analizar la relación entre la línea de producción y el estado del sistema mediante herramientas de probabilidad y estadística.

2.2 Objetivos específicos

  • Construir una tabla de contingencia entre las variables linea y sistema.
  • Calcular frecuencias absolutas y relativas.
  • Determinar probabilidades marginales y conjuntas.
  • Calcular probabilidades condicionales.
  • Calcular manualmente la probabilidad \(P(A|OFF)\).
  • Verificar el cálculo manual utilizando R.
  • Aplicar una prueba Chi-cuadrado de independencia.
  • Interpretar los resultados obtenidos en el contexto de una línea de producción.

3. Carga de los datos

El conjunto de datos utilizado se encuentra en el archivo acero.csv.

Primero se importa el archivo utilizando R.

acero <- read.csv("acero.csv", stringsAsFactors = FALSE)

head(acero)
##   consumo pr.tbc pr.cc pr.ca pr.galv1 pr.galv2 pr.pint linea hora temperatura
## 1  135,31   6840   830     0      579     1401       0     A   1º        Alta
## 2   84,08    443   903    58      611     1636     717     A   2º        Alta
## 3  131,62   7270   572    36      982     1963     243     A   3º        Baja
## 4   90,46   5031   694   122      896     1568       0     A   4º        Baja
## 5  120,04   9365  1054   157      403     1480       0     A   5º        Baja
## 6  153,68   9281  1003   172      605     1525     473     A   6º        Baja
##   averias naverias sistema ProdTotal    NOx     CO    COV   SO2      CO2  N2O
## 1      Si        1     OFF     11266   0,49  3,545  0,545 0,038    101,5 6,35
## 2      No        0     OFF      7251 0,0725  2,895  0,425 0,047   63,565 2,23
## 3      No        0     OFF     11066   1,49 5,0075   0,69 0,062  98,8175 5,99
## 4      No        0      ON      8311  1,715   2,16   0,36 0,066  70,1825 3,66
## 5      No        0     OFF     12459  0,465  4,845 0,6625 0,086    88,53 6,06
## 6      Si        1     OFF     13059 2,4175 3,6725  0,575 0,056 116,5375 6,15

4. Exploración inicial de los datos

Para conocer las dimensiones del conjunto de datos se utilizan las funciones dim(), names() y str().

dim(acero)
## [1] 117  20
names(acero)
##  [1] "consumo"     "pr.tbc"      "pr.cc"       "pr.ca"       "pr.galv1"   
##  [6] "pr.galv2"    "pr.pint"     "linea"       "hora"        "temperatura"
## [11] "averias"     "naverias"    "sistema"     "ProdTotal"   "NOx"        
## [16] "CO"          "COV"         "SO2"         "CO2"         "N2O"
str(acero)
## 'data.frame':    117 obs. of  20 variables:
##  $ consumo    : chr  "135,31" "84,08" "131,62" "90,46" ...
##  $ 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      : chr  "A" "A" "A" "A" ...
##  $ hora       : chr  "1º" "2º" "3º" "4º" ...
##  $ temperatura: chr  "Alta" "Alta" "Baja" "Baja" ...
##  $ averias    : chr  "Si" "No" "No" "No" ...
##  $ naverias   : int  1 0 0 0 0 1 0 0 0 3 ...
##  $ sistema    : chr  "OFF" "OFF" "OFF" "ON" ...
##  $ ProdTotal  : int  11266 7251 11066 8311 12459 13059 8555 18253 11697 13194 ...
##  $ NOx        : chr  "0,49" "0,0725" "1,49" "1,715" ...
##  $ CO         : chr  "3,545" "2,895" "5,0075" "2,16" ...
##  $ COV        : chr  "0,545" "0,425" "0,69" "0,36" ...
##  $ SO2        : chr  "0,038" "0,047" "0,062" "0,066" ...
##  $ CO2        : chr  "101,5" "63,565" "98,8175" "70,1825" ...
##  $ N2O        : chr  "6,35" "2,23" "5,99" "3,66" ...

El conjunto de datos contiene 117 observaciones y 20 variables.

La variable linea identifica la línea de producción, mientras que la variable sistema identifica si el sistema se encuentra en estado ON u OFF.

5. Frecuencia de la variable línea

Se calcula la frecuencia de cada línea de producción.

table(acero$linea)
## 
##  A  B  C 
## 39 39 39

El resultado muestra:

  • Línea A: 39 observaciones.
  • Línea B: 39 observaciones.
  • Línea C: 39 observaciones.

Por lo tanto, las tres líneas presentan la misma cantidad de observaciones.

6. Frecuencia de la variable sistema

Se calcula la frecuencia de los estados del sistema.

table(acero$sistema)
## 
## OFF  ON 
##  59  58

Los resultados son:

  • Sistema OFF: 59 observaciones.
  • Sistema ON: 58 observaciones.

La cantidad de observaciones en ambos estados es bastante similar.

7. Justificación de las variables seleccionadas

Para el análisis se seleccionaron las variables linea y sistema.

La variable linea permite identificar a cuál de las tres líneas de producción pertenece cada observación.

La variable sistema permite conocer si el sistema se encontraba en estado ON u OFF.

Estas variables son adecuadas para construir una tabla de contingencia y analizar si existe alguna relación entre la línea de producción y el estado del sistema.

8. Tabla de contingencia

Se construye la tabla de contingencia entre linea y sistema.

tabla <- table(acero$linea, acero$sistema)

tabla
##    
##     OFF ON
##   A  18 21
##   B  20 19
##   C  21 18

La tabla obtenida es:

Línea OFF ON Total
A 18 21 39
B 20 19 39
C 21 18 39
Total 59 58 117

Para agregar los totales directamente en R:

addmargins(tabla)
##      
##       OFF  ON Sum
##   A    18  21  39
##   B    20  19  39
##   C    21  18  39
##   Sum  59  58 117

9. Totales marginales

Los totales marginales permiten observar las frecuencias totales de cada variable.

Para la variable linea:

margin.table(tabla, 1)
## 
##  A  B  C 
## 39 39 39

Para la variable sistema:

margin.table(tabla, 2)
## 
## OFF  ON 
##  59  58

Los totales son:

  • Línea A = 39
  • Línea B = 39
  • Línea C = 39
  • Sistema OFF = 59
  • Sistema ON = 58
  • Total general = 117

10. Probabilidades marginales

Las probabilidades marginales se obtienen dividiendo cada total marginal entre el total de observaciones.

prop.table(margin.table(tabla, 1))
## 
##         A         B         C 
## 0.3333333 0.3333333 0.3333333

Las probabilidades de las líneas son:

  • \(P(A)=39/117=0.3333\)
  • \(P(B)=39/117=0.3333\)
  • \(P(C)=39/117=0.3333\)

Para los estados del sistema:

prop.table(margin.table(tabla, 2))
## 
##       OFF        ON 
## 0.5042735 0.4957265

Se obtiene:

  • \(P(OFF)=59/117\approx0.5043\)
  • \(P(ON)=58/117\approx0.4957\)

11. Probabilidades conjuntas

Las probabilidades conjuntas representan la probabilidad de que ocurran simultáneamente una determinada línea y un determinado estado del sistema.

prop.table(tabla)
##    
##           OFF        ON
##   A 0.1538462 0.1794872
##   B 0.1709402 0.1623932
##   C 0.1794872 0.1538462

Por ejemplo:

\[ P(A\cap OFF)=\frac{18}{117}=0.1538 \]

Por lo tanto, existe aproximadamente un 15.38 % de observaciones correspondientes simultáneamente a la línea A y al sistema OFF.

También:

\[ P(A\cap ON)=\frac{21}{117}=0.1795 \]

\[ P(B\cap OFF)=\frac{20}{117}=0.1709 \]

\[ P(B\cap ON)=\frac{19}{117}=0.1624 \]

\[ P(C\cap OFF)=\frac{21}{117}=0.1795 \]

\[ P(C\cap ON)=\frac{18}{117}=0.1538 \]

12. Probabilidades condicionales

Las probabilidades condicionales permiten analizar la probabilidad de una línea determinada dado un estado específico del sistema.

Se calculan utilizando:

prop.table(tabla, margin = 2)
##    
##           OFF        ON
##   A 0.3050847 0.3620690
##   B 0.3389831 0.3275862
##   C 0.3559322 0.3103448

En este caso se obtiene la distribución de las líneas condicionada al estado del sistema.

Para el sistema OFF:

\[ P(A|OFF)=\frac{18}{59}=0.3051 \]

\[ P(B|OFF)=\frac{20}{59}=0.3390 \]

\[ P(C|OFF)=\frac{21}{59}=0.3559 \]

Para el sistema ON:

\[ P(A|ON)=\frac{21}{58}=0.3621 \]

\[ P(B|ON)=\frac{19}{58}=0.3276 \]

\[ P(C|ON)=\frac{18}{58}=0.3103 \]

13. Cálculo manual de P(A|OFF)

La probabilidad condicional solicitada es:

\[ P(A|OFF)=\frac{P(A\cap OFF)}{P(OFF)} \]

De acuerdo con la tabla de contingencia:

\[ P(A\cap OFF)=\frac{18}{117} \]

y:

\[ P(OFF)=\frac{59}{117} \]

Por lo tanto:

\[ P(A|OFF)= \frac{18/117}{59/117} \]

Se simplifica el cálculo:

\[ P(A|OFF)=\frac{18}{59} \]

Finalmente:

\[ P(A|OFF)=0.3051 \]

o expresado como porcentaje:

\[ P(A|OFF)=30.51\% \]

Esto significa que, entre todas las observaciones en las que el sistema está en estado OFF, aproximadamente el 30.51 % corresponde a la línea A.

14. Cálculo realizado manualmente

A continuación se presenta la evidencia del cálculo manual realizado.

La imagen muestra el procedimiento:

\[ P(A|OFF)=\frac{P(A\cap OFF)}{P(OFF)} \]

\[ =\frac{18/117}{59/117} \]

\[ =\frac{18}{59} \]

\[ =0.3051 \]

\[ =30.51\% \]

15. Verificación del cálculo mediante R

El resultado obtenido manualmente se verifica utilizando R.

prob_A_dado_OFF <- tabla["A", "OFF"] / sum(tabla[, "OFF"])

prob_A_dado_OFF
## [1] 0.3050847
prob_A_dado_OFF * 100
## [1] 30.50847

El resultado obtenido es aproximadamente:

\[ P(A|OFF)=0.3051 \]

o:

\[ P(A|OFF)=30.51\% \]

Por lo tanto, el cálculo manual coincide con el cálculo realizado mediante R.

16. Probabilidades condicionales por línea

También es posible analizar la probabilidad del estado del sistema condicionada a cada línea.

prop.table(tabla, margin = 1)
##    
##           OFF        ON
##   A 0.4615385 0.5384615
##   B 0.5128205 0.4871795
##   C 0.5384615 0.4615385

Los resultados son aproximadamente:

Línea A

\[ P(OFF|A)=\frac{18}{39}=0.4615 \]

\[ P(ON|A)=\frac{21}{39}=0.5385 \]

Línea B

\[ P(OFF|B)=\frac{20}{39}=0.5128 \]

\[ P(ON|B)=\frac{19}{39}=0.4872 \]

Línea C

\[ P(OFF|C)=\frac{21}{39}=0.5385 \]

\[ P(ON|C)=\frac{18}{39}=0.4615 \]

Esto permite observar cómo se distribuyen los estados ON y OFF dentro de cada línea.

17. Planteamiento de hipótesis

Para determinar si existe una relación estadísticamente significativa entre linea y sistema, se realiza una prueba Chi-cuadrado de independencia.

Las hipótesis son:

Hipótesis nula \(H_0\):

Las variables linea y sistema son independientes.

Hipótesis alternativa \(H_1\):

Las variables linea y sistema no son independientes; existe una asociación entre ellas.

Se utilizará un nivel de significancia:

\[ \alpha=0.05 \]

18. Prueba Chi-cuadrado de independencia

La prueba se realiza utilizando la función chisq.test().

prueba_chi <- chisq.test(tabla)

prueba_chi
## 
##  Pearson's Chi-squared test
## 
## data:  tabla
## X-squared = 0.47867, df = 2, p-value = 0.7872

El resultado obtenido es aproximadamente:

\[ \chi^2=0.4787 \]

con:

\[ gl=2 \]

y un valor p aproximado de:

\[ p=0.7872 \]

19. Frecuencias esperadas

Las frecuencias esperadas pueden obtenerse mediante:

prueba_chi$expected
##    
##          OFF       ON
##   A 19.66667 19.33333
##   B 19.66667 19.33333
##   C 19.66667 19.33333

Los valores esperados son aproximadamente:

Línea OFF ON
A 19.67 19.33
B 19.67 19.33
C 19.67 19.33

Estas frecuencias representan los valores que se esperarían si las variables linea y sistema fueran independientes.

20. Valor p

El valor p puede obtenerse directamente mediante:

prueba_chi$p.value
## [1] 0.7871521

El valor obtenido es aproximadamente:

\[ p=0.7872 \]

Como:

\[ 0.7872>0.05 \]

no se rechaza la hipótesis nula.

21. Interpretación estadística

Con un nivel de significancia del 5 %, no existe evidencia estadística suficiente para rechazar la hipótesis de independencia entre la línea de producción y el estado del sistema.

En otras palabras, con los datos disponibles en esta muestra, no se encuentra una asociación estadísticamente significativa entre linea y sistema.

Esto no significa que se haya demostrado que las variables sean absolutamente independientes en cualquier situación, sino que los datos analizados no proporcionan evidencia suficiente para afirmar una asociación estadísticamente significativa.

22. Corrección de continuidad de Yates

La corrección de continuidad de Yates se utiliza principalmente en tablas de contingencia 2 × 2.

En este análisis la tabla tiene dimensiones 3 × 2, debido a que existen tres líneas de producción (A, B y C) y dos estados del sistema (ON y OFF).

Por esta razón, la corrección de continuidad de Yates no se aplica en este caso.

La prueba utilizada corresponde a la prueba Chi-cuadrado de independencia para una tabla de contingencia 3 × 2.

23. Interpretación desde el punto de vista de ingeniería

Desde una perspectiva de ingeniería, la tabla permite observar cómo se distribuyen los estados ON y OFF entre las tres líneas de producción.

Las frecuencias observadas son relativamente similares entre las líneas:

  • Línea A: 18 OFF y 21 ON.
  • Línea B: 20 OFF y 19 ON.
  • Línea C: 21 OFF y 18 ON.

Aunque existen pequeñas diferencias entre las frecuencias observadas, estas diferencias son pequeñas y la prueba Chi-cuadrado indica que no son estadísticamente significativas al nivel de significancia del 5 %.

Por lo tanto, en esta muestra no se identifica evidencia estadística suficiente para afirmar que el estado del sistema dependa de la línea de producción.

24. Conclusiones

A partir del análisis realizado se obtienen las siguientes conclusiones:

  1. El conjunto de datos contiene 117 observaciones y 20 variables.

  2. Las líneas A, B y C cuentan cada una con 39 observaciones.

  3. El sistema se encuentra en estado OFF en 59 observaciones y en estado ON en 58 observaciones.

  4. La probabilidad de que una observación pertenezca a la línea A dado que el sistema está OFF es:

\[ P(A|OFF)=\frac{18}{59}=0.3051 \]

equivalente a 30.51 %.

  1. El cálculo manual de \(P(A|OFF)\) coincide con el resultado obtenido mediante R.

  2. La prueba Chi-cuadrado produjo aproximadamente:

\[ \chi^2=0.4787 \]

con 2 grados de libertad y un valor p aproximado de:

\[ p=0.7872 \]

  1. Debido a que el valor p es mayor que 0.05, no se rechaza la hipótesis nula de independencia.

  2. En consecuencia, para esta muestra no existe evidencia estadística suficiente para afirmar que exista una asociación entre la línea de producción y el estado del sistema.

25. Herramientas utilizadas

Para la realización del trabajo se utilizaron las siguientes herramientas:

  • R: utilizado para importar, procesar y analizar los datos.
  • RStudio / Posit Cloud: utilizado como entorno para escribir y ejecutar el código R Markdown.
  • R Markdown: utilizado para integrar texto, cálculos, código y resultados en un único informe.
  • ChatGPT (OpenAI): utilizado como herramienta de apoyo para organizar el informe, revisar el código, explicar conceptos estadísticos y orientar la elaboración del documento.

Los cálculos estadísticos y resultados presentados en este informe fueron realizados y verificados mediante R utilizando el archivo acero.csv.

26. Referencias bibliográficas

R Core Team. (2024). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. https://www.R-project.org/

RStudio Team. (2024). RStudio: Integrated Development Environment for R. Posit Software, PBC. https://posit.co/products/open-source/rstudio/

Walpole, R. E., Myers, R. H., Myers, S. L., & Ye, K. (2012). Probabilidad y estadística para ingeniería y ciencias (9.ª ed.). Pearson Educación.

Montgomery, D. C., & Runger, G. C. (2018). Probabilidad y estadística aplicadas a la ingeniería (7.ª ed.). Limusa Wiley.

Apéndice. Código completo utilizado

# Cargar los datos
acero <- read.csv("acero.csv", stringsAsFactors = FALSE)

# Exploración inicial
head(acero)
##   consumo pr.tbc pr.cc pr.ca pr.galv1 pr.galv2 pr.pint linea hora temperatura
## 1  135,31   6840   830     0      579     1401       0     A   1º        Alta
## 2   84,08    443   903    58      611     1636     717     A   2º        Alta
## 3  131,62   7270   572    36      982     1963     243     A   3º        Baja
## 4   90,46   5031   694   122      896     1568       0     A   4º        Baja
## 5  120,04   9365  1054   157      403     1480       0     A   5º        Baja
## 6  153,68   9281  1003   172      605     1525     473     A   6º        Baja
##   averias naverias sistema ProdTotal    NOx     CO    COV   SO2      CO2  N2O
## 1      Si        1     OFF     11266   0,49  3,545  0,545 0,038    101,5 6,35
## 2      No        0     OFF      7251 0,0725  2,895  0,425 0,047   63,565 2,23
## 3      No        0     OFF     11066   1,49 5,0075   0,69 0,062  98,8175 5,99
## 4      No        0      ON      8311  1,715   2,16   0,36 0,066  70,1825 3,66
## 5      No        0     OFF     12459  0,465  4,845 0,6625 0,086    88,53 6,06
## 6      Si        1     OFF     13059 2,4175 3,6725  0,575 0,056 116,5375 6,15
dim(acero)
## [1] 117  20
names(acero)
##  [1] "consumo"     "pr.tbc"      "pr.cc"       "pr.ca"       "pr.galv1"   
##  [6] "pr.galv2"    "pr.pint"     "linea"       "hora"        "temperatura"
## [11] "averias"     "naverias"    "sistema"     "ProdTotal"   "NOx"        
## [16] "CO"          "COV"         "SO2"         "CO2"         "N2O"
str(acero)
## 'data.frame':    117 obs. of  20 variables:
##  $ consumo    : chr  "135,31" "84,08" "131,62" "90,46" ...
##  $ 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      : chr  "A" "A" "A" "A" ...
##  $ hora       : chr  "1º" "2º" "3º" "4º" ...
##  $ temperatura: chr  "Alta" "Alta" "Baja" "Baja" ...
##  $ averias    : chr  "Si" "No" "No" "No" ...
##  $ naverias   : int  1 0 0 0 0 1 0 0 0 3 ...
##  $ sistema    : chr  "OFF" "OFF" "OFF" "ON" ...
##  $ ProdTotal  : int  11266 7251 11066 8311 12459 13059 8555 18253 11697 13194 ...
##  $ NOx        : chr  "0,49" "0,0725" "1,49" "1,715" ...
##  $ CO         : chr  "3,545" "2,895" "5,0075" "2,16" ...
##  $ COV        : chr  "0,545" "0,425" "0,69" "0,36" ...
##  $ SO2        : chr  "0,038" "0,047" "0,062" "0,066" ...
##  $ CO2        : chr  "101,5" "63,565" "98,8175" "70,1825" ...
##  $ N2O        : chr  "6,35" "2,23" "5,99" "3,66" ...
# Frecuencias
table(acero$linea)
## 
##  A  B  C 
## 39 39 39
table(acero$sistema)
## 
## OFF  ON 
##  59  58
# Tabla de contingencia
tabla <- table(acero$linea, acero$sistema)
tabla
##    
##     OFF ON
##   A  18 21
##   B  20 19
##   C  21 18
addmargins(tabla)
##      
##       OFF  ON Sum
##   A    18  21  39
##   B    20  19  39
##   C    21  18  39
##   Sum  59  58 117
# Totales marginales
margin.table(tabla, 1)
## 
##  A  B  C 
## 39 39 39
margin.table(tabla, 2)
## 
## OFF  ON 
##  59  58
# Probabilidades marginales
prop.table(margin.table(tabla, 1))
## 
##         A         B         C 
## 0.3333333 0.3333333 0.3333333
prop.table(margin.table(tabla, 2))
## 
##       OFF        ON 
## 0.5042735 0.4957265
# Probabilidades conjuntas
prop.table(tabla)
##    
##           OFF        ON
##   A 0.1538462 0.1794872
##   B 0.1709402 0.1623932
##   C 0.1794872 0.1538462
# Probabilidades condicionales
prop.table(tabla, margin = 2)
##    
##           OFF        ON
##   A 0.3050847 0.3620690
##   B 0.3389831 0.3275862
##   C 0.3559322 0.3103448
prop.table(tabla, margin = 1)
##    
##           OFF        ON
##   A 0.4615385 0.5384615
##   B 0.5128205 0.4871795
##   C 0.5384615 0.4615385
# Probabilidad P(A|OFF)
prob_A_dado_OFF <- tabla["A", "OFF"] / sum(tabla[, "OFF"])
prob_A_dado_OFF
## [1] 0.3050847
prob_A_dado_OFF * 100
## [1] 30.50847
# Prueba Chi-cuadrado
prueba_chi <- chisq.test(tabla)
prueba_chi
## 
##  Pearson's Chi-squared test
## 
## data:  tabla
## X-squared = 0.47867, df = 2, p-value = 0.7872
# Frecuencias esperadas
prueba_chi$expected
##    
##          OFF       ON
##   A 19.66667 19.33333
##   B 19.66667 19.33333
##   C 19.66667 19.33333
# Valor p
prueba_chi$p.value
## [1] 0.7871521