Tabs

Liberías utilizadas

# Cargar librerías
library(car)
## Loading required package: carData
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:car':
## 
##     recode
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(readxl)
library(dslabs)
library(DT)
library(ggplot2)
library(leaflet)
library(plotly)
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library(sf) ##  simple features
## Linking to GEOS 3.12.1, GDAL 3.8.4, PROJ 9.3.1; sf_use_s2() is TRUE
library(shiny)
## 
## Attaching package: 'shiny'
## The following objects are masked from 'package:DT':
## 
##     dataTableOutput, renderDataTable
library(shinydashboard)
## 
## Attaching package: 'shinydashboard'
## The following object is masked from 'package:graphics':
## 
##     box
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ lubridate 1.9.3     ✔ tibble    3.2.1
## ✔ purrr     1.0.2     ✔ tidyr     1.3.1
## ✔ readr     2.1.5
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ plotly::filter() masks dplyr::filter(), stats::filter()
## ✖ dplyr::lag()     masks stats::lag()
## ✖ dplyr::recode()  masks car::recode()
## ✖ purrr::some()    masks car::some()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(rstatix)
## 
## Attaching package: 'rstatix'
## 
## The following object is masked from 'package:stats':
## 
##     filter

Cartografía

# Leer los archivos en formato shape
col <- st_read("Colombia.shp", quiet = T)
dep_Magdalena <- st_read("Magdalena.shp", quiet = T)
c_Sevilla <- st_read("C_Sev.shp", quiet = T)
c_Aracataca <- st_read("C_Arac.shp", quiet = T)
c_Fundacion <- st_read("C_Fund.shp", quiet = T)

Crear el gráfico de capas tipo shp superpuestas

ggplot()+
  geom_sf(data = dep_Magdalena, fill = "lightgreen", color = "green")+
  geom_sf(data = c_Sevilla, fill = NA, color = "red")+
  geom_sf(data = c_Aracataca, fill = NA, color = "red")+
  geom_sf(data = c_Fundacion, fill = NA, color = "red")+
  theme_minimal()+
  ggtitle("Cuencas ríos Sevilla, Aracataca y Fundación")+
  theme(axis.text.x = element_text(size = 4, color = "blue"),
        axis.text.y = element_text(size = 4, color = "red"),
        plot.title = element_text(hjust=0.5, 
                                  size = 10, 
                                  face = "bold", 
                                  color = "blue"))

Análisis estadístico exploratorio

## Leer archivos formato .xlsx
## Datos de clima (Temp, HumRel, Precip, Rad) para crear data frame
### Cuenca 01 -> Sevilla (Río Frío)
### Cuenca 02 -> Aracataca (Tucurinca)
### Cuenca 03 -> Fundación

df_clima_01 <- data.frame(read_excel("clima_Sev.xlsx"))
df_clima_02 <- data.frame(read_excel("clima_Arac.xlsx"))
df_clima_03 <- data.frame(read_excel("clima_Fund.xlsx"))

Estadística descriptiva

Buena herramienta para identificar valores mínimos, máximos y promedio Permite hacer una revisión rápida de los valores que se tienen Permite identificar posibles errores que tengamos en los datos

