Tabs

Liberías utilizadas

# Cargar librerías
library(car)
## Loading required package: carData
library(carData)
library(corrplot)
## corrplot 0.94 loaded
library(ggcorrplot)
## Loading required package: ggplot2
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(dslabs)
library(DT)
library(factoextra)
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(ggplot2)
library(gridExtra)
## 
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
## 
##     combine
library(ggpmisc)
## Loading required package: ggpp
## Registered S3 methods overwritten by 'ggpp':
##   method                  from   
##   heightDetails.titleGrob ggplot2
##   widthDetails.titleGrob  ggplot2
## 
## Attaching package: 'ggpp'
## The following object is masked from 'package:ggplot2':
## 
##     annotate
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(readxl)
library(rstatix)
## 
## Attaching package: 'rstatix'
## The following object is masked from 'package:ggcorrplot':
## 
##     cor_pmat
## The following object is masked from 'package:stats':
## 
##     filter
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() ──
## ✖ ggpp::annotate()     masks ggplot2::annotate()
## ✖ gridExtra::combine() masks dplyr::combine()
## ✖ rstatix::filter()    masks plotly::filter(), 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

Cartografía Río Sevilla (Frío)

# Leer los archivos en formato shape
shp_col <- st_read("Colombia.shp", quiet = T)
shp_magdalena <- st_read("Magdalena.shp", quiet = T)
shp_sevilla <- st_read("C_Sev.shp", quiet = T)
shp_centr_sev <- st_read("SHP_centroides_Sev.shp", quiet = T)

Crear el gráfico de capas tipo shp superpuestas

ggplot()+
  geom_sf(data = shp_magdalena, fill = "lightgreen", color = "green")+
  geom_sf(data = shp_sevilla, fill = NA, color = "blue")+
  geom_sf(data = shp_centr_sev, fill = NA, color = "red")+
  theme_minimal()+
  ggtitle("Cuenca Río Sevilla (Frío)")+
  theme(axis.text.x = element_text(size = 4, color = "black"),
        axis.text.y = element_text(size = 4, color = "black"),
        plot.title = element_text(hjust=0.5, 
                                  size = 10, 
                                  face = "bold", 
                                  color = "blue"))

Leer los archivos de clima y crear los data frames

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

## Leer archivos formato .xlsx

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 cuenca Río Sevilla (Frío)

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 se tengan en los datos

## Cuenca río Sevilla (Frío)
## Datos de variables meteorológicas del histórico diario de los últimos 30 años
## Fuente: Nasa Power
## Se seleccionan solo las columnas de las variables de interés para visualizar el resumen

summary(df_clima_01[, c("AAAA", "Temp", "Precip", "HumRel", "Rad")])
##       AAAA           Temp           Precip            HumRel     
##  Min.   :1994   Min.   :24.33   Min.   :  0.000   Min.   :70.54  
##  1st Qu.:2001   1st Qu.:26.02   1st Qu.:  0.000   1st Qu.:81.53  
##  Median :2008   Median :26.49   Median :  0.000   Median :85.02  
##  Mean   :2008   Mean   :26.52   Mean   :  7.793   Mean   :84.29  
##  3rd Qu.:2016   3rd Qu.:26.97   3rd Qu.: 11.418   3rd Qu.:87.67  
##  Max.   :2023   Max.   :29.46   Max.   :263.022   Max.   :94.83  
##                                 NA's   :4486                     
##       Rad        
##  Min.   : 6.515  
##  1st Qu.:16.593  
##  Median :18.948  
##  Mean   :18.393  
##  3rd Qu.:20.671  
##  Max.   :24.194  
## 

Matriz de correlación - Cuenca Río Sevilla (Frío)

### Crear la matriz de correlación
cor_matrix_Sev <- cor(df_clima_01[, 10:13], use = "complete.obs")
print(cor_matrix_Sev)
##              Temp     HumRel        Rad     Precip
## Temp    1.0000000 -0.3107662  0.3190912 -0.2622377
## HumRel -0.3107662  1.0000000 -0.4321183  0.4045606
## Rad     0.3190912 -0.4321183  1.0000000 -0.4229136
## Precip -0.2622377  0.4045606 -0.4229136  1.0000000
### Argumento use = "complete.obs" indica usar solo las observaciones completas
### Se utilizarán solo las filas sin valores faltantes 

