# 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
# 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)
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"))
## 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"))
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
##
##
##
## 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
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
## 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))
## 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
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)")
## 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.
## 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
## 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
## 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