## Cuenca río Sevilla (Frío)
summary(df_clima_01)
##       No.            Latitud         Longitud          Fecha           
##  Min.   :     1   Min.   :10.70   Min.   :-74.33   Min.   :1994-01-01  
##  1st Qu.: 52047   1st Qu.:10.75   1st Qu.:-74.23   1st Qu.:2001-07-02  
##  Median :104092   Median :10.80   Median :-74.13   Median :2008-12-31  
##  Mean   :104092   Mean   :10.79   Mean   :-74.15   Mean   :2008-12-31  
##  3rd Qu.:156138   3rd Qu.:10.85   3rd Qu.:-74.08   3rd Qu.:2016-07-01  
##  Max.   :208183   Max.   :10.85   Max.   :-73.93   Max.   :2023-12-31  
##  NA's   :5        NA's   :5       NA's   :5        NA's   :5           
##    FechaTxt               DD              MM              AAAA     
##  Length:208188      Min.   : 1.00   Min.   : 1.000   Min.   :1994  
##  Class :character   1st Qu.: 8.00   1st Qu.: 4.000   1st Qu.:2001  
##  Mode  :character   Median :16.00   Median : 7.000   Median :2008  
##                     Mean   :15.73   Mean   : 6.523   Mean   :2008  
##                     3rd Qu.:23.00   3rd Qu.:10.000   3rd Qu.:2016  
##                     Max.   :31.00   Max.   :12.000   Max.   :2023  
##                     NA's   :5       NA's   :5        NA's   :5     
##       Temp           HumRel           Rad             Precip       
##  Min.   :24.33   Min.   :70.54   Min.   : 6.515   Min.   :  0.000  
##  1st Qu.:26.02   1st Qu.:81.53   1st Qu.:16.593   1st Qu.:  0.000  
##  Median :26.49   Median :85.02   Median :18.948   Median :  0.000  
##  Mean   :26.52   Mean   :84.29   Mean   :18.393   Mean   :  7.626  
##  3rd Qu.:26.97   3rd Qu.:87.67   3rd Qu.:20.671   3rd Qu.: 11.161  
##  Max.   :29.46   Max.   :94.83   Max.   :24.194   Max.   :263.022  
##  NA's   :2       NA's   :2       NA's   :2        NA's   :2        
##     POMCA          
##  Length:208188     
##  Class :character  
##  Mode  :character  
##                    
##                    
##                    
## 
## Cuenca río Aracataca (Tucurinca)
summary(df_clima_02)
##       No.            Latitud         Longitud     
##  Min.   :     1   Min.   :10.60   Min.   :-74.33  
##  1st Qu.: 67658   1st Qu.:10.70   1st Qu.:-74.03  
##  Median :135315   Median :10.75   Median :-73.88  
##  Mean   :135315   Mean   :10.74   Mean   :-73.93  
##  3rd Qu.:202971   3rd Qu.:10.80   3rd Qu.:-73.83  
##  Max.   :270628   Max.   :10.85   Max.   :-73.58  
##      Fecha                         FechaTxt               DD       
##  Min.   :1994-01-01 00:00:00.0   Length:270628      Min.   : 1.00  
##  1st Qu.:2001-05-30 00:00:00.0   Class :character   1st Qu.: 8.00  
##  Median :2008-10-26 00:00:00.0   Mode  :character   Median :16.00  
##  Mean   :2008-11-14 08:09:33.5                      Mean   :15.73  
##  3rd Qu.:2016-04-12 00:00:00.0                      3rd Qu.:23.00  
##  Max.   :2023-12-31 00:00:00.0                      Max.   :31.00  
##        MM              AAAA           Temp           HumRel     
##  Min.   : 1.000   Min.   :1994   Min.   :24.35   Min.   :68.73  
##  1st Qu.: 4.000   1st Qu.:2001   1st Qu.:25.53   1st Qu.:81.96  
##  Median : 7.000   Median :2008   Median :25.90   Median :86.65  
##  Mean   : 6.523   Mean   :2008   Mean   :26.00   Mean   :85.55  
##  3rd Qu.:10.000   3rd Qu.:2016   3rd Qu.:26.34   3rd Qu.:89.25  
##  Max.   :12.000   Max.   :2023   Max.   :29.57   Max.   :95.20  
##       Rad             Precip           POMCA          
##  Min.   : 6.508   Min.   :  0.000   Length:270628     
##  1st Qu.:16.399   1st Qu.:  0.000   Class :character  
##  Median :18.704   Median :  4.721   Mode  :character  
##  Mean   :18.244   Mean   : 12.990                     
##  3rd Qu.:20.514   3rd Qu.: 19.818                     
##  Max.   :24.310   Max.   :400.594
## Cuenca río Fundación
summary(df_clima_03)
##       No.            Latitud         Longitud          Fecha           
##  Min.   :     1   Min.   :10.30   Min.   :-74.43   Min.   :1994-01-01  
##  1st Qu.:142442   1st Qu.:10.45   1st Qu.:-74.33   1st Qu.:2001-07-02  
##  Median :284883   Median :10.50   Median :-74.18   Median :2008-12-31  
##  Mean   :284883   Mean   :10.48   Mean   :-74.14   Mean   :2008-12-31  
##  3rd Qu.:427323   3rd Qu.:10.55   3rd Qu.:-73.97   3rd Qu.:2016-07-01  
##  Max.   :569764   Max.   :10.65   Max.   :-73.63   Max.   :2023-12-31  
##    FechaTxt               DD              MM              AAAA     
##  Length:569764      Min.   : 1.00   Min.   : 1.000   Min.   :1994  
##  Class :character   1st Qu.: 8.00   1st Qu.: 4.000   1st Qu.:2001  
##  Mode  :character   Median :16.00   Median : 7.000   Median :2008  
##                     Mean   :15.73   Mean   : 6.523   Mean   :2008  
##                     3rd Qu.:23.00   3rd Qu.:10.000   3rd Qu.:2016  
##                     Max.   :31.00   Max.   :12.000   Max.   :2023  
##       Temp           HumRel           Rad             Precip      
##  Min.   :24.44   Min.   :68.40   Min.   : 6.373   Min.   :  0.00  
##  1st Qu.:26.28   1st Qu.:80.87   1st Qu.:16.842   1st Qu.:  0.00  
##  Median :26.95   Median :84.59   Median :19.312   Median :  3.06  
##  Mean   :27.01   Mean   :83.81   Mean   :18.793   Mean   :  8.07  
##  3rd Qu.:27.72   3rd Qu.:87.52   3rd Qu.:21.113   3rd Qu.: 12.10  
##  Max.   :30.52   Max.   :95.22   Max.   :26.237   Max.   :255.90  
##     POMCA          
##  Length:569764     
##  Class :character  
##  Mode  :character  
##                    
##                    
## 