Gráfico de la matriz de correlación - Cuenca Río Sevilla (Frío)

### Visualizar la matriz de correlación
ggcorrplot(cor_matrix_Sev, hc.order = TRUE, type = "lower",
           lab = TRUE,lab_size = 3) +
  theme(
    axis.text.x = element_text(size = 8),  
    axis.text.y = element_text(size = 8),  
    plot.title = element_text(size = 15),   
    legend.title = element_text(size = 8), 
    legend.text = element_text(size = 8)
  ) + 
  ggtitle("Matriz de Correlación Río Sevilla (Frío)") 

## Se observa relación baja entre las variables de análisis 

Promedios variables de análisis

Promedio por año cuenca Río Sevilla (Frío)

prom_anual_clima_01 <- df_clima_01 %>%
  group_by(AAAA) %>%
  summarise(
    temp_prom = mean(Temp, na.rm =TRUE),
    humrel_prom = mean(HumRel, na.rm =TRUE),
    rad_prom = mean(Rad, na.rm =TRUE),
    precip_prom = mean(Precip, na.rm =TRUE),
    )
print(prom_anual_clima_01)
## # A tibble: 30 × 5
##     AAAA temp_prom humrel_prom rad_prom precip_prom
##    <dbl>     <dbl>       <dbl>    <dbl>       <dbl>
##  1  1994      26.5        83.6     18.9        7.36
##  2  1995      26.3        84.7     18.6        8.99
##  3  1996      26.3        84.5     18.5        8.13
##  4  1997      26.7        83.4     19.3        7.08
##  5  1998      26.6        84.7     18.5        8.42
##  6  1999      26.1        85.3     18.1        9.47
##  7  2000      26.4        84.1     18.6        7.74
##  8  2001      26.5        84.0     18.1        7.34
##  9  2002      26.6        83.8     19.0        7.54
## 10  2003      26.5        84.2     17.8        8.51
## # ℹ 20 more rows

Promedio por mes cuenca Río Sevilla (Frío)

prom_mes_clima_01 <- df_clima_01 %>%
  group_by(AAAA.MM) %>%
  summarise(
    temp_prom_mes = mean(Temp, na.rm =TRUE),
    humrel_prom_mes = mean(HumRel, na.rm =TRUE),
    radp_prom_mes = mean(Rad, na.rm =TRUE),
    precip_prom_mes = mean(Precip, na.rm =TRUE),
    )
print(prom_mes_clima_01)
## # A tibble: 360 × 5
##    AAAA.MM temp_prom_mes humrel_prom_mes radp_prom_mes precip_prom_mes
##    <chr>           <dbl>           <dbl>         <dbl>           <dbl>
##  1 1994-1           25.9            79.5          19.6            1.52
##  2 1994-10          26.1            86.9          17.1           11.1 
##  3 1994-11          25.8            87.5          16.9           10.7 
##  4 1994-12          26.2            83.2          17.9            3.11
##  5 1994-2           26.2            76.6          20.2            1.63
##  6 1994-3           26.8            78.7          20.5            3.68
##  7 1994-4           27.0            82.0          19.8            7.77
##  8 1994-5           26.7            86.3          18.8           12.6 
##  9 1994-6           26.9            85.8          19.1            8.24
## 10 1994-7           27.0            84.4          19.0            8.16
## # ℹ 350 more rows

Análisis por componentes principales PCA

Se requieren las librerías ggplot2 y factoextra

