1 1. Introducción

En los sistemas agrícolas es importante analizar la relación entre las condiciones de manejo del agua y el estado de los cultivos. Una herramienta estadística que permite estudiar estas relaciones es la probabilidad condicional.

En este trabajo se utiliza un conjunto de datos relacionado con sistemas de riego agrícola para analizar la relación entre el sistema de riego y el estado del cultivo.

El análisis se concentra en los lotes que presentan estrés hídrico y busca determinar qué proporción de ellos utiliza riego por aspersión.

2 2. Objetivo

Determinar la probabilidad de que un lote que presenta estrés hídrico utilice riego por aspersión y analizar la posible relación estadística entre el sistema de riego y el estado del cultivo.

3 3. Conjunto de datos

Para realizar el análisis se utiliza el archivo:

riego_estres_hidrico_agricola.csv

Las variables seleccionadas son:

  • sistema_riego
  • estado_cultivo

La variable sistema_riego representa el sistema utilizado para suministrar agua al cultivo.

La variable estado_cultivo representa el estado del cultivo, incluyendo las categorías de estrés y estado normal.

4 4. Carga de los datos

Primero se carga la base de datos en R.

archivo <- "riego_estres_hidrico_agricola.csv"

if (!file.exists(archivo)) {
  stop(
    paste(
      "No se encontró el archivo:",
      archivo,
      "\nVerifique que el CSV esté en la misma carpeta que el archivo RMarkdown."
    )
  )
}

riego <- read.csv(
  archivo,
  stringsAsFactors = FALSE,
  check.names = FALSE
)

cat("Archivo cargado correctamente.\n")
## Archivo cargado correctamente.
cat("Número de filas:", nrow(riego), "\n")
## Número de filas: 180
cat("Número de columnas:", ncol(riego), "\n")
## Número de columnas: 10

5 5. Exploración de los datos

5.1 5.1 Nombres de las variables

names(riego)
##  [1] "id_lote"                 "sector"                 
##  [3] "sistema_riego"           "textura_suelo"          
##  [5] "horas_riego_semana"      "precipitacion_semana_mm"
##  [7] "humedad_suelo_pct"       "falla_bomba"            
##  [9] "estado_cultivo"          "rendimiento_kg_ha"

5.2 5.2 Sistemas de riego

table(
  riego$sistema_riego,
  useNA = "ifany"
)
## 
## Aspersion     Goteo  Gravedad 
##        56        76        48

5.3 5.3 Estado del cultivo

table(
  riego$estado_cultivo,
  useNA = "ifany"
)
## 
## Estres Normal 
##     54    126

6 6. Preparación de los datos

Para realizar el análisis se utilizan los registros que contienen información disponible en las dos variables seleccionadas.

datos <- riego[
  !is.na(riego$sistema_riego) &
  !is.na(riego$estado_cultivo),
]

cat(
  "Número de registros utilizados:",
  nrow(datos),
  "\n"
)
## Número de registros utilizados: 180

7 7. Tabla de contingencia

7.1 7.1 Construcción de la tabla

La función table() permite organizar las frecuencias de las dos variables categóricas.

tabla <- table(
  datos$sistema_riego,
  datos$estado_cultivo
)

tabla
##            
##             Estres Normal
##   Aspersion     21     35
##   Goteo          6     70
##   Gravedad      27     21

7.2 7.2 Presentación de la tabla

knitr::kable(
  tabla,
  caption = "Tabla 1. Sistema de riego según el estado del cultivo"
)
Tabla 1. Sistema de riego según el estado del cultivo
Estres Normal
Aspersion 21 35
Goteo 6 70
Gravedad 27 21

La tabla permite observar la cantidad de lotes que presentan estrés y los que presentan un estado normal para cada sistema de riego.

8 8. Totales marginales

8.1 8.1 Total por sistema de riego

La función margin.table() permite obtener los totales correspondientes a cada sistema de riego.