Análisis datos de Temperatura del Río Sevilla (Frío)

## Obtener media, mediana y desviación estándar de los datos de Temp
mean_clima_01 <- mean(df_clima_01$Temp,na.rm=TRUE) ## Media, color red
median_clima_01 <- median(df_clima_01$Temp,na.rm=TRUE) ## Mediana, color green
sd_clima_01 <- sd(df_clima_01$Temp,na.rm=TRUE) ## Desviación estándar

Histograma de frecuencias de temperaturas del Río Sevilla (Frío)

Un histograma facilita la interpretación de la dispersión global de los datos. Entendido esta dispersión como el rango de variación. Para este caso en el eje X se visualizan las temperaturas en grados Celsius. En el eje Y la frecuencia cantidad de datos registrados según esos valores de temperatura.

## Número de observaciones dentro de cada intervalo
## No significa particular en términos de probabilidad o proporción
hist(df_clima_01$Temp, 
     main = "Histograma Temperaturas Cuenca Río Sevilla (Frío)", 
     xlab = "Temperatura (°C)",             
     ylab = "Frecuencia",          
     col = "gray",             
     border = "black")
axis(side = 1, 
     at = seq(15, 30, by = 5), 
     labels = seq(15, 30, by = 5), 
     col.axis = "black", 
     las = 1)
abline(v = mean_clima_01, col = "red", lwd = 2, lty = 2)  # Línea media
abline(v = mean_clima_01 - sd_clima_01, col = "blue", lwd = 2, lty = 2)  
abline(v = mean_clima_01 + sd_clima_01, col = "blue", lwd = 2, lty = 2)  

# Línea media - desviación estándar
# Línea media + desviación estándar

## las=1 etiquetas del eje X horizontales, para que se vean verticales las=2

Histograma de densidad Río Sevilla (Frío)

## Varlores para las líneas a incluir en el gráfico
x1 <- seq(min(df_clima_01$Temp,na.rm=TRUE), max(df_clima_01$Temp,na.rm=TRUE), length = 40)
fun1 <- dnorm(x1, mean = mean(df_clima_01$Temp,na.rm=TRUE), sd = sd(df_clima_01$Temp,na.rm=TRUE))

Histograma de densidad Temp