## Seleccionar variables para PCA
pca_mes_sev <- prom_mes_clima_01 [, c("temp_prom_mes", "humrel_prom_mes", "radp_prom_mes", "precip_prom_mes")]
pca_mes_sev
## # A tibble: 360 × 4
##    temp_prom_mes humrel_prom_mes radp_prom_mes precip_prom_mes
##            <dbl>           <dbl>         <dbl>           <dbl>
##  1          25.9            79.5          19.6            1.52
##  2          26.1            86.9          17.1           11.1 
##  3          25.8            87.5          16.9           10.7 
##  4          26.2            83.2          17.9            3.11
##  5          26.2            76.6          20.2            1.63
##  6          26.8            78.7          20.5            3.68
##  7          27.0            82.0          19.8            7.77
##  8          26.7            86.3          18.8           12.6 
##  9          26.9            85.8          19.1            8.24
## 10          27.0            84.4          19.0            8.16
## # ℹ 350 more rows
## Realizar el análisis PCA
pca_result_mes_sev <- prcomp(pca_mes_sev, scale. = TRUE)
pca_result_mes_sev
## Standard deviations (1, .., p=4):
## [1] 1.6005199 1.0204207 0.5171838 0.3599980
## 
## Rotation (n x k) = (4 x 4):
##                        PC1       PC2        PC3          PC4
## temp_prom_mes    0.1517376 0.9372461  0.3137786 -0.009406987
## humrel_prom_mes -0.5896117 0.1491226 -0.1834522 -0.772311954
## radp_prom_mes    0.5586599 0.1702326 -0.7848486 -0.207202079
## precip_prom_mes -0.5632343 0.2652417 -0.5018973  0.600427392
## Graficas los componentes principales
fviz_pca_var(pca_result_mes_sev, col.var ="contrib", 
             gradient.cols = c("#00AFBB", "#E7B800", "#3D642D", "#FC4E07"))

## Teniendo en cuenta que un gráfico PCA permite diagramar la interacción de las variables analizadas, en este caso particular para la Cuenca del Río Sevilla (Frío) se observa una mayor influencia entre la precipitación y la humedad relativa y otra no tan marcada pero perceptible entre la temperatura y la radiación solar.

BoxPlot para las variables de análisis

BoxPlot Temperatura para la cuenca del Río Sevilla (Frío)

## Crear el boxplot de Temperatura
## Se requiere la librería ggplot2
boxplot(Temp ~ AAAA, 
        data = df_clima_01,
        main = "Boxplot Temperatura Río Sevilla (Frío) Años 1994-2023",
        xlab = "Año",
        ylab = "Temperatura (°C)",
        col = "lightblue",
        border = "darkblue")

## En este gráfico es importante visibilzar los años 2010 (condiciones Niña) y 2016 (condiciones Niño). 

BoxPlot Humedad Relativa para la cuenca del Río Sevilla (Frío)

## Crear el boxplot de Humedad Relativa
boxplot(HumRel ~ AAAA, 
        data = df_clima_01,
        main = "Boxplot Humedad Relativa Río Sevilla (Frío) por Años 1994-2023",
        xlab = "Año",
        ylab = "Humedad Relativa (%)",
        col = "lightblue",
        border = "darkblue")

## En este gráfico es importante visibilzar los años 2010 (condiciones Niña) y 2016 (condiciones Niño).

Modelo lineal 1 Precip - HumRel cuenca Río Sevilla (Frío)

## La primera variable es la dependiente (y), en este caso analizamos Precip
## La segunda variable es la independiente (x), en este caso HumRel

mod1_lin_sev <- lm(Precip ~ HumRel, data = df_clima_01)

Resumen del modelo 1

# Ver el resumen del modelo 2 para obtener detalles
## Este resumen presenta coeficientes, errores estándar, valores de p, y otras estadísticas

summary(mod1_lin_sev)
## 
## Call:
## lm(formula = Precip ~ HumRel, data = df_clima_01)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -20.019  -6.637  -2.180   2.786 252.964 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -1.018e+02  5.497e-01  -185.3   <2e-16 ***
## HumRel       1.298e+00  6.502e-03   199.7   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 11.76 on 203695 degrees of freedom
##   (4486 observations deleted due to missingness)
## Multiple R-squared:  0.1637, Adjusted R-squared:  0.1637 
## F-statistic: 3.986e+04 on 1 and 203695 DF,  p-value: < 2.2e-16

Gráfico de dispersión modelo 1 con la línea de ajuste

## La Y es la variable dependiente, en este caso Precip
## La X es la variable independiente, en este caso HumRel