total_riego <- margin.table(
  tabla,
  1
)

knitr::kable(
  data.frame(
    Sistema_Riego = names(total_riego),
    Total = as.numeric(total_riego)
  ),
  caption = "Tabla 2. Total de lotes por sistema de riego"
)
Tabla 2. Total de lotes por sistema de riego
Sistema_Riego Total
Aspersion 56
Goteo 76
Gravedad 48

8.2 8.2 Total por estado del cultivo

total_estado <- margin.table(
  tabla,
  2
)

knitr::kable(
  data.frame(
    Estado_Cultivo = names(total_estado),
    Total = as.numeric(total_estado)
  ),
  caption = "Tabla 3. Total de lotes por estado del cultivo"
)
Tabla 3. Total de lotes por estado del cultivo
Estado_Cultivo Total
Estres 54
Normal 126

9 9. Tabla con totales generales

La función addmargins() permite agregar los totales de filas y columnas.

tabla_margenes <- addmargins(tabla)

knitr::kable(
  tabla_margenes,
  caption = "Tabla 4. Tabla de contingencia con totales"
)
Tabla 4. Tabla de contingencia con totales
Estres Normal Sum
Aspersion 21 35 56
Goteo 6 70 76
Gravedad 27 21 48
Sum 54 126 180

10 10. Probabilidad condicional

10.1 10.1 Pregunta de investigación

La pregunta seleccionada es:

¿Cuál es la probabilidad de que un lote que presenta estrés hídrico utilice riego por aspersión?

Se definen los eventos:

\[ A = \text{Aspersión} \]

\[ E = \text{Estrés hídrico} \]

Por lo tanto:

\[ P(A|E) \]

11 11. Cálculo manual

La fórmula de probabilidad condicional es:

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

De acuerdo con el cálculo realizado a mano:

  • Lotes con Aspersión y Estrés = 21.
  • Total de lotes con Estrés = 54.

Por lo tanto:

\[ P(A|E)=\frac{21}{54} \]

Realizando la división:

\[ P(A|E)=0.3889 \]

Convertimos a porcentaje:

\[ 0.3889\times100=38.89\% \]

Por lo tanto:

\[ \boxed{P(A|E)=38.89\%} \]

12 12. Interpretación del cálculo manual

El resultado indica que, de los lotes que presentan estrés hídrico, aproximadamente el 38.89 % utiliza riego por aspersión.

El cálculo se realiza primero de forma manual para comprender la lógica de la probabilidad condicional antes de comprobarlo mediante R.

13 13. Evidencia del cálculo manual

El procedimiento fue realizado primero a mano en el cuaderno.

El cálculo realizado es:

\[ P(A|E)=\frac{21}{54} \]

\[ P(A|E)=0.3889 \]

\[ P(A|E)=38.89\% \]

A continuación se presenta la fotografía del procedimiento manual.

Cálculo manual de probabilidad condicional
Cálculo manual de probabilidad condicional

14 14. Probabilidad condicional utilizando R

Para calcular la distribución de los sistemas de riego dentro de cada estado del cultivo se utiliza prop.table() con margin = 2.

probabilidades <- prop.table(
  tabla,
  margin = 2
)

knitr::kable(
  probabilidades,
  digits = 4,
  caption = "Tabla 5. Probabilidades condicionales del sistema de riego según el estado del cultivo"
)
Tabla 5. Probabilidades condicionales del sistema de riego según el estado del cultivo
Estres Normal
Aspersion 0.3889 0.2778
Goteo 0.1111 0.5556
Gravedad 0.5000 0.1667

15 15. Probabilidad de Aspersión dado Estrés

Se extrae el valor correspondiente a:

\[ P(\text{Aspersión}|\text{Estrés}) \]

p_aspersión_estres <- prop.table(
  tabla,
  margin = 2
)["Aspersion", "Estres"]

p_aspersión_estres
## [1] 0.3888889