## Representa la densidad de la probabilidad, no la frecuencia absoluta. 
## La altura de cada barra indica la densidad de los datos en ese intervalo.
hist(df_clima_01$Temp, prob = TRUE, col = "white",
     ylim = c(0, max(fun1)),
     main = "Histograma de Temperaturas con curva normal",
     xlab = "Temperatura (°C)",)
lines(x1, fun1, col = 2, lwd = 2)
abline(v = mean_clima_01, col = "red", lwd = 2, lty = 2)  # Línea media
abline(v = median_clima_01, col = "green", lwd = 2, lty = 2)  # Línea mediana

Gráfico QQ-plot (Quantile-Quantile plot)

Es una herramienta gráfica para comparar la distribución de un conjunto de datos con una distribución teórica como la normal. Sirve para verificar normalidad, comparar dos distribuciones o para detectar colas pesadas o asimetría. Los cuantiles más importantes son los que están entre -2 y 2.

## QQ-Plot río Sevilla (Frío)
qqPlot(df_clima_01$Temp, 
       main = "Q-Q Plot Temperatura cuenca Río Sevilla (Frío)",
       xlab = "Cuantiles de la distribución normal", 
       ylab = "Temperatura (°C)")

## [1] 152505 208187
## Gráfico rápido para identificar el comportamiento de la Temp por año
plot(x = df_clima_01$AAAA, 
     y = df_clima_01$Temp,
     main = "Temperaturas Cuenca Río Sevilla (Frío) por año", 
     xlab = "Año",
     ylab = "Temperatura (°C)")

Análisis datos de Temperatura del Río Aracataca (Tucurinca)

Histograma de frecuencia de datos de temperatura Río Aracataca (Tucurinca)

## Obtener media, mediana y desviación estándar de los datos de Temp
mean_clima_02 <- mean(df_clima_02$Temp)
sd_clima_02 <- sd(df_clima_02$Temp)
median_clima_02 <- median(df_clima_02$Temp)

## Histograma de frecuencia Río Aracataca (Tucurinca)
hist(df_clima_02$Temp, 
     main = "Histograma de Temperaturas Cuenca Río Aracataca (Tucurinca)", 
     xlab = "Temperatura (°C)",             
     ylab = "Frecuencia",          
     col = "gray",             
     border = "black")
axis(side = 1, 
     at = seq(15, 30, by = 5), 
     labels = seq(15, 30, by = 5), 
     col.axis = "black", 
     las = 1)
abline(v = mean_clima_02, col = "red", lwd = 2, lty = 2)  # Línea media
abline(v = mean_clima_02 - sd_clima_02, col = "blue", lwd = 2, lty = 2)  
abline(v = mean_clima_02 + sd_clima_02, col = "blue", lwd = 2, lty = 2)  

# Línea media - desviación estándar
# Línea media + desviación estándar

## las=1 etiquetas del eje X horizontales, para que se vean verticales las=2

### El resultado acá obtenido presenta un desplazamiento hacia la izquierda en donde la cantidad de datos de temperatura alta pesan más que los bajos.

Histograma de densidad Río Aracataca (Tucurinca)

## Valores para las líneas a incluir en el gráfico
x2 <- seq(min(df_clima_02$Temp,na.rm=TRUE), max(df_clima_02$Temp,na.rm=TRUE), length = 40)
fun2 <- dnorm(x2, mean = mean(df_clima_02$Temp,na.rm=TRUE), sd = sd(df_clima_02$Temp,na.rm=TRUE))

## Histograma de densidad
hist(df_clima_02$Temp, prob = TRUE, col = "white",
     ylim = c(0, max(0.8)),
     main = "Histograma de Temperaturas con curva normal",
     xlab = "Temperatura (°C)")
lines(x2, fun2, col = 2, lwd = 2)
abline(v = mean_clima_02, col = "red", lwd = 2, lty = 2)  # Línea media
abline(v = median_clima_02, col = "green", lwd = 2, lty = 2)  # Línea mediana

