# 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
# 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)
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"))
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"))
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
##
### 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
### 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
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
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
## 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.
## 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).
## 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).
## 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)
# 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
## 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
## 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)
# 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
## 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
## Obtener los residuales del modelo 2
resid_m2 <- residuals(mod2_lin_sev)
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.
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
## 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)
# 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
## 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
## Obtener los residuales del modelo 3
resid_m3 <- residuals(mod3_lin_sev)
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")
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
# 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)
# 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 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'
## Obtener los residuales del modelo 3
resid_m4 <- residuals(mod4_lin_sev)
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")
qqnorm(residuals(mod4_lin_sev))
qqline(residuals(mod4_lin_sev))
## Me interesan los cuantiles -2 a 2
# 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)
# 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
## 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
## Obtener los residuales del modelo 5
resid_m5 <- residuals(mod5_lin_sev)
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")
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
# 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)
# 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 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
## 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
## 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
## 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
## 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