16 16. Resultado en porcentaje

porcentaje_aspersión <- p_aspersión_estres * 100

porcentaje_aspersión
## [1] 38.88889

El resultado correspondiente es aproximadamente:

\[ \boxed{38.89\%} \]

17 17. Comparación entre el cálculo manual y R

comparacion <- data.frame(
  Metodo = c(
    "Cálculo manual",
    "R"
  ),
  Probabilidad = c(
    21 / 54,
    p_aspersión_estres
  ),
  Porcentaje = c(
    (21 / 54) * 100,
    porcentaje_aspersión
  )
)

knitr::kable(
  comparacion,
  digits = 4,
  caption = "Tabla 6. Comparación entre el cálculo manual y R"
)
Tabla 6. Comparación entre el cálculo manual y R
Metodo Probabilidad Porcentaje
Cálculo manual 0.3889 38.8889
R 0.3889 38.8889

18 18. Probabilidades conjuntas

La función prop.table() sin especificar un margen permite obtener las probabilidades conjuntas.

probabilidades_conjuntas <- prop.table(tabla)

knitr::kable(
  probabilidades_conjuntas,
  digits = 4,
  caption = "Tabla 7. Probabilidades conjuntas"
)
Tabla 7. Probabilidades conjuntas
Estres Normal
Aspersion 0.1167 0.1944
Goteo 0.0333 0.3889
Gravedad 0.1500 0.1167

19 19. Prueba de independencia Chi-cuadrado

19.1 19.1 Hipótesis

Para analizar si existe independencia entre el sistema de riego y el estado del cultivo se plantean las siguientes hipótesis:

H₀: El sistema de riego y el estado del cultivo son independientes.

H₁: El sistema de riego y el estado del cultivo no son independientes.

Se utiliza un nivel de significancia de:

\[ \alpha=0.05 \]

20 20. Aplicación de chisq.test()

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

prueba_chi
## 
##  Pearson's Chi-squared test
## 
## data:  tabla
## X-squared = 34.934, df = 2, p-value = 2.595e-08

21 21. Resultado de la prueba

resultado_chi <- data.frame(
  Chi_cuadrado = as.numeric(
    prueba_chi$statistic
  ),
  Grados_libertad = as.numeric(
    prueba_chi$parameter
  ),
  Valor_p = as.numeric(
    prueba_chi$p.value
  )
)

knitr::kable(
  resultado_chi,
  digits = 6,
  caption = "Tabla 8. Resultado de la prueba Chi-cuadrado"
)
Tabla 8. Resultado de la prueba Chi-cuadrado
Chi_cuadrado Grados_libertad Valor_p
34.93421 2 0

22 22. Frecuencias esperadas

frecuencias_esperadas <- prueba_chi$expected

knitr::kable(
  round(frecuencias_esperadas, 4),
  caption = "Tabla 9. Frecuencias esperadas bajo la hipótesis de independencia"
)
Tabla 9. Frecuencias esperadas bajo la hipótesis de independencia
Estres Normal
Aspersion 16.8 39.2
Goteo 22.8 53.2
Gravedad 14.4 33.6

23 23. Decisión estadística

Se utiliza un nivel de significancia de:

\[ \alpha=0.05 \]

La regla de decisión es:

  • Si \(p < 0.05\), se rechaza H₀.
  • Si \(p \geq 0.05\), no se rechaza H₀.
alpha <- 0.05

if (prueba_chi$p.value < alpha) {
  
  decision <- "Se rechaza H0"
  
} else {
  
  decision <- "No se rechaza H0"
  
}

decision
## [1] "Se rechaza H0"

24 24. Interpretación de la prueba

