Estudiante: Brandon Ortiz Hernandez
Codigo:1104258729
Docente: Justo Fuentes
En esta actividad se realiza un análisis de probabilidad condicional
utilizando el conjunto de datos acero.csv. El objetivo es
analizar la posible relación entre dos variables categóricas mediante
una tabla de contingencia, probabilidades condicionales y una prueba de
independencia chi-cuadrado.
Las variables seleccionadas para el análisis son sistema
y averias.
El conjunto de datos utilizado es acero.csv, relacionado
con información de un proceso industrial.
Se seleccionaron las variables sistema y
averias. La variable sistema indica el estado
del sistema, mientras que averias indica si se presentó o
no una avería.
Esta pareja de variables es relevante para un ingeniero porque permite analizar si la ocurrencia de averías presenta alguna relación con el estado operativo del sistema. Esta información puede ser útil para analizar condiciones de operación y tomar decisiones relacionadas con mantenimiento.
# Importar el archivo acero.csv
acero <- read.csv("acero.csv", dec = ",")
# Mostrar las primeras filas
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.4900 3.5450 0.5450 0.038 101.5000 6.35
## 2 No 0 OFF 7251 0.0725 2.8950 0.4250 0.047 63.5650 2.23
## 3 No 0 OFF 11066 1.4900 5.0075 0.6900 0.062 98.8175 5.99
## 4 No 0 ON 8311 1.7150 2.1600 0.3600 0.066 70.1825 3.66
## 5 No 0 OFF 12459 0.4650 4.8450 0.6625 0.086 88.5300 6.06
## 6 Si 1 OFF 13059 2.4175 3.6725 0.5750 0.056 116.5375 6.15
# Revisar la estructura de los datos
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 : 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 : 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 ...
# Cantidad de filas y columnas
dim(acero)
## [1] 117 20
Primero se revisan las categorías de las dos variables que se van a utilizar.
# Frecuencias de sistema
table(acero$sistema)
##
## OFF ON
## 59 58
# Frecuencias de averias
table(acero$averias)
##
## No Si
## 89 28
La variable sistema presenta los estados ON y OFF,
mientras que la variable averias indica la presencia o
ausencia de una avería.
Se calculará la probabilidad de que ocurra una avería cuando el sistema se encuentra en estado OFF.
La probabilidad que se desea calcular es:
\[ P(\text{Avería = Sí} \mid \text{Sistema = OFF}) \]
La fórmula utilizada es:
\[ P(A|B)=\frac{P(A\cap B)}{P(B)} \]
En este caso, se tienen 16 registros donde el sistema está en OFF y se presentó una avería. Además, existen 59 registros en los que el sistema está en OFF.
Por lo tanto:
\[ P(\text{Avería Sí}|\text{Sistema OFF}) = \frac{16}{59} \]
\[ P(\text{Avería Sí}|\text{Sistema OFF}) = 0.2712 \]
Expresado como porcentaje:
\[ 0.2712\times100=27.12\% \]
Por lo tanto, la probabilidad de que ocurra una avería cuando el sistema está en OFF es aproximadamente 27.12%.
Se construye una tabla de contingencia utilizando la función
table().
tabla <- table(acero$sistema, acero$averias)
tabla
##
## No Si
## OFF 43 16
## ON 46 12
La tabla permite observar conjuntamente el estado del sistema y la presencia o ausencia de averías.
También se presenta la tabla de forma más organizada:
knitr::kable(
tabla,
caption = "Tabla de contingencia entre sistema y averias"
)
| No | Si | |
|---|---|---|
| OFF | 43 | 16 |
| ON | 46 | 12 |
Los totales marginales permiten conocer el número total de observaciones de cada fila y de cada columna.
margin.table(tabla, 1)
##
## OFF ON
## 59 58
Los totales por fila corresponden a la cantidad de registros en cada estado del sistema.
margin.table(tabla, 2)
##
## No Si
## 89 28
Los totales por columna corresponden a la cantidad de registros con y sin averías.
Para calcular las probabilidades dentro de cada fila se utiliza
prop.table() con margin = 1.
prob_condicionales <- prop.table(tabla, margin = 1)
prob_condicionales
##
## No Si
## OFF 0.7288136 0.2711864
## ON 0.7931034 0.2068966
Para mostrar los resultados en porcentaje:
round(prob_condicionales * 100, 2)
##
## No Si
## OFF 72.88 27.12
## ON 79.31 20.69
Los resultados permiten comparar la proporción de averías dependiendo del estado del sistema.
La probabilidad de una avería cuando el sistema está OFF se puede obtener directamente:
prob_averia_off <- prop.table(tabla, margin = 1)["OFF", "Si"]
prob_averia_off
## [1] 0.2711864
En porcentaje:
round(prob_averia_off * 100, 2)
## [1] 27.12
Se comprueba mediante R el cálculo realizado manualmente.
casos_off_averia <- tabla["OFF", "Si"]
total_off <- sum(tabla["OFF", ])
probabilidad_manual <- casos_off_averia / total_off
probabilidad_manual
## [1] 0.2711864
En porcentaje:
round(probabilidad_manual * 100, 2)
## [1] 27.12
El resultado obtenido mediante R coincide con el cálculo realizado manualmente, confirmando que la probabilidad calculada es aproximadamente 27.12%.
Las probabilidades conjuntas se calculan utilizando
prop.table() sin especificar el argumento
margin.
prob_conjuntas <- prop.table(tabla)
prob_conjuntas
##
## No Si
## OFF 0.3675214 0.1367521
## ON 0.3931624 0.1025641
Los resultados también pueden expresarse como porcentajes:
round(prob_conjuntas * 100, 2)
##
## No Si
## OFF 36.75 13.68
## ON 39.32 10.26
Por ejemplo, la probabilidad conjunta de que el sistema esté OFF y se presente una avería es:
prob_off_averia <- prop.table(tabla)["OFF", "Si"]
prob_off_averia
## [1] 0.1367521
En porcentaje:
round(prob_off_averia * 100, 2)
## [1] 13.68
Se utiliza addmargins() para agregar los totales de las
filas y columnas.
tabla_resumen <- addmargins(tabla)
tabla_resumen
##
## No Si Sum
## OFF 43 16 59
## ON 46 12 58
## Sum 89 28 117
También se presenta la tabla de forma organizada:
knitr::kable(
tabla_resumen,
caption = "Tabla de contingencia con totales marginales"
)
| No | Si | Sum | |
|---|---|---|---|
| OFF | 43 | 16 | 59 |
| ON | 46 | 12 | 58 |
| Sum | 89 | 28 | 117 |
Para determinar si existe evidencia de asociación entre las variables se realiza una prueba de independencia chi-cuadrado.
Hipótesis nula (H0):
Las variables sistema y averias son
independientes.
Hipótesis alternativa (H1):
Existe una asociación entre las variables sistema y
averias.
Se utilizará un nivel de significancia de:
\[ \alpha = 0.05 \]
Primero se realiza la prueba utilizando la configuración
predeterminada de chisq.test().
prueba_chi <- chisq.test(tabla)
prueba_chi
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: tabla
## X-squared = 0.35785, df = 1, p-value = 0.5497
Se extraen los principales resultados:
cat("Chi-cuadrado:", prueba_chi$statistic, "\n")
## Chi-cuadrado: 0.3578515
cat("Grados de libertad:", prueba_chi$parameter, "\n")
## Grados de libertad: 1
cat("Valor p:", prueba_chi$p.value, "\n")
## Valor p: 0.5497019
Debido a que la tabla es 2 × 2, también se realiza la prueba sin corrección.
prueba_chi_sin_correccion <- chisq.test(
tabla,
correct = FALSE
)
prueba_chi_sin_correccion
##
## Pearson's Chi-squared test
##
## data: tabla
## X-squared = 0.66405, df = 1, p-value = 0.4151
Se extraen los resultados:
cat(
"Chi-cuadrado sin corrección:",
prueba_chi_sin_correccion$statistic,
"\n"
)
## Chi-cuadrado sin corrección: 0.6640537
cat(
"Grados de libertad:",
prueba_chi_sin_correccion$parameter,
"\n"
)
## Grados de libertad: 1
cat(
"Valor p:",
prueba_chi_sin_correccion$p.value,
"\n"
)
## Valor p: 0.4151325
comparacion <- data.frame(
Prueba = c(
"Con corrección de Yates",
"Sin corrección de Yates"
),
Chi_cuadrado = c(
as.numeric(prueba_chi$statistic),
as.numeric(prueba_chi_sin_correccion$statistic)
),
Valor_p = c(
prueba_chi$p.value,
prueba_chi_sin_correccion$p.value
)
)
knitr::kable(
comparacion,
digits = 4,
caption = "Comparación de las pruebas chi-cuadrado"
)
| Prueba | Chi_cuadrado | Valor_p |
|---|---|---|
| Con corrección de Yates | 0.3579 | 0.5497 |
| Sin corrección de Yates | 0.6641 | 0.4151 |
El nivel de significancia utilizado es:
\[ \alpha=0.05 \]
El valor p obtenido mediante la prueba chi-cuadrado con corrección de Yates es aproximadamente 0.5497.
El valor p obtenido sin la corrección de Yates es aproximadamente 0.4151.
Ambos valores son mayores que 0.05.
Por lo tanto, no se rechaza la hipótesis nula de independencia.
Esto significa que, con los datos disponibles, no existe evidencia estadísticamente significativa suficiente para afirmar que exista una asociación entre el estado del sistema y la ocurrencia de averías.
Es importante aclarar que este resultado no demuestra que las dos variables sean completamente independientes. Lo que indica es que los datos analizados no proporcionan evidencia suficiente para rechazar la hipótesis de independencia al nivel de significancia utilizado.
A partir del análisis realizado no se encontró evidencia estadísticamente significativa de una dependencia entre el estado del sistema y la ocurrencia de averías. La probabilidad de presentar una avería cuando el sistema está en OFF fue aproximadamente 27.12%. Aunque existen diferencias entre las proporciones observadas en los estados ON y OFF, la prueba chi-cuadrado no encontró una asociación significativa al nivel de 0.05.
Desde el punto de vista de ingeniería, estos resultados indican que no sería adecuado atribuir las averías únicamente al estado ON u OFF del sistema. Para tomar decisiones relacionadas con mantenimiento o prevención de fallas sería conveniente analizar también otras variables del proceso, como la temperatura, la hora de operación y otros factores que puedan estar relacionados con las averías.
El análisis permitió aplicar diferentes herramientas estadísticas para estudiar la relación entre dos variables categóricas. Primero se construyó una tabla de contingencia y posteriormente se calcularon probabilidades marginales, condicionales y conjuntas.
El cálculo manual de la probabilidad de una avería cuando el sistema está en OFF produjo un resultado de aproximadamente 27.12%, el cual coincidió con el cálculo realizado mediante R. Finalmente, las pruebas chi-cuadrado con y sin corrección de Yates presentaron valores p superiores a 0.05.
Por lo tanto, con la información analizada no se encontró evidencia
estadísticamente significativa de una relación entre
sistema y averias.
Se utilizó ChatGPT como herramienta de apoyo para comprender las instrucciones de la actividad, organizar el análisis y revisar el código utilizado en R.
El prompt utilizado para solicitar apoyo fue:
“Teniendo en cuenta ese link y la imagen que te mandé explícame qué tengo que hacer paso a paso.”
Posteriormente se solicitó apoyo para organizar el código completo del análisis.
El código generado con apoyo de IA fue revisado antes de utilizarse.
Se verificó la importación del archivo acero.csv, las
variables seleccionadas, la tabla de contingencia, las probabilidades
condicionales y conjuntas y las pruebas chi-cuadrado.
También se comprobó que el cálculo manual de la probabilidad de una avería cuando el sistema está OFF coincidiera con el resultado obtenido mediante R.
R Core Team. (2024). R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing, Vienna, Austria.
R Documentation. chisq.test: Pearson’s Chi-squared Test for Count Data. Documentación oficial de R.
R Documentation. table: Cross Tabulation and Table Creation. Documentación oficial de R.
R Documentation. prop.table: Proportions of Table Margins. Documentación oficial de R.
R Documentation. margin.table: Compute Table Margins. Documentación oficial de R.
R Documentation. addmargins: Put Arbitrary Margins on a Table. Documentación oficial de R.
Fuente de apoyo de la actividad: RPubs. Probabilidad Condicional y Tablas de Contingencia. https://rpubs.com/justorfc/1457385