### El dato de Temperatura de la media puede ser el que mejor representa el comportamiento, 
### sin embargo, para efectos de análisis del cultivo las temperaturas altas impactarán más
### la caída de la producción, es decir los datos que sesgo hacia la izquierda.
## QQ-Plot río Aracataca (Tucurinca)
qqPlot(df_clima_02$Temp, 
       main = "Q-Q Plot Temperatura cuenca Río Aracataca (Tucurinca)",
       xlab = "Cuantiles de la distribución normal", 
       ylab = "Temperatura (°C)")

## [1] 249173 249181
## Gráfico rápido para identificar el comportamiento de la Temp por año
plot(x = df_clima_02$AAAA, 
     y = df_clima_02$Temp,
     main = "Temperaturas Cuenca Río Aracataca (Tucurinca) por año",
     xlab = "Año",
     ylab = "Temperatura (°C)")

df_clima_02 %>%
  group_by(AAAA) %>%
  get_summary_stats(Temp, type = "mean_ci")
## # A tibble: 30 × 5
##     AAAA variable     n  mean    ci
##    <dbl> <fct>    <dbl> <dbl> <dbl>
##  1  1994 Temp      9125  26.0 0.013
##  2  1995 Temp      9125  25.9 0.012
##  3  1996 Temp      9150  25.9 0.012
##  4  1997 Temp      9125  26.1 0.014
##  5  1998 Temp      9125  26.1 0.015
##  6  1999 Temp      9125  25.8 0.011
##  7  2000 Temp      9150  25.9 0.012
##  8  2001 Temp      9125  26.0 0.013
##  9  2002 Temp      9125  26.0 0.014
## 10  2003 Temp      9125  26   0.013
## # ℹ 20 more rows
df_clima_02 %>%
  group_by(AAAA) %>%
  get_summary_stats(Temp, type = "common")
## # A tibble: 30 × 11
##     AAAA variable     n   min   max median   iqr  mean    sd    se    ci
##    <dbl> <fct>    <dbl> <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
##  1  1994 Temp      9125  24.4  28.6   25.8 0.801  26.0 0.644 0.007 0.013
##  2  1995 Temp      9125  24.6  28.7   25.8 0.703  25.9 0.58  0.006 0.012
##  3  1996 Temp      9150  24.6  28.5   25.8 0.706  25.9 0.569 0.006 0.012
##  4  1997 Temp      9125  24.5  28.7   26.0 0.824  26.1 0.687 0.007 0.014
##  5  1998 Temp      9125  24.5  29.0   25.9 0.936  26.1 0.723 0.008 0.015
##  6  1999 Temp      9125  24.5  28.8   25.7 0.68   25.8 0.542 0.006 0.011
##  7  2000 Temp      9150  24.5  28.2   25.8 0.687  25.9 0.577 0.006 0.012
##  8  2001 Temp      9125  24.5  28.7   25.9 0.788  26.0 0.653 0.007 0.013
##  9  2002 Temp      9125  24.6  28.6   25.9 0.823  26.0 0.674 0.007 0.014
## 10  2003 Temp      9125  24.5  29.0   25.9 0.847  26   0.65  0.007 0.013
## # ℹ 20 more rows

Análisis de datos de Temperatura del Río Fundación

Histograma de frecuencias de Temperaturas del Río Fundación

## Obtener media, mediana y desviación estándar de los datos de Temp
mean_clima_03 <- mean(df_clima_03$Temp)
sd_clima_03 <- sd(df_clima_03$Temp)
median_clima_03 <- median(df_clima_03$Temp)

## Histograma de frecuencias Temperaturas del Río Fundación
hist(df_clima_03$Temp, 
     main = "Histograma Temperaturas Cuenca Río Fundación", 
     xlab = "Temperatura (°C)",             
     ylab = "Frecuencia",          
     col = "gray",             
     border = "black")
axis(side = 1, 
     at = seq(15, 30, by = 5), 
     labels = seq(15, 30, by = 5), 
     col.axis = "black", 
     las = 1)
abline(v = mean_clima_03, col = "red", lwd = 2, lty = 2)  # Línea media
abline(v = mean_clima_03 - sd_clima_03, col = "blue", lwd = 2, lty = 2)  
abline(v = mean_clima_03 + sd_clima_03, col = "blue", lwd = 2, lty = 2)  

