# Carga de ibrerías
# ================================
if (!require(dplyr)) install.packages("dplyr")
if (!require(ggplot2)) install.packages("ggplot2")
if (!require(gt)) install.packages("gt")
if (!require(readr)) install.packages("readr")
if (!require(sf)) install.packages("sf")
library(dplyr)
library(ggplot2)
library(gt)
library(readr)
library(sf)
datos <- read.csv("C:/Users/Usuario/OneDrive/Escritorio/Mundo/Conjunto.csv", sep = ";")
datos$longitude <- as.numeric(datos$longitude)
datos$latitude <- as.numeric(datos$latitude)
# Se estudia si la latitud influye en la longitud máxima.
# Independiente: Latitud (x)
# Dependiente: Longitud máxima por bin de latitud (y)
# (datos filtrados)
datos <- datos[!is.na(datos$longitude) & !is.na(datos$latitude), ]
puntos_sf <- st_as_sf(datos, coords = c("longitude", "latitude"), crs = 3857)
puntos_wgs84 <- st_transform(puntos_sf, crs = 4326)
coord_grados <- st_coordinates(puntos_wgs84)
resultado <- data.frame(
longitude_deg = coord_grados[, 1],
latitude_deg = coord_grados[, 2]
)
Q1_lat <- quantile(resultado$latitude_deg, 0.25)
Q3_lat <- quantile(resultado$latitude_deg, 0.75)
IQR_lat <- Q3_lat - Q1_lat
lat_no_outliers <- resultado$latitude_deg >= (Q1_lat - 1.5 * IQR_lat) & resultado$latitude_deg <= (Q3_lat + 1.5 * IQR_lat)
Q1_lon <- quantile(resultado$longitude_deg, 0.25)
Q3_lon <- quantile(resultado$longitude_deg, 0.75)
IQR_lon <- Q3_lon - Q1_lon
lon_no_outliers <- resultado$longitude_deg >= (Q1_lon - 1.5 * IQR_lon) & resultado$longitude_deg <= (Q3_lon + 1.5 * IQR_lon)
resultado_filtrado <- resultado[lat_no_outliers & lon_no_outliers, ]
resultado_filtrado <- resultado_filtrado %>%
filter(latitude_deg <= 20) %>%
mutate(lat_bin = cut(latitude_deg,
breaks = seq(min(latitude_deg), 20, by = 0.1),
include.lowest = TRUE))
maximos_por_lat_bin <- resultado_filtrado %>%
group_by(lat_bin) %>%
summarise(
latitude_prom = mean(latitude_deg),
longitude_max = max(longitude_deg)
) %>%
ungroup() %>%
arrange(latitude_prom)
x <- maximos_por_lat_bin$latitude_prom
y <- maximos_por_lat_bin$longitude_max
modelo_lineal <- lm(y ~ x)
modelo_lineal
##
## Call:
## lm(formula = y ~ x)
##
## Coefficients:
## (Intercept) x
## -5.598 -3.407
beta0 <- coef(modelo_lineal)[1]
beta1 <- coef(modelo_lineal)[2]
plot(x, y, col = "blue", pch = 19,
main = "Modelo lineal: Longitud vs Latitud (hasta 20°)",
xlab = "Latitud promedio del bin (°)",
ylab = "Máximo de longitud (°)")
abline(modelo_lineal, col = "red", lwd = 2)
# La linea se observa en color rojo
cor_pearson <- cor.test(x, y, method = "pearson")
r <- cor_pearson$estimate
r
## cor
## -0.7041756
r2 <- r*r*100
r2
## cor
## 49.58632
# Solo aplica si se quiere encontrar el punto donde Y = 0
# Calculo para una latitud de 17.5
y_tec <- (-5.598-3.407*17.5)
y_tec
## [1] -65.2205
Entre la latitud promedio y la longitud máxima existe una relación que puede modelarse mediante un modelo lineal, cuya ecuación es y = (-5.598-3.407x) donde 𝑦 representa la longitud máxima (en grados) y 𝑥 la latitud promedio (en grados). El coeficiente de determinación 49.58632 indica que casi la mitad de la variabilidad en la longitud máxima se explica por la latitud promedio, mientras que el resto se debe a otros factores no considerados en el modelo. Por otro lado, la coorelaccion lineal es fuerte siendo del 70% Además, la relación presenta una pendiente negativa, lo que indica que a medida que la latitud promedio aumenta, la longitud máxima tiende a disminuir.*