ggplot(df_clima_01, aes(x = HumRel, y = Precip)) +
  geom_point(color = "pink") +  # Añadir los puntos de datos
  geom_smooth(method = "lm", se = FALSE, color = "blue") +  # Añadir la línea de ajuste
  stat_poly_eq(
    formula = y ~ x,
    aes(label = paste(..eq.label.., ..rr.label.., sep = "~~")),
    parse = TRUE,
    label.x = 1.0,
    label.y = 0.8
  ) +  # Añadir la fórmula y R²
  labs(title = "Modelo Lineal 1 >> Precip - HumRel >> R. Sevilla",
       x = "Humedad Relativa (%)",
       y = "Precipitacion (mm)")
## Warning: The dot-dot notation (`..eq.label..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(eq.label)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 4486 rows containing non-finite outside the scale range
## (`stat_smooth()`).
## Warning: Removed 4486 rows containing non-finite outside the scale range
## (`stat_poly_eq()`).
## Warning: Removed 4486 rows containing missing values or values outside the scale range
## (`geom_point()`).

## Este modelo x: HumRel, y: Precip no presenta buen ajuste

Modelo lineal 2 HumRel - Temp cuenca Río Sevilla (Frío)

## La primera variable es la dependiente (y), en este caso analizamos HumRel
## La segunda variable es la independiente (x), en este caso Temp

mod2_lin_sev <- lm(HumRel ~ Temp, data = df_clima_01)

Resumen del modelo 2

# Ver el resumen del modelo 2 para obtener detalles
## Este resumen presenta coeficientes, errores estándar, valores de p, y otras estadísticas

summary(mod2_lin_sev)
## 
## Call:
## lm(formula = HumRel ~ Temp, data = df_clima_01)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -13.456  -2.805   1.129   3.081   7.912 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 129.42984    0.30961   418.0   <2e-16 ***
## Temp         -1.70213    0.01167  -145.8   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.915 on 208181 degrees of freedom
## Multiple R-squared:  0.0927, Adjusted R-squared:  0.0927 
## F-statistic: 2.127e+04 on 1 and 208181 DF,  p-value: < 2.2e-16

Gráfico de dispersión modelo 2 con la línea de ajuste

## La Y es la variable dependiente, en este caso HumRel
## La X es la variable independiente, en este caso Temp

ggplot(df_clima_01, aes(x = Temp, y = HumRel)) +
  geom_point(color = "pink") +  # Añadir los puntos de datos
  geom_smooth(method = "lm", se = FALSE, color = "blue") +  # Añadir la línea de ajuste
  stat_poly_eq(
    formula = y ~ x,
    aes(label = paste(..eq.label.., ..rr.label.., sep = "~~")),
    parse = TRUE,
    label.x = 1.0,
    label.y = 0.8
  ) +  # Añadir la fórmula y R²
  labs(title = "Modelo Lineal 2 >> HumRel - Temp >> R. Sevilla",
       x = "Temperatura (°C)",
       y = "Humedad Relativa (%)")
## `geom_smooth()` using formula = 'y ~ x'

## Este modelo x: HumRel, y: Precip no presenta buen ajuste
## La humedad relativa disminuye a medida que aumenta la temperatura

Residuales modelo 2 Río Sevilla (Frío)

## Obtener los residuales del modelo 2
resid_m2 <- residuals(mod2_lin_sev)

Gráfico residuales modelo 2

plot(fitted(mod2_lin_sev), residuals(mod2_lin_sev),
     xlab = "Valores Ajustados", 
     ylab = "Residuales Mod2", 
     main = "Mod. 2 R. Sevilla >> Gráfico de Residuales vs. Valores Ajustados")
abline(h = 0, col = "red")

## Se confirma que este modelo lineal x: Temp, y: HumRel presenta un mejor ajuste, los residuales están distribuidos aleatoriamente alrededor de la línea horizontal en cero.

Gráfico Q-Q (Cuantiles-Cuantiles) - Residuales modelo 2 Río Sevilla (Frío)

qqnorm(residuals(mod2_lin_sev))
qqline(residuals(mod2_lin_sev))

## Estos residuales no siguen una distribución tan normal
## Me interesan los cuantiles -2 a 2

Modelo lineal 3 Temp - HumRel cuenca Río Sevilla (Frío)

## La primera variable es la dependiente (y), en este caso analizamos Temp
## La segunda variable es la independiente (x), en este caso HumRel

mod3_lin_sev <- lm(Temp ~ HumRel, data = df_clima_01)

Resumen del modelo 3

# Ver el resumen del modelo 2 para obtener detalles
## Este resumen presenta coeficientes, errores estándar, valores de p, y otras estadísticas

summary(mod3_lin_sev)
## 
## Call:
## lm(formula = Temp ~ HumRel, data = df_clima_01)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.82207 -0.55658  0.00285  0.46655  2.84812 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 31.1088827  0.0315141   987.1   <2e-16 ***
## HumRel      -0.0544611  0.0003734  -145.8   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7002 on 208181 degrees of freedom
## Multiple R-squared:  0.0927, Adjusted R-squared:  0.0927 
## F-statistic: 2.127e+04 on 1 and 208181 DF,  p-value: < 2.2e-16

Gráfico de dispersión modelo 3 con la línea de ajuste

## La Y es la variable dependiente, en este caso Temp
## La X es la variable independiente, en este caso HumRel

ggplot(df_clima_01, aes(x = HumRel, y = Temp)) +
  geom_point(color = "pink") +  # Añadir los puntos de datos
  geom_smooth(method = "lm", se = FALSE, color = "blue") +  # Añadir la línea de ajuste
  stat_poly_eq(
    formula = y ~ x,
    aes(label = paste(..eq.label.., ..rr.label.., sep = "~~")),
    parse = TRUE,
    label.x = 1.0,
    label.y = 0.8
  ) +  # Añadir la fórmula y R²
  labs(title = "Modelo Lineal 3 >> Temp - HumRel >> R. Sevilla",
       x = "Humedad Relativa (%)",
       y = "Temperatura (C)")
## `geom_smooth()` using formula = 'y ~ x'

## Este modelo x: HumRel, y: Precip no presenta buen ajuste

Residuales modelo 3 Río Sevilla (Frío)

## Obtener los residuales del modelo 3
resid_m3 <- residuals(mod3_lin_sev)

Gráfico residuales modelo 3

plot(fitted(mod3_lin_sev), residuals(mod3_lin_sev),
     xlab = "Valores Ajustados", 
     ylab = "Residuales Mod3", 
     main = "Mod. 3 R. Sevilla >> Gráfico de Residuales vs. Valores Ajustados")
abline(h = 0, col = "red")

Gráfico Q-Q (Cuantiles-Cuantiles) - Residuales modelo 3 Río Sevilla (Frío)

qqnorm(residuals(mod3_lin_sev))
qqline(residuals(mod3_lin_sev))

## Estos residuales siguen una distribución un poco más normal que los del modelo 2
## Me interesan los cuantiles -2 a 2

Modelo lineal 4 Temp - Rad cuenca Río Sevilla (Frío)

# Ajustar el modelo lineal, análisis entre Precipitación y Humedad Relativa
## En este caso analizamos la dependencia de la variable Precip
## La primera variable es la dependiente (y), en este caso analizamos Temp
## La segunda variable es la independiente (x), en este caso Rad

mod4_lin_sev <- lm(Temp ~ Rad, data = df_clima_01)

Resumen del modelo 4

# Ver el resumen del modelo 2 para obtener detalles
## Este resumen presenta coeficientes, errores estándar, valores de p, y otras estadísticas

summary(mod4_lin_sev)
## 
## Call:
## lm(formula = Temp ~ Rad, data = df_clima_01)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.12155 -0.50839  0.00697  0.45898  2.91395 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 2.510e+01  9.406e-03  2668.2   <2e-16 ***
## Rad         7.724e-02  5.046e-04   153.1   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6969 on 208181 degrees of freedom
## Multiple R-squared:  0.1012, Adjusted R-squared:  0.1012 
## F-statistic: 2.343e+04 on 1 and 208181 DF,  p-value: < 2.2e-16

Gráfico de dispersión modelo 4 con la línea de ajuste

## Gráfico del modelo 4 - Humedad Relativa:Precipitación
## La Y es la variable dependiente, en este caso Temp
## La X es la variable independiente, en este caso Rad

ggplot(df_clima_01, aes(x = Rad, y = Temp)) +
  geom_point(color = "pink") +  # Añadir los puntos de datos
  geom_smooth(method = "lm", se = FALSE, color = "blue") +  # Añadir la línea de ajuste
  stat_poly_eq(
    formula = y ~ x,
    aes(label = paste(..eq.label.., ..rr.label.., sep = "~~")),
    parse = TRUE,
    label.x = 1.0,
    label.y = 0.8
  ) +  # Añadir la fórmula y R²
  labs(title = "Modelo Lineal 4 >> Temp - Rad >> R. Sevilla",
       x = "Radiacion Solar (W/m2)",
       y = "Temperatura (°C)")
## `geom_smooth()` using formula = 'y ~ x'

Residuales modelo 4 Río Sevilla (Frío)

## Obtener los residuales del modelo 3
resid_m4 <- residuals(mod4_lin_sev)

Gráfico residuales modelo 4

plot(fitted(mod4_lin_sev), residuals(mod4_lin_sev),
     xlab = "Valores Ajustados", 
     ylab = "Residuales Mod4", 
     main = "Mod. 4 R. Sevilla >> Grafico de Residuales vs. Valores Ajustados")
abline(h = 0, col = "red")

Gráfico Q-Q (Cuantiles-Cuantiles) - Residuales modelo 4 Río Sevilla (Frío)

qqnorm(residuals(mod4_lin_sev))
qqline(residuals(mod4_lin_sev))

## Me interesan los cuantiles -2 a 2

Modelo lineal 5 Temp prom mes - Rad prom mes cuenca Río Sevilla (Frío)

# Ajustar el modelo lineal, análisis entre Precipitación y Humedad Relativa
## En este caso analizamos la dependencia de la variable Precip
## La primera variable es la dependiente (y), en este caso analizamos Temp prom mes
## La segunda variable es la independiente (x), en este caso Rad prom mes

mod5_lin_sev <- lm(temp_prom_mes ~ radp_prom_mes, data = prom_mes_clima_01)

Resumen del modelo 5

# Ver el resumen del modelo 2 para obtener detalles
## Este resumen presenta coeficientes, errores estándar, valores de p, y otras estadísticas

summary(mod5_lin_sev)
## 
## Call:
## lm(formula = temp_prom_mes ~ radp_prom_mes, data = prom_mes_clima_01)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -0.9114 -0.2890 -0.0052  0.3011  1.2374 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   24.72170    0.28404  87.037  < 2e-16 ***
## radp_prom_mes  0.09757    0.01539   6.339 6.97e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4007 on 358 degrees of freedom
## Multiple R-squared:  0.1009, Adjusted R-squared:  0.0984 
## F-statistic: 40.18 on 1 and 358 DF,  p-value: 6.97e-10

Gráfico de dispersión modelo 5 con la línea de ajuste

## La Y es la variable dependiente, en este caso Temp prom mes
## La X es la variable independiente, en este caso Rad prom mes

ggplot(prom_mes_clima_01, aes(x = radp_prom_mes, y = temp_prom_mes)) +
  geom_point(color = "pink") +  # Añadir los puntos de datos
  geom_smooth(method = "lm", se = FALSE, color = "blue") +  # Añadir la línea de ajuste
  stat_poly_eq(
    formula = y ~ x,
    aes(label = paste(..eq.label.., ..rr.label.., sep = "~~")),
    parse = TRUE,
    label.x = 1.0,
    label.y = 0.8
  ) +  # Añadir la fórmula y R²
  labs(title = "Modelo Lineal 5 >> Temp - Rad >> R. Sevilla",
       x = "Radiacion promedio mes (W/m2)",
       y = "Temperatura promedio mes (°C)")
## `geom_smooth()` using formula = 'y ~ x'

## Datos muy dispersos, ajuste bajo

Residuales modelo 5 Río Sevilla (Frío)

## Obtener los residuales del modelo 5
resid_m5 <- residuals(mod5_lin_sev)

Gráfico residuales modelo 5

plot(fitted(mod5_lin_sev), residuals(mod5_lin_sev),
     xlab = "Valores Ajustados", 
     ylab = "Residuales Mod5", 
     main = "Mod. 5 Temp - Rad R. Sevilla >> Graf. Residuales vs. Val. Ajustados")
abline(h = 0, col = "red")

Gráfico Q-Q (Cuantiles-Cuantiles) - Residuales modelo 5 Río Sevilla (Frío)

qqnorm(residuals(mod5_lin_sev))
qqline(residuals(mod5_lin_sev))

## Al utilizar menos datos se sigue presentando la misma tendencia, datos más ajustados a la recta entre -2 y 2 y sesgo de cola izquierda

Modelo lineal 6 HumRel - Precip cuenca Río Sevilla (Frío)

# Ajustar el modelo lineal, análisis entre Precipitación y Humedad Relativa
## En este caso analizamos la dependencia de la variable Precip
## La primera variable es la dependiente (y), en este caso analizamos HumRel
## La segunda variable es la independiente (x), en este caso Precip

mod6_lin_sev <- lm(HumRel ~ Precip, data = df_clima_01)

Resumen del modelo 6

# Ver el resumen del modelo 2 para obtener detalles
## Este resumen presenta coeficientes, errores estándar, valores de p, y otras estadísticas

summary(mod6_lin_sev)
## 
## Call:
## lm(formula = HumRel ~ Precip, data = df_clima_01)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -30.8558  -2.3307   0.5522   2.8197  10.4010 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 8.346e+01  9.496e-03  8789.3   <2e-16 ***
## Precip      1.261e-01  6.315e-04   199.7   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.665 on 203695 degrees of freedom
##   (4486 observations deleted due to missingness)
## Multiple R-squared:  0.1637, Adjusted R-squared:  0.1637 
## F-statistic: 3.986e+04 on 1 and 203695 DF,  p-value: < 2.2e-16

Gráfico de dispersión modelo 6 con la línea de ajuste

## Gráfico del modelo 6 - Humedad Relativa:Precipitación
## La Y es la variable dependiente, en este caso HumRel
## La X es la variable independiente, en este caso Precip

ggplot(df_clima_01, aes(x = Precip, y = HumRel)) +
  geom_point(color = "pink") +  # Añadir los puntos de datos
  geom_smooth(method = "lm", se = FALSE, color = "blue") +  # Añadir la línea de ajuste
  stat_poly_eq(
    formula = y ~ x,
    aes(label = paste(..eq.label.., ..rr.label.., sep = "~~")),
    parse = TRUE,
    label.x = 1.0,
    label.y = 0.8
  ) +  # Añadir la fórmula y R²
  labs(title = "Modelo Lineal 6 >> HumRel - Precip >> R. Sevilla",
       x = "Precipitacion (mm)",
       y = "Humedad Relativa (%)")
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 4486 rows containing non-finite outside the scale range
## (`stat_smooth()`).
## Warning: Removed 4486 rows containing non-finite outside the scale range
## (`stat_poly_eq()`).
## Warning: Removed 4486 rows containing missing values or values outside the scale range
## (`geom_point()`).

## No se observa relación directamente proporcional según lo esperado, hipótesis a mayor precip mayor HumRel

Modelo 1 Lineal Múltiple

## Variable dependiente (Y) = HumRel
## Varialbes independientes = Rad, Temp, Precip

mod1_lin_mul_sev <- lm (HumRel ~ Rad + Temp + Precip,
                        data = df_clima_01)

summary(mod1_lin_mul_sev)
## 
## Call:
## lm(formula = HumRel ~ Rad + Temp + Precip, data = df_clima_01)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -21.1367  -2.4035   0.5888   2.5990   7.9734 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 113.226523   0.283969  398.73   <2e-16 ***
## Rad          -0.366348   0.002838 -129.07   <2e-16 ***
## Temp         -0.854325   0.010956  -77.97   <2e-16 ***
## Precip        0.076567   0.000659  116.18   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.428 on 203693 degrees of freedom
##   (4486 observations deleted due to missingness)
## Multiple R-squared:  0.2685, Adjusted R-squared:  0.2685 
## F-statistic: 2.492e+04 on 3 and 203693 DF,  p-value: < 2.2e-16

Gráficos Modelo 1 Lineal Múltiple

## Variable dependiente (Y) = HumRel
## Variables independientes = Rad, Temp, Precip