# Línea media - desviación estándar
# Línea media + desviación estándar

## las=1 etiquetas del eje X horizontales, para que se vean verticales las=2

Histograma de densidad de Temperaturas del Río Fundación

## Valores para las líneas a incluir en el gráfico
x3 <- seq(min(df_clima_03$Temp,na.rm=TRUE), max(df_clima_03$Temp,na.rm=TRUE), length = 40)
fun3 <- dnorm(x3, mean = mean(df_clima_03$Temp,na.rm=TRUE), sd = sd(df_clima_03$Temp,na.rm=TRUE))

## Histograma de densidad datos de Temperatura Río Fundación
hist(df_clima_03$Temp, prob = TRUE, col = "white",
     ylim = c(0, max(fun3)),
     main = "Histograma de Temperaturas con curva normal Río Fundación",
     xlab = "Temperatura (°C)",)
lines(x3, fun3, col = 2, lwd = 2)
abline(v = mean_clima_03, col = "red", lwd = 2, lty = 2)  # Línea media
abline(v = median_clima_03, col = "green", lwd = 2, lty = 2)  # Línea mediana

## las=1 etiquetas del eje X horizontales, para que se vean verticales las=2

## Comportamiento normal de los datos
## QQ-Plot Río Fundación
qqPlot(df_clima_03$Temp, 
       main = "Q-Q Plot Temperatura cuenca Río Fundación",
       xlab = "Cuantiles de la distribución normal", 
       ylab = "Temperatura (°C)")

## [1] 108240  84545
## Gráfico rápido para identificar el comportamiento de la Temp por año
plot(x = df_clima_03$AAAA, 
     y = df_clima_03$Temp,
     main = "Temperaturas Cuenca Río Fundación por año",
     xlab = "Año",
     ylab = "Temperatura (°C)")

df_clima_03 %>%
  group_by(AAAA) %>%
  get_summary_stats(Temp, type = "mean_ci")
## # A tibble: 30 × 5
##     AAAA variable     n  mean    ci
##    <dbl> <fct>    <dbl> <dbl> <dbl>
##  1  1994 Temp     18980  27.0 0.015
##  2  1995 Temp     18980  26.7 0.014
##  3  1996 Temp     19032  26.8 0.014
##  4  1997 Temp     18980  27.3 0.015
##  5  1998 Temp     18980  27.0 0.016
##  6  1999 Temp     18980  26.5 0.013
##  7  2000 Temp     19032  26.9 0.014
##  8  2001 Temp     18980  27.0 0.015
##  9  2002 Temp     18980  27.2 0.015
## 10  2003 Temp     18980  27.0 0.014
## # ℹ 20 more rows
df_clima_03 %>%
  group_by(AAAA) %>%
  get_summary_stats(Temp, type = "common")
## # A tibble: 30 × 11
##     AAAA variable     n   min   max median   iqr  mean    sd    se    ci
##    <dbl> <fct>    <dbl> <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
##  1  1994 Temp     18980  24.4  30.1   26.9  1.49  27.0 1.05  0.008 0.015
##  2  1995 Temp     18980  24.6  29.9   26.6  1.28  26.7 0.961 0.007 0.014
##  3  1996 Temp     19032  24.6  30.0   26.7  1.31  26.8 0.969 0.007 0.014
##  4  1997 Temp     18980  24.8  30.2   27.2  1.59  27.3 1.06  0.008 0.015
##  5  1998 Temp     18980  24.6  30.2   26.9  1.57  27.0 1.09  0.008 0.016
##  6  1999 Temp     18980  24.6  29.8   26.4  1.32  26.5 0.921 0.007 0.013
##  7  2000 Temp     19032  24.6  30.0   26.8  1.36  26.9 0.96  0.007 0.014
##  8  2001 Temp     18980  24.5  30.4   27.0  1.51  27.0 1.06  0.008 0.015
##  9  2002 Temp     18980  24.6  30.2   27.2  1.52  27.2 1.05  0.008 0.015
## 10  2003 Temp     18980  24.6  30.1   27.0  1.39  27.0 0.987 0.007 0.014
## # ℹ 20 more rows