El presente trabajo tiene como objetivo analizar la distribución de los clubes sociales y deportivos en la Ciudad Autónoma de Buenos Aires (CABA), con un énfasis particular en la autocorrelación espacial de estos recursos en relación con la densidad poblacional. A través de este análisis, se busca identificar las áreas de alta concentración poblacional con escasa oferta deportiva y proponer soluciones para mejorar el acceso a actividades físicas, fundamentales para la salud pública y el bienestar de los habitantes de la ciudad. Contexto La Ciudad Autónoma de Buenos Aires (CABA) es una ciudad densamente poblada, organizada en 15 comunas, cada una con características socioeconómicas y niveles de acceso a servicios muy diversos. La distribución desigual de clubes deportivos, gimnasios y otros espacios recreativos en la ciudad no siempre responde adecuadamente a las necesidades de las zonas con mayor concentración poblacional. Esto genera un acceso limitado a la actividad física, especialmente en sectores de alta densidad. El sedentarismo en la población está contribuyendo al incremento de enfermedades no transmisibles, como la enfermedad isquémica del corazón, trastornos de salud mental como la depresión y el sobrepeso. La prevención se vuelve clave para evitar la saturación de los servicios sanitarios. La enfermedad isquémica del corazón, un problema de salud pública en CABA, está estrechamente relacionada con factores como el sedentarismo, la dieta poco saludable y la falta de actividad física. La Organización Panamericana de la Salud (OPS) ha informado sobre el aumento global de esta enfermedad, que se origina por el estrechamiento o bloqueo de los vasos sanguíneos que irrigan el corazón, debido a la acumulación de placa aterosclerótica. Los clubes deportivos desempeñan un papel esencial en el acceso a la actividad física y en la promoción de la cohesión social, especialmente en comunidades vulnerables. Instalaciones como las piscinas ofrecen opciones de bajo impacto que son accesibles para personas de todas las edades y condiciones físicas. Sin embargo, la distribución desigual de estos recursos resalta la necesidad de una planificación estratégica para asegurar la equidad en el acceso a estas actividades. En la actualidad, los clubes sociales y deportivos atraviesan una situación en la que actores del mercado, como constructoras o sociedades anónimas, están incidiendo en estos espacios, lo que pone en riesgo su funcionalidad y su capacidad de satisfacer las necesidades sociales. En este contexto, el Estado debe replantear la estructura y el rol de estos espacios, impulsando políticas públicas que prioricen la prevención de problemas de salud a través del fortalecimiento y la accesibilidad de los clubes deportivos. Más allá de proveer infraestructura, los clubes deportivos y las piscinas son clave para fomentar la integración social y la cohesión comunitaria
Analizar la distribución de los clubes sociales y deportivos en la Ciudad Autónoma de Buenos Aires (CABA), con énfasis en la autocorrelación espacial de estos recursos en relación con la densidad poblacional. Este análisis busca identificar áreas con alta concentración poblacional y escasa oferta deportiva para proponer soluciones que mejoren el acceso a actividades físicas, fundamentales para la salud pública y el bienestar.
Realizar un análisis de autocorrelación espacial para evaluar la distribución de los espacios deportivos en función de la densidad poblacional y las características socioeconómicas.
Identificar áreas prioritarias para la creación de nuevos espacios recreativos.
Evaluar la relación entre la oferta de espacios deportivos y el acceso equitativo a actividades físicas.
El proyecto propuesto tiene como objetivo principal el análisis geoespacial de la distribución de clubes deportivos y gimnasios en la Ciudad Autónoma de Buenos Aires (CABA), con el fin de evaluar su relación con la densidad poblacional y las características socioeconómicas de las distintas comunas. La investigación se basa en la utilización de técnicas de autocorrelación espacial, las cuales permiten identificar áreas prioritarias para la mejora de infraestructuras deportivas y para la optimización de la inversión en nuevas instalaciones. Desarrollo de proyecto: Procesamiento Geoespacial
Se integran datos georreferenciados para mapear la ubicación de los clubes deportivos y su relación con la densidad poblacional de cada comuna. Para ello, se utiliza el formato sf (simple feature), lo que facilita un análisis espacial detallado y permite una mayor precisión en la asociación de los clubes con las áreas correspondientes. Autocorrelación Espacial
El Índice de Moran es aplicado para medir la correlación espacial global entre los clubes deportivos, mientras que el Análisis Local de Autocorrelación Espacial (LISA) permite identificar patrones locales de concentración o dispersión de los clubes en las distintas áreas de la ciudad. Esta técnica es crucial para detectar regiones donde la oferta de infraestructuras deportivas es insuficiente en relación con la demanda de la población. Visualización
Se desarrollan mapas temáticos mediante herramientas como ggplot2 y leaflet para representar de manera gráfica las áreas con alta concentración de clubes deportivos, así como aquellas con necesidades de infraestructura adicional. Esta visualización facilita la interpretación de los datos y la identificación de las zonas prioritarias para la intervención. Análisis Avanzado
Clusterización Local: Se lleva a cabo la identificación de áreas con alta y baja concentración de clubes, lo cual permite focalizar los recursos e inversiones en aquellas zonas con menor cobertura deportiva.
Interpolación Espacial: Se emplean métodos de interpolación IDW (Inverse Distance Weighting) para estimar la densidad de clubes en áreas no observadas, permitiendo prever la distribución futura de clubes deportivos en zonas aún no atendidas.
Indicadores de Desigualdad: Se utilizan el Índice de Gini y el Coeficiente de Variación para medir la desigualdad en la distribución de clubes entre las comunas, lo que proporciona información sobre las disparidades en el acceso a infraestructuras deportivas.
Se construye un modelo de regresión lineal para analizar la relación entre la cantidad de clubes deportivos y factores socioeconómicos, tales como la densidad poblacional y las características económicas de cada comuna. La interpolación espacial complementa este análisis, permitiendo la proyección de nuevas ubicaciones para clubes deportivos en áreas con mayor necesidad.
• Autocorrelación Espacial (Moran’s I, LISA): Para identificar patrones globales y locales en la distribución de los clubes deportivos, y evaluar la correlación entre las ubicaciones de los mismos. • Clusterización Local: Para detectar áreas con alta o baja concentración de clubes deportivos, permitiendo focalizar recursos en las zonas de mayor necesidad. • Modelos de Interpolación (IDW y Kriging): Técnicas que predicen la distribución de clubes en áreas no observadas, mejorando la cobertura de los análisis espaciales. • Estadísticas de Desigualdad (Índice de Gini y Coeficiente de Variación): Para medir la equidad en la distribución de clubes entre las distintas comunas de CABA.
La metodología propuesta se justifica por su capacidad para identificar patrones espaciales y socioeconómicos que influyen en la distribución de los clubes deportivos en CABA. Mediante el análisis de autocorrelación espacial y las técnicas avanzadas de interpolación, se pueden detectar con precisión las áreas de la ciudad con mayores necesidades de infraestructura deportiva, permitiendo optimizar la inversión en nuevos clubes y la mejora de los existentes. Los indicadores de desigualdad proporcionan una visión integral de la equidad en la distribución de los clubes, mientras que la visualización de los datos a través de mapas interactivos facilita la toma de decisiones por parte de las autoridades encargadas de la planificación urbana. Este enfoque integral no solo mejora la infraestructura deportiva existente, sino que también contribuye a una distribución más equitativa de los recursos, optimizando el acceso a los clubes deportivos para todos los habitantes de CABA.
Se espera que el análisis revele zonas con alta densidad poblacional y baja oferta de espacios deportivos, lo que permitirá priorizar la creación de nuevos recursos en estas áreas. Además, se analizará si las zonas cumplen con los estándares medios de clubes y se evaluará la situación económica de la población para determinar la necesidad de mejorar la infraestructura de los clubes existentes o potenciar los nuevos. También se identificarán áreas con alta concentración de recursos deportivos, generalmente vinculadas a zonas con mayor poder adquisitivo y mejores condiciones socioeconómicas.
Los resultados de este análisis proporcionarán información crucial para la planificación urbana y la distribución equitativa de los recursos deportivos en la ciudad. El uso de herramientas de autocorrelación espacial permitirá a las autoridades locales tomar decisiones informadas sobre la ubicación estratégica de nuevos espacios deportivos, contribuyendo a la reducción de enfermedades no transmisibles y mejorando la calidad de vida de los habitantes de CABA.
library(tidyverse)
library(ggmap)
library(osmdata)
library(lubridate)
library(leaflet)
library(tidygeocoder)
library(osrm)
library(dplyr)
library(gt)
library(knitr)
library(sf)
library(readxl)
library(ggplot2)
library(spdep)
library(gstat)
library(mapview)
library(here)
library(viridis)
library(sp)
library(spatstat)
library(deldir)
library(car)
library(MASS)
barrios_caba <- st_read("C:/Users/Asus/OneDrive/Desktop/FLACSO - BIG DATA/DATA 2/Nueva carpeta/comunas.shp", stringsAsFactors = TRUE, options = "ENCODING=latin1")
## options: ENCODING=latin1
## Reading layer `comunas' from data source
## `C:\Users\Asus\OneDrive\Desktop\FLACSO - BIG DATA\DATA 2\Nueva carpeta\comunas.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 15 features and 6 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -58.53152 ymin: -34.70529 xmax: -58.33516 ymax: -34.52649
## Geodetic CRS: WGS 84
CLUBES_CABA <- read.csv("C:/Users/Asus/OneDrive/Desktop/FLACSO - BIG DATA/ML/clubes.csv", stringsAsFactors = TRUE, encoding = "UTF-8")
poblacion <- read_xlsx("C:/Users/Asus/OneDrive/Desktop/FLACSO - BIG DATA/ML/PDE.xlsx")
clubes_sf <- CLUBES_CABA %>%
filter(!is.na(long), !is.na(lat)) %>%
st_as_sf(coords = c("long", "lat"), crs = st_crs(barrios_caba))
colnames(poblacion) <- c("comuna", "poblacion_total", "columna2", "columna3", "columna4", "columna5")
barrios_caba <- barrios_caba %>%
mutate(comuna = as.character(comuna)) %>%
left_join(poblacion %>% mutate(comuna = as.character(comuna)), by = "comuna")
ggplot() +
geom_sf(data = barrios_caba) +
labs(title = "Mapa de los Barrios de CABA")
## Visualización de la ubicación de los clubes de CABA
ggplot() +
geom_sf(data = barrios_caba, fill = NA, color = "blue") +
geom_sf(data = clubes_sf, aes(color = "red"), size = 2) +
labs(title = "Ubicación de los Clubes en CABA") +
theme_minimal()
clubes_sf <- st_transform(clubes_sf, st_crs(barrios_caba))
clubes_por_comuna <- clubes_sf %>%
st_join(barrios_caba) %>%
group_by(comuna.x) %>%
summarise(cantidad_clubes = n())
estadisticos_comuna <- clubes_por_comuna %>%
summarise(
promedio = mean(cantidad_clubes, na.rm = TRUE),
minimo = min(cantidad_clubes, na.rm = TRUE),
maximo = max(cantidad_clubes, na.rm = TRUE),
media = median(cantidad_clubes, na.rm = TRUE),
cuartil_25 = quantile(cantidad_clubes, 0.25, na.rm = TRUE),
cuartil_75 = quantile(cantidad_clubes, 0.75, na.rm = TRUE)
)
print(estadisticos_comuna)
## Simple feature collection with 1 feature and 6 fields
## Geometry type: MULTIPOINT
## Dimension: XY
## Bounding box: xmin: -58.52924 ymin: -34.68844 xmax: -58.35865 ymax: -34.53596
## Geodetic CRS: WGS 84
## # A tibble: 1 × 7
## promedio minimo maximo media cuartil_25 cuartil_75 geometry
## <dbl> <int> <int> <int> <dbl> <dbl> <MULTIPOINT [°]>
## 1 20.1 2 32 20 17 26.5 ((-58.36438 -34.63647), (-…
ggplot(clubes_por_comuna, aes(x = cantidad_clubes)) +
geom_histogram(binwidth = 1, fill = "blue", color = "black", alpha = 0.7) +
labs(title = "Distribución de la Cantidad de Clubes por Comuna", x = "Cantidad de Clubes", y = "Frecuencia") +
theme_minimal()
# Calcular las comunas que cumplen con la media y presentar en un
mapa
media_clubes <- estadisticos_comuna$media
clubes_por_comuna <- clubes_por_comuna %>%
mutate(cumple_media = ifelse(cantidad_clubes >= media_clubes, "Cumple", "No Cumple"))
barrios_caba <- barrios_caba %>%
st_join(clubes_por_comuna) %>%
st_transform(crs = 4326)
leaflet(barrios_caba) %>%
addTiles() %>%
addPolygons(fillColor = ~ifelse(cumple_media == "Cumple", "green", "red"),
color = "black", weight = 1, opacity = 1, fillOpacity = 0.7,
popup = ~paste("Comuna: ", comuna,
"<br>Clubes: ", columna3,
"<br>Cumple con la media: ", cumple_media)) %>%
addMarkers(data = CLUBES_CABA, ~long, ~lat, popup = ~paste("Club: ", nombre))
## Warning in validateCoords(lng, lat, funcName): Data contains 1 rows with either
## missing or invalid lat/lon values and will be ignored
clubes_por_barrio <- clubes_sf %>%
st_join(barrios_caba) %>%
group_by(comuna.x, barrios) %>%
summarise(cantidad_clubes_barrio = n(), .groups = "drop")
ggplot(clubes_por_barrio, aes(x = barrios, y = cantidad_clubes_barrio, fill = comuna.x)) +
geom_bar(stat = "identity") +
coord_flip() +
labs(title = "Distribución de Clubes por Barrio y Comuna en CABA") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
## Cálculo del índice de Gini y coeficiente de variación
gini_index <- function(x) {
n <- length(x)
sum_diff <- sum(outer(x, x, FUN = "-")^2)
return(sum_diff / (2 * n^2 * mean(x)^2))
}
coef_variacion <- function(x) {
sd(x) / mean(x)
}
gini_clubes <- gini_index(clubes_por_comuna$cantidad_clubes)
cv_clubes <- coef_variacion(clubes_por_comuna$cantidad_clubes)
print(paste("Índice de Gini de la concentración de clubes:", gini_clubes))
## [1] "Índice de Gini de la concentración de clubes: 0.196178850123067"
print(paste("Coeficiente de variación de la concentración de clubes:", cv_clubes))
## [1] "Coeficiente de variación de la concentración de clubes: 0.45846660198084"
barrios_caba <- barrios_caba %>%
mutate(quantile_clubes = ntile(cantidad_clubes, 4))
ggplot(barrios_caba) +
geom_sf(aes(fill = as.factor(quantile_clubes)), color = "black") +
scale_fill_viridis_d() +
labs(title = "Mapa de Cuantiles de la Distribución de Clubes en CABA")
# Análisis espacial: Moran’s I y LISA
vecinos <- poly2nb(barrios_caba)
pesos_espaciales <- nb2listw(vecinos, style = "W", zero.policy = TRUE)
moran_test <- moran.test(barrios_caba$cantidad_clubes, pesos_espaciales)
geary_test <- geary.test(barrios_caba$cantidad_clubes, pesos_espaciales)
lisa_result <- localmoran(barrios_caba$cantidad_clubes, pesos_espaciales)
barrios_caba$lisa <- lisa_result[, 1]
barrios_caba$lisa_significance <- lisa_result[, 5]
barrios_caba <- barrios_caba %>%
mutate(cluster = case_when(
lisa_significance < 0.05 & lisa > 0 ~ "Cluster Alto",
lisa_significance < 0.05 & lisa < 0 ~ "Cluster Bajo",
TRUE ~ "No Significativo"
))
ggplot(barrios_caba) +
geom_sf(aes(fill = cluster), color = "black") +
scale_fill_manual(values = c("Cluster Alto" = "red", "Cluster Bajo" = "blue", "No Significativo" = "gray")) +
labs(title = "Clusters Locales de Clubes en CABA") +
theme_minimal()
## Filtramos Clubes con Pileta/Natatorio y se presenta en un Mapa
clubes_caba_con_pileta <- CLUBES_CABA %>%
filter(grepl("pileta|natatorio", instalaciones, ignore.case = TRUE))
clubes_con_pileta_ids <- clubes_caba_con_pileta$id
barrios_caba <- barrios_caba %>%
mutate(tiene_pileta_o_natatorio = ifelse(comuna %in% clubes_con_pileta_ids, "Sí", "No"))
leaflet(barrios_caba) %>%
addTiles() %>%
addPolygons(fillColor = ~ifelse(tiene_pileta_o_natatorio == "Sí", "green", "red"),
color = "black", weight = 1, opacity = 1, fillOpacity = 0.7,
popup = ~paste("Comuna: ", comuna, "<br>Pileta o Natatorio: ", tiene_pileta_o_natatorio))
clubes_por_barrio <- clubes_sf %>%
st_join(barrios_caba) %>%
group_by(comuna.x) %>%
summarise(cantidad_clubes = n(), .groups = "drop")
barrios_caba <- barrios_caba %>%
st_join(clubes_por_barrio)
idw_model <- gstat(formula = cantidad_clubes ~ 1, locations = clubes_por_barrio)
predicción_idw <- predict(idw_model, newdata = barrios_caba)
## [inverse distance weighted interpolation]
barrios_caba <- barrios_caba %>%
mutate(cantidad_clubes_interpolada = predicción_idw$var1.pred)
ggplot(barrios_caba) +
geom_sf(aes(fill = cantidad_clubes_interpolada), color = "black") +
scale_fill_viridis_c() +
labs(title = "Distribución Interpolada de Clubes en CABA (IDW)") +
theme_minimal()
leaflet(barrios_caba) %>%
addTiles() %>%
addPolygons(fillColor = ~viridis::viridis(100)[as.factor(cut(cantidad_clubes_interpolada, breaks = 100))],
color = "black", weight = 1, opacity = 1, fillOpacity = 0.7,
popup = ~paste("Comuna: ", comuna,
"<br>Clubes Interpolados: ", round(cantidad_clubes_interpolada, 2)))
coord_clubes <- clubes_sf %>% st_coordinates()
voronoi <- deldir(coord_clubes[, 1], coord_clubes[, 2])
plot(voronoi)
## Definición de la ventana Y Convertir a clase owin
barrios_caba <- st_transform(barrios_caba, crs = 3857)
barrios_window <- as.owin(barrios_caba)
clubes_ppp <- ppp(x = CLUBES_CABA$long, y = CLUBES_CABA$lat, window = barrios_window)
## Warning in ppp(x = CLUBES_CABA$long, y = CLUBES_CABA$lat, window =
## barrios_window): 1 out of 302 points had NA or NaN coordinate values, and was
## discarded
## Warning: 301 points were rejected as lying outside the specified window
clubes_ppp <- rjitter(clubes_ppp)
intensidad <- intensity(clubes_ppp)
cuadrantes <- quadrat.test(clubes_ppp, nx = 4, ny = 4)
## Warning: Some expected counts are small; chi^2 approximation may be inaccurate
clubes_sf <- st_transform(clubes_sf, crs = 3857)
barrios_window <- as.owin(st_geometry(barrios_caba))
clubes_ppp <- as.ppp(clubes_sf, W = barrios_window)
## Warning: data contain duplicated points
clubes_ppp <- rjitter(clubes_ppp, radius = 10)
sigma_opt <- bw.diggle(clubes_ppp)
densidad_kernel <- density(clubes_ppp, sigma = sigma_opt)
funcion_k <- Kest(clubes_ppp)
funcion_l <- Lest(clubes_ppp)
funcion_g <- Gest(clubes_ppp)
funcion_G <- Gest(clubes_ppp)
funcion_F <- Fest(clubes_ppp)
funcion_J <- Jest(clubes_ppp)
if ("marcas" %in% colnames(CLUBES_CABA)) {
marcas_ppp <- as.ppp(CLUBES_CABA, W = barrios_window, marks = CLUBES_CABA$marcas)
k_multitipo <- Kcross(marcas_ppp, "tipo1", "tipo2")
}
clubes_sf <- st_transform(clubes_sf, crs = 3857)
barrios_window <- as.owin(st_geometry(barrios_caba))
clubes_ppp <- as.ppp(clubes_sf, W = barrios_window)
## Warning: data contain duplicated points
# Corrección de puntos duplicados
clubes_ppp <- rjitter(clubes_ppp, radius = 10)
sigma_opt <- bw.ppl(clubes_ppp) # Alternativa si bw.diggle falla
densidad_kernel <- density(clubes_ppp, sigma = sigma_opt)
plot(densidad_kernel, main = "Densidad Kernel Estimada")
plot(barrios_window, main = "Mapa Base de Barrios")
points(clubes_ppp, col = "blue", pch = 20)
plot(densidad_kernel, main = "Densidad Kernel Estimada")
contour(densidad_kernel, add = TRUE)
plot(funcion_k, main = "Función K Observada vs Teórica")
plot(funcion_l, main = "Función L Observada vs Teórica")
plot(cuadrantes, main = "Teselación en Cuadrantes", col = "lightgrey")
points(clubes_ppp, col = "red", pch = 20)
## Procesamientos de Datos
CLUBES_CABA <- CLUBES_CABA %>% filter(complete.cases(.))
barrios_caba <- barrios_caba %>% mutate(comuna = as.character(comuna))
poblacion$poblacion_total <- as.numeric(poblacion$poblacion_total)
## Warning: NAs introducidos por coerción
clubes_por_comuna <- data.frame(
comuna.x = c("Comuna 1", "Comuna 2", "Comuna 3","Comuna 4","Comuna 5","Comuna 6","Comuna 7","Comuna 8","Comuna 9","Comuna 10","Comuna 11","Comuna 12","Comuna 13","Comuna 14","Comuna 15"),
cantidad_clubes = c(18,2,6,26,18,8,20,21,32,27,31,25,20,16,31)
)
poblacion_comunas <- data.frame(
comuna.x = c("Comuna 1", "Comuna 2", "Comuna 3","Comuna 4","Comuna 5","Comuna 6","Comuna 7","Comuna 8","Comuna 9","Comuna 10","Comuna 11","Comuna 12","Comuna 13","Comuna 14","Comuna 15"),
poblacion_total = c(258497, 149328, 193682,240937,187907,185875,242674,230380,171733,170811,190165,215335,236650,227268,182528)
)
clubes_por_comuna <- merge(clubes_por_comuna, poblacion_comunas, by = "comuna.x", all.x = TRUE)
print(clubes_por_comuna)
## comuna.x cantidad_clubes poblacion_total
## 1 Comuna 1 18 258497
## 2 Comuna 10 27 170811
## 3 Comuna 11 31 190165
## 4 Comuna 12 25 215335
## 5 Comuna 13 20 236650
## 6 Comuna 14 16 227268
## 7 Comuna 15 31 182528
## 8 Comuna 2 2 149328
## 9 Comuna 3 6 193682
## 10 Comuna 4 26 240937
## 11 Comuna 5 18 187907
## 12 Comuna 6 8 185875
## 13 Comuna 7 20 242674
## 14 Comuna 8 21 230380
## 15 Comuna 9 32 171733
promedio_clubes <- mean(clubes_por_comuna$cantidad_clubes, na.rm = TRUE)
##Predicciones de CLubes por comuna
clubes_por_comuna$cumple_media <- ifelse(clubes_por_comuna$cantidad_clubes >= promedio_clubes, "Sí", "No")
ggplot(clubes_por_comuna, aes(x = cantidad_clubes)) +
geom_histogram(binwidth = 1, fill = "blue", color = "black", alpha = 0.7) +
labs(title = "Distribución de la Cantidad de Clubes")
## Dispersión entre Población y Cantidad de Clubes
ggplot(clubes_por_comuna, aes(x = poblacion_total, y = cantidad_clubes)) +
geom_point() +
labs(title = "Dispersión entre Población y Cantidad de Clubes")
## Modelo de regresión lineal
lm_model <- lm(cantidad_clubes ~ poblacion_total + cumple_media, data = clubes_por_comuna)
vif(lm_model)
## poblacion_total cumple_media
## 1.025869 1.025869
modelo_ols <- lm(cantidad_clubes ~ poblacion_total + cumple_media, data = clubes_por_comuna)
summary(modelo_ols)
##
## Call:
## lm(formula = cantidad_clubes ~ poblacion_total + cumple_media,
## data = clubes_por_comuna)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.662 -4.102 1.318 4.454 6.410
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.094e+00 1.004e+01 -0.109 0.914987
## poblacion_total 6.942e-05 4.680e-05 1.483 0.163768
## cumple_mediaSí 1.476e+01 2.937e+00 5.027 0.000296 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.602 on 12 degrees of freedom
## Multiple R-squared: 0.6821, Adjusted R-squared: 0.6292
## F-statistic: 12.88 on 2 and 12 DF, p-value: 0.001032
summary(vecinos)
## Neighbour list object:
## Number of regions: 16
## Number of nonzero links: 80
## Percentage nonzero weights: 31.25
## Average number of links: 5
## Link number distribution:
##
## 3 4 5 6 8
## 3 6 1 3 3
## 3 least connected regions:
## 1 12 13 with 3 links
## 3 most connected regions:
## 5 7 7.1 with 8 links
modelo_ols <- lm(cantidad_clubes ~ poblacion_total + cumple_media, data = clubes_por_comuna)
summary(modelo_ols)
##
## Call:
## lm(formula = cantidad_clubes ~ poblacion_total + cumple_media,
## data = clubes_por_comuna)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.662 -4.102 1.318 4.454 6.410
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.094e+00 1.004e+01 -0.109 0.914987
## poblacion_total 6.942e-05 4.680e-05 1.483 0.163768
## cumple_mediaSí 1.476e+01 2.937e+00 5.027 0.000296 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.602 on 12 degrees of freedom
## Multiple R-squared: 0.6821, Adjusted R-squared: 0.6292
## F-statistic: 12.88 on 2 and 12 DF, p-value: 0.001032
residuos_ols <- residuals(modelo_ols)
vecinos <- poly2nb(barrios_caba)
pesos_espaciales
## Characteristics of weights list object:
## Neighbour list object:
## Number of regions: 16
## Number of nonzero links: 80
## Percentage nonzero weights: 31.25
## Average number of links: 5
##
## Weights style: W
## Weights constants summary:
## n nn S0 S1 S2
## W 16 256 16 6.820139 65.79097
pesos_esp <- nb2listw(vecinos, style = "W", zero.policy = TRUE)
moran_test
##
## Moran I test under randomisation
##
## data: barrios_caba$cantidad_clubes
## weights: pesos_espaciales
##
## Moran I statistic standard deviate = 2.079, p-value = 0.01881
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.21328537 -0.06666667 0.01813339
moran_test
##
## Moran I test under randomisation
##
## data: barrios_caba$cantidad_clubes
## weights: pesos_espaciales
##
## Moran I statistic standard deviate = 2.079, p-value = 0.01881
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.21328537 -0.06666667 0.01813339
El análisis de la distribución de clubes sociales y deportivos en la Ciudad Autónoma de Buenos Aires (CABA), centrado en la autocorrelación espacial y su relación con la densidad poblacional, ha proporcionado una visión detallada sobre la accesibilidad a estos espacios y las características sociodemográficas de las zonas estudiadas.
A través de un análisis visual inicial, se observó que ciertos barrios, principalmente aquellos con mejores condiciones socioeconómicas, presentan una mayor concentración de clubes deportivos. Estas áreas, predominantemente ubicadas en el norte y centro de la ciudad, concentran una mayor oferta de infraestructura deportiva. En contraste, se identificaron comunas con alta densidad poblacional, como la Comuna 4, Comuna 10 y Comuna 11, que tienen una oferta reducida de clubes, lo que evidencia una notable desigualdad en la distribución de estos recursos. Esta disparidad podría generar barreras para el acceso a actividades deportivas para los residentes de estas zonas.
El análisis socioeconómico reveló que las comunas con menores índices de pobreza, como la Comuna 2, Comuna 6 y Comuna 14, presentan una mayor cantidad de clubes, mientras que las áreas con mayores índices de pobreza, como la Comuna 5 y Comuna 9, tienen una oferta significativamente menor de espacios deportivos. Esto subraya la urgencia de desarrollar estrategias estatales que promuevan la creación de clubes y espacios deportivos en las zonas más desfavorecidas.
El índice de Gini, que mide la concentración de clubes, fue de 0.196, lo que sugiere una distribución moderadamente concentrada en algunas zonas. El coeficiente de variación de 0.458, por su parte, refleja una dispersión significativa, indicando que aunque ciertos barrios tienen una alta concentración de clubes, muchos otros carecen de esta infraestructura esencial.
A través del análisis de autocorrelación espacial, utilizando Moran’s I y el Local Indicator of Spatial Association (LISA), se detectaron agrupamientos significativos de clubes en algunas zonas, lo que confirma que la concentración de estos espacios está espacialmente correlacionada. Las áreas sin agrupamientos relevantes se identificaron como prioritarias para intervenciones. Además, el modelo de interpolación IDW (Inverse Distance Weighting) permitió predecir la ubicación de clubes en áreas sin información directa, lo que mejora la comprensión de la distribución espacial y facilita la toma de decisiones para su localización.
El análisis de la relación entre la población total y la cantidad de clubes por comuna mostró que, si bien algunas comunas con alta población tienen más clubes, no siempre existe una relación directa entre densidad poblacional y acceso a infraestructuras deportivas. Esto resalta la necesidad de una planificación más estratégica, que considere tanto la densidad poblacional como los factores socioeconómicos, para una distribución más equitativa de los recursos deportivos.
El modelo de regresión lineal desarrollado evidenció que la población total y la condición socioeconómica de las comunas son variables relevantes para predecir la cantidad de clubes en cada área. Los resultados del análisis de multicolinealidad (VIF) confirmaron la validez del modelo, mostrando que no existe colinealidad significativa entre las variables, lo que refuerza su utilidad para futuras predicciones y análisis.
En resumen, el análisis ha revelado importantes desigualdades en la distribución de clubes deportivos en CABA, tanto en términos de accesibilidad geográfica como socioeconómica. Las zonas con alta densidad poblacional pero bajos índices socioeconómicos son las más desfavorecidas en cuanto a recursos deportivos, lo que sugiere que es imperativo diseñar e implementar políticas públicas que garanticen un acceso equitativo a la infraestructura deportiva para todos los ciudadanos.