if (prueba_chi$p.value < 0.05) {
  
  cat(
    "El valor p es menor que 0.05. ",
    "Por lo tanto, se rechaza la hipótesis nula de independencia. ",
    "Los datos proporcionan evidencia estadística de una asociación ",
    "entre el sistema de riego y el estado del cultivo."
  )
  
} else {
  
  cat(
    "El valor p es igual o mayor que 0.05. ",
    "Por lo tanto, no se rechaza la hipótesis nula de independencia. ",
    "Los datos no proporcionan evidencia estadística suficiente ",
    "para afirmar una asociación entre el sistema de riego ",
    "y el estado del cultivo."
  )
  
}
## El valor p es menor que 0.05.  Por lo tanto, se rechaza la hipótesis nula de independencia.  Los datos proporcionan evidencia estadística de una asociación  entre el sistema de riego y el estado del cultivo.

25 25. Distribución del estado del cultivo según el sistema de riego

Para complementar el análisis se calcula la proporción de estrés y estado normal dentro de cada sistema de riego.

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

knitr::kable(
  distribucion,
  digits = 4,
  caption = "Tabla 10. Distribución del estado del cultivo dentro de cada sistema de riego"
)
Tabla 10. Distribución del estado del cultivo dentro de cada sistema de riego
Estres Normal
Aspersion 0.3750 0.6250
Goteo 0.0789 0.9211
Gravedad 0.5625 0.4375

26 26. Interpretación desde la Ingeniería Agrícola

El análisis permite observar cómo se distribuyen los estados del cultivo según el sistema de riego utilizado.

La probabilidad condicional calculada responde específicamente a la pregunta planteada:

\[ P(\text{Aspersión}|\text{Estrés})=38.89\% \]

Esto significa que, dentro del grupo de lotes que presentan estrés hídrico, aproximadamente el 38.89 % utiliza riego por aspersión.

Esta información puede ser utilizada como parte de un análisis del manejo del agua y de las condiciones relacionadas con el estrés hídrico.

Sin embargo, una asociación estadística no demuestra por sí sola una relación causal. Para estudiar las posibles causas del estrés hídrico sería necesario analizar otras variables de la base de datos.

27 27. Conclusiones

  1. Se analizaron las variables categóricas sistema de riego y estado del cultivo.

  2. Se construyó una tabla de contingencia mediante table().

  3. Los totales marginales se obtuvieron mediante margin.table().

  4. Los totales generales fueron incorporados mediante addmargins().

  5. La probabilidad condicional analizada fue:

\[ P(\text{Aspersión}|\text{Estrés}) \]

  1. El cálculo manual fue:

\[ P(\text{Aspersión}|\text{Estrés}) = \frac{21}{54} = 0.3889 \]

  1. En porcentaje:

\[ \boxed{38.89\%} \]

  1. El resultado manual fue comprobado mediante prop.table().

  2. La prueba chisq.test() permitió evaluar la independencia entre las variables seleccionadas.

  3. El análisis proporciona información para estudiar la relación entre los sistemas de riego y el estado de los cultivos.

28 28. Uso de inteligencia artificial

28.1 Herramienta utilizada

Se utilizó ChatGPT como herramienta de apoyo para organizar el documento RMarkdown, revisar la estructura del análisis estadístico y apoyar la utilización de las funciones de R.

28.2 Prompt utilizado

“Ayúdame a realizar un análisis en RMarkdown utilizando una base de datos agrícola relacionada con sistemas de riego y estado del cultivo. Necesito seleccionar dos variables categóricas, construir una tabla de contingencia, realizar manualmente una probabilidad condicional y comprobarla en R utilizando table(), margin.table(), prop.table(), addmargins() y chisq.test(). La pregunta de análisis es: ¿Cuál es la probabilidad de que un lote que presenta estrés hídrico utilice riego por aspersión?”

28.3 Verificación humana

El cálculo de la probabilidad condicional fue realizado manualmente antes de utilizar R. Posteriormente se comprobó el resultado mediante el código estadístico.

29 29. Referencias

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

National Institute of Standards and Technology. Engineering Statistics Handbook. U.S. Department of Commerce.

R Core Team. R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing.