Introducción

El análisis de probabilidades y tablas de contingencia permite estudiar la relación entre variables categóricas. En este trabajo se analiza la relación entre el estado de un sistema y la ocurrencia de averías, utilizando información del conjunto de datos acero.csv.

Planteamiento del problema

Pregunta de investigación

¿Existe dependencia estadística entre el estado del sistema y la ocurrencia de averías?

Hipótesis

H₀: El estado del sistema y la ocurrencia de averías son independientes.

H₁: El estado del sistema y la ocurrencia de averías presentan dependencia estadística.

Descripción de los datos

Carga de los datos

library(knitr)

# Si acero.csv existe, se carga automáticamente.
# Si no existe, se utiliza la tabla de datos trabajada.

if (file.exists("acero.csv")) {

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

} else {

  acero <- data.frame(
    sistema = c(
      rep("OFF", 43),
      rep("OFF", 16),
      rep("ON", 46),
      rep("ON", 12)
    ),
    
    averias = c(
      rep("No", 43),
      rep("Si", 16),
      rep("No", 46),
      rep("Si", 12)
    )
  )

}

cat("Número de observaciones:", nrow(acero), "\n")
## Número de observaciones: 117
cat("Número de variables:", ncol(acero), "\n")
## Número de variables: 2

Variables seleccionadas

Las variables seleccionadas son:

  • Sistema: estado del sistema, clasificado como OFF u ON.
  • Averías: indica si se presentó o no una avería.

Análisis de la tabla de contingencia

Construcción de la tabla

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

kable(
  tabla,
  caption = "Tabla 1. Contingencia entre el estado del sistema y la ocurrencia de averías"
)
Tabla 1. Contingencia entre el estado del sistema y la ocurrencia de averías
No Si
OFF 43 16
ON 46 12

Totales marginales

totales_sistema <- margin.table(tabla, 1)
totales_averias <- margin.table(tabla, 2)

tabla_sistema <- data.frame(
  Sistema = names(totales_sistema),
  Total = as.numeric(totales_sistema)
)

tabla_averias <- data.frame(
  Averias = names(totales_averias),
  Total = as.numeric(totales_averias)
)

kable(
  tabla_sistema,
  caption = "Tabla 2. Total de observaciones según el estado del sistema"
)
Tabla 2. Total de observaciones según el estado del sistema
Sistema Total
OFF 59
ON 58
kable(
  tabla_averias,
  caption = "Tabla 3. Total de observaciones según la ocurrencia de averías"
)
Tabla 3. Total de observaciones según la ocurrencia de averías
Averias Total
No 89
Si 28

Tabla de contingencia con totales

tabla_totales <- addmargins(tabla)

kable(
  tabla_totales,
  caption = "Tabla 4. Tabla de contingencia con totales marginales"
)
Tabla 4. Tabla de contingencia con totales marginales
No Si Sum
OFF 43 16 59
ON 46 12 58
Sum 89 28 117

Probabilidad condicional

Fórmula de probabilidad condicional

La probabilidad condicional se calcula mediante:

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

Esta expresión permite determinar la probabilidad de que ocurra un evento cuando se conoce que otro evento ya ocurrió.

Probabilidad de avería cuando el sistema está ON

El cálculo manual es:

\[ P(\text{Avería Sí}|\text{Sistema ON}) = \frac{12}{58} \]

\[ P(\text{Avería Sí}|\text{Sistema ON}) = 0.2069 \]

Por lo tanto:

\[ P(\text{Avería Sí}|\text{Sistema ON})=20.69\% \]

Probabilidad de avería cuando el sistema está OFF

El cálculo manual es:

\[ P(\text{Avería Sí}|\text{Sistema OFF}) = \frac{16}{59} \]

\[ P(\text{Avería Sí}|\text{Sistema OFF}) = 0.2712 \]

Por lo tanto:

\[ P(\text{Avería Sí}|\text{Sistema OFF})=27.12\% \]

Probabilidades condicionales mediante R

Cálculo de probabilidades condicionales

prob_condicional <- prop.table(tabla, margin = 1)

kable(
  prob_condicional,
  digits = 4,
  caption = "Tabla 5. Probabilidades condicionales de avería según el estado del sistema"
)
Tabla 5. Probabilidades condicionales de avería según el estado del sistema
No Si
OFF 0.7288 0.2712
ON 0.7931 0.2069

Probabilidad P(Avería Sí | Sistema ON)

p_averia_on <- tabla["ON", "Si"] / sum(tabla["ON", ])

resultado_on <- data.frame(
  Sistema = "ON",
  Averia = "Si",
  Casos = as.numeric(tabla["ON", "Si"]),
  Total_sistema = as.numeric(sum(tabla["ON", ])),
  Probabilidad = p_averia_on,
  Porcentaje = p_averia_on * 100
)

kable(
  resultado_on,
  digits = 4,
  caption = "Tabla 6. Cálculo de P(Avería Sí | Sistema ON)"
)
Tabla 6. Cálculo de P(Avería Sí | Sistema ON)
Sistema Averia Casos Total_sistema Probabilidad Porcentaje
ON Si 12 58 0.2069 20.6897

Probabilidad P(Avería Sí | Sistema OFF)

p_averia_off <- tabla["OFF", "Si"] / sum(tabla["OFF", ])

resultado_off <- data.frame(
  Sistema = "OFF",
  Averia = "Si",
  Casos = as.numeric(tabla["OFF", "Si"]),
  Total_sistema = as.numeric(sum(tabla["OFF", ])),
  Probabilidad = p_averia_off,
  Porcentaje = p_averia_off * 100
)

kable(
  resultado_off,
  digits = 4,
  caption = "Tabla 7. Cálculo de P(Avería Sí | Sistema OFF)"
)
Tabla 7. Cálculo de P(Avería Sí | Sistema OFF)
Sistema Averia Casos Total_sistema Probabilidad Porcentaje
OFF Si 16 59 0.2712 27.1186

Probabilidades conjuntas

Tabla de probabilidades conjuntas

prob_conjuntas <- prop.table(tabla)

kable(
  prob_conjuntas,
  digits = 4,
  caption = "Tabla 8. Probabilidades conjuntas entre el sistema y las averías"
)
Tabla 8. Probabilidades conjuntas entre el sistema y las averías
No Si
OFF 0.3675 0.1368
ON 0.3932 0.1026

Probabilidad P(ON y Avería Sí)

p_on_averia <- tabla["ON", "Si"] / sum(tabla)

resultado_conjunto <- data.frame(
  Sistema = "ON",
  Averia = "Si",
  Casos = as.numeric(tabla["ON", "Si"]),
  Total_observaciones = as.numeric(sum(tabla)),
  Probabilidad = p_on_averia,
  Porcentaje = p_on_averia * 100
)

kable(
  resultado_conjunto,
  digits = 4,
  caption = "Tabla 9. Cálculo de P(Sistema ON y Avería Sí)"
)
Tabla 9. Cálculo de P(Sistema ON y Avería Sí)
Sistema Averia Casos Total_observaciones Probabilidad Porcentaje
ON Si 12 117 0.1026 10.2564

Prueba de independencia Chi-cuadrado

Chi-cuadrado con corrección de Yates

prueba_chi <- chisq.test(tabla)

resultado_chi <- data.frame(
  Prueba = "Chi-cuadrado con corrección de Yates",
  Chi_cuadrado = as.numeric(prueba_chi$statistic),
  Grados_libertad = as.numeric(prueba_chi$parameter),
  Valor_p = as.numeric(prueba_chi$p.value)
)

kable(
  resultado_chi,
  digits = 4,
  caption = "Tabla 10. Resultado de la prueba de chi-cuadrado"
)
Tabla 10. Resultado de la prueba de chi-cuadrado
Prueba Chi_cuadrado Grados_libertad Valor_p
Chi-cuadrado con corrección de Yates 0.3579 1 0.5497

Chi-cuadrado sin corrección de Yates

prueba_chi_sin_yates <- chisq.test(
  tabla,
  correct = FALSE
)

resultado_chi_sin <- data.frame(
  Prueba = "Chi-cuadrado sin corrección de Yates",
  Chi_cuadrado = as.numeric(prueba_chi_sin_yates$statistic),
  Grados_libertad = as.numeric(prueba_chi_sin_yates$parameter),
  Valor_p = as.numeric(prueba_chi_sin_yates$p.value)
)

kable(
  resultado_chi_sin,
  digits = 4,
  caption = "Tabla 11. Resultado de chi-cuadrado sin corrección de Yates"
)
Tabla 11. Resultado de chi-cuadrado sin corrección de Yates
Prueba Chi_cuadrado Grados_libertad Valor_p
Chi-cuadrado sin corrección de Yates 0.6641 1 0.4151

Comparación de resultados

comparacion <- data.frame(
  Estado_sistema = c("ON", "OFF"),
  Casos_con_averia = c(
    as.numeric(tabla["ON", "Si"]),
    as.numeric(tabla["OFF", "Si"])
  ),
  Total = c(
    as.numeric(sum(tabla["ON", ])),
    as.numeric(sum(tabla["OFF", ]))
  ),
  Probabilidad_averia = c(
    p_averia_on,
    p_averia_off
  ),
  Porcentaje_averia = c(
    p_averia_on * 100,
    p_averia_off * 100
  )
)

kable(
  comparacion,
  digits = 4,
  caption = "Tabla 12. Comparación de la ocurrencia de averías según el estado del sistema"
)
Tabla 12. Comparación de la ocurrencia de averías según el estado del sistema
Estado_sistema Casos_con_averia Total Probabilidad_averia Porcentaje_averia
ON 12 58 0.2069 20.6897
OFF 16 59 0.2712 27.1186

Interpretación estadística

Nivel de significancia

Se establece un nivel de significancia de:

\[ \alpha = 0.05 \]

alpha <- 0.05

decision <- ifelse(
  prueba_chi$p.value < alpha,
  "Se rechaza H0",
  "No se rechaza H0"
)

interpretacion <- data.frame(
  Nivel_significancia = alpha,
  Valor_p = as.numeric(prueba_chi$p.value),
  Decision = decision
)

kable(
  interpretacion,
  digits = 4,
  caption = "Tabla 13. Interpretación de la prueba de independencia"
)
Tabla 13. Interpretación de la prueba de independencia
Nivel_significancia Valor_p Decision
0.05 0.5497 No se rechaza H0

Interpretación de los resultados

El valor p obtenido mediante la prueba de chi-cuadrado con corrección de Yates es aproximadamente 0.5497.

Como el valor p es mayor que el nivel de significancia de 0.05, no se rechaza la hipótesis nula.

Por lo tanto, con los datos analizados no existe evidencia estadística suficiente para afirmar que exista dependencia entre el estado del sistema y la ocurrencia de averías.

Aplicación a la Ingeniería Agrícola

El análisis de variables categóricas puede ser utilizado en Ingeniería Agrícola para estudiar registros relacionados con el funcionamiento de equipos, sistemas de operación y ocurrencia de fallas.

En este caso, la comparación de las probabilidades de avería según el estado del sistema permite describir el comportamiento observado en los registros analizados. Sin embargo, para tomar decisiones técnicas sobre mantenimiento o funcionamiento de equipos también pueden considerarse otras variables del proceso.

Conclusiones

La tabla de contingencia permitió organizar las 117 observaciones de acuerdo con el estado del sistema y la ocurrencia de averías.

La probabilidad de presentar una avería cuando el sistema estaba en estado ON fue de 20.69 %, mientras que cuando estaba en estado OFF fue de 27.12 %.

La prueba de chi-cuadrado obtuvo un valor p superior a 0.05. Por lo tanto, no se encontró evidencia estadística suficiente para afirmar una dependencia entre el estado del sistema y la ocurrencia de averías.

Uso de inteligencia artificial

Herramienta utilizada

Se utilizó ChatGPT como herramienta de apoyo para organizar el análisis, estructurar el código en R y revisar la presentación de las tablas.

Prompt utilizado

“Realiza un análisis de probabilidad condicional y tablas de contingencia utilizando el conjunto de datos acero.csv. Emplea table(), margin.table(), prop.table(), addmargins() y chisq.test(), y presenta los resultados mediante tablas.”

Verificación de los resultados

Los cálculos obtenidos mediante R fueron revisados y comparados con los cálculos manuales de probabilidad condicional.

Referencias

Illowsky, B., & Dean, S. (2023). Introductory statistics 2e. OpenStax.

OpenStax. (2022). Introducción a la estadística. OpenStax.

National Institute of Standards and Technology. (2012). Engineering statistics handbook: Product and process comparisons. U.S. Department of Commerce

calculos manuales

Cálculos manuales de probabilidad
Cálculos manuales de probabilidad