# Crear gráfico de Rad vs HumRel
p1_mlm_01 <- ggplot(df_clima_01, aes(x = Rad, y = HumRel)) +
  geom_point() +  # Puntos de los datos
  geom_smooth(method = "lm", formula = y ~ x, color = "blue") +  # Línea de regresión
  labs(title = "Rad vs Hum Rel", x = "Radiacion", y = "Humedad Relativa")

# Crear gráfico de Temp vs HumedadRelativa
p2_mlm_01 <- ggplot(df_clima_01, aes(x = Temp, y = HumRel)) +
  geom_point() +
  geom_smooth(method = "lm", formula = y ~ x, color = "blue") +
  labs(title = "Temp vs Hum Rel", x = "Temperatura", y = "Humedad Relativa")

# Crear gráfico de Precip vs HumedadRelativa
p3_mlm_01 <- ggplot(df_clima_01, aes(x = Precip, y = HumRel)) +
  geom_point() +
  geom_smooth(method = "lm", formula = y ~ x, color = "blue") +
  labs(title = "Precip vs Hum Rel", x = "Precipitacion", y = "Humedad Relativa")

# Mostrar gráficos uno al lado del otro
grid.arrange(p1_mlm_01, p2_mlm_01, p3_mlm_01, ncol = 3)
## Warning: Removed 4486 rows containing non-finite outside the scale range
## (`stat_smooth()`).
## Warning: Removed 4486 rows containing missing values or values outside the scale range
## (`geom_point()`).

## Se confirma que no hay relación directa entre la ocurrencia de Precip y el comportamiento de la HumRel
## Se podría inferir que las relaciones más visibles son entre la HumRel con la Temp y la Rad

Modelo 2 Lineal Múltiple

## Variable dependiente (Y) = Temp
## Varialbes independientes = Rad, HumRel, Precip

mod2_lin_mul_sev <- lm (Temp ~ Rad + HumRel + Precip,
                        data = df_clima_01)

summary(mod2_lin_mul_sev)
## 
## Call:
## lm(formula = Temp ~ Rad + HumRel + Precip, data = df_clima_01)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.95825 -0.52496  0.02436  0.45995  2.63956 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 28.5578344  0.0412051  693.07   <2e-16 ***
## Rad          0.0474614  0.0005788   81.99   <2e-16 ***
## HumRel      -0.0339265  0.0004351  -77.97   <2e-16 ***
## Precip      -0.0060592  0.0001349  -44.90   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6831 on 203693 degrees of freedom
##   (4486 observations deleted due to missingness)
## Multiple R-squared:  0.147,  Adjusted R-squared:  0.147 
## F-statistic: 1.17e+04 on 3 and 203693 DF,  p-value: < 2.2e-16

Gráficos Modelo 2 Lineal Múltiple

## Variable dependiente (Y) = Temp
## Variables independientes = Rad, HumRel, Precip

# Crear gráfico de Rad vs Temp
p1_mlm_02 <- ggplot(df_clima_01, aes(x = Rad, y = Temp)) +
  geom_point() +  # Puntos de los datos
  geom_smooth(method = "lm", formula = y ~ x, color = "blue") +  # Línea de regresión
  labs(title = "Rad vs Temp", x = "Radiacion", y = "Temperatura")

# Crear gráfico de HumRel vs Temp
p2_mlm_02 <- ggplot(df_clima_01, aes(x = HumRel, y = Temp)) +
  geom_point() +
  geom_smooth(method = "lm", formula = y ~ x, color = "blue") +
  labs(title = "Hum Rel vs Temp", x = "Humedad Relativa", y = "Temperatura")

# Crear gráfico de Precip vs Temp
p3_mlm_02 <- ggplot(df_clima_01, aes(x = Precip, y = Temp)) +
  geom_point() +
  geom_smooth(method = "lm", formula = y ~ x, color = "blue") +
  labs(title = "Precip vs Temp", x = "Precipitacion", y = "Temperatura")

# Mostrar gráficos uno al lado del otro
grid.arrange(p1_mlm_02, p2_mlm_02, p3_mlm_02, ncol = 3)
## Warning: Removed 4486 rows containing non-finite outside the scale range
## (`stat_smooth()`).
## Warning: Removed 4486 rows containing missing values or values outside the scale range
## (`geom_point()`).

## Se confirma la relación directa entre Temp y Rad, y la relación inversa entre la HumRel y la Temp