#Espacios verdes en Rosario, Santa Fe ##Análisis de datos espaciales
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.0 v purrr 0.3.4
## v tibble 3.0.1 v dplyr 0.8.5
## v tidyr 1.0.2 v stringr 1.4.0
## v readr 1.3.1 v forcats 0.5.0
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(ggthemes)
library(ggplot2)
library(knitr)
library(sf)
## Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
library(ggplot2)
library(osmdata)
## Data (c) OpenStreetMap contributors, ODbL 1.0. https://www.openstreetmap.org/copyright
library(hereR)
library(ggmap)
## Google's Terms of Service: https://cloud.google.com/maps-platform/terms/.
## Please cite ggmap if you use it! See citation("ggmap") for details.
##
## Attaching package: 'ggmap'
## The following objects are masked from 'package:hereR':
##
## geocode, route
library(leaflet)
library(readxl)
library(rmarkdown)
library(knitr)
library(hms)
library(ggsflabel)
##
## Attaching package: 'ggsflabel'
## The following objects are masked from 'package:ggplot2':
##
## geom_sf_label, geom_sf_text, StatSfCoordinates
library(viridis)
## Loading required package: viridisLite
library(RColorBrewer)
library(leaflet)
library(sp)
library(rgeos)
## rgeos version: 0.5-5, (SVN revision 640)
## GEOS runtime version: 3.8.0-CAPI-1.13.1
## Linking to sp version: 1.4-2
## Polygon checking: TRUE
library(stringr)
library(htmltools)
library(maps)
##
## Attaching package: 'maps'
## The following object is masked from 'package:purrr':
##
## map
library(spdep)
## Loading required package: spData
## To access larger datasets in this package, install the spDataLarge
## package with: `install.packages('spDataLarge',
## repos='https://nowosad.github.io/drat/', type='source')`
require(spatialreg)
## Loading required package: spatialreg
## Loading required package: Matrix
##
## Attaching package: 'Matrix'
## The following objects are masked from 'package:tidyr':
##
## expand, pack, unpack
## Registered S3 methods overwritten by 'spatialreg':
## method from
## residuals.stsls spdep
## deviance.stsls spdep
## coef.stsls spdep
## print.stsls spdep
## summary.stsls spdep
## print.summary.stsls spdep
## residuals.gmsar spdep
## deviance.gmsar spdep
## coef.gmsar spdep
## fitted.gmsar spdep
## print.gmsar spdep
## summary.gmsar spdep
## print.summary.gmsar spdep
## print.lagmess spdep
## summary.lagmess spdep
## print.summary.lagmess spdep
## residuals.lagmess spdep
## deviance.lagmess spdep
## coef.lagmess spdep
## fitted.lagmess spdep
## logLik.lagmess spdep
## fitted.SFResult spdep
## print.SFResult spdep
## fitted.ME_res spdep
## print.ME_res spdep
## print.lagImpact spdep
## plot.lagImpact spdep
## summary.lagImpact spdep
## HPDinterval.lagImpact spdep
## print.summary.lagImpact spdep
## print.sarlm spdep
## summary.sarlm spdep
## residuals.sarlm spdep
## deviance.sarlm spdep
## coef.sarlm spdep
## vcov.sarlm spdep
## fitted.sarlm spdep
## logLik.sarlm spdep
## anova.sarlm spdep
## predict.sarlm spdep
## print.summary.sarlm spdep
## print.sarlm.pred spdep
## as.data.frame.sarlm.pred spdep
## residuals.spautolm spdep
## deviance.spautolm spdep
## coef.spautolm spdep
## fitted.spautolm spdep
## print.spautolm spdep
## summary.spautolm spdep
## logLik.spautolm spdep
## print.summary.spautolm spdep
## print.WXImpact spdep
## summary.WXImpact spdep
## print.summary.WXImpact spdep
## predict.SLX spdep
##
## Attaching package: 'spatialreg'
## The following objects are masked from 'package:spdep':
##
## anova.sarlm, as.spam.listw, as_dgRMatrix_listw, as_dsCMatrix_I,
## as_dsCMatrix_IrW, as_dsTMatrix_listw, bptest.sarlm, can.be.simmed,
## cheb_setup, coef.gmsar, coef.sarlm, coef.spautolm, coef.stsls,
## create_WX, deviance.gmsar, deviance.sarlm, deviance.spautolm,
## deviance.stsls, do_ldet, eigen_pre_setup, eigen_setup, eigenw,
## errorsarlm, fitted.gmsar, fitted.ME_res, fitted.sarlm,
## fitted.SFResult, fitted.spautolm, get.ClusterOption,
## get.coresOption, get.mcOption, get.VerboseOption,
## get.ZeroPolicyOption, GMargminImage, GMerrorsar, griffith_sone,
## gstsls, Hausman.test, HPDinterval.lagImpact, impacts, intImpacts,
## Jacobian_W, jacobianSetup, l_max, lagmess, lagsarlm, lextrB,
## lextrS, lextrW, lmSLX, logLik.sarlm, logLik.spautolm, LR.sarlm,
## LR1.sarlm, LR1.spautolm, LU_prepermutate_setup, LU_setup,
## Matrix_J_setup, Matrix_setup, mcdet_setup, MCMCsamp, ME, mom_calc,
## mom_calc_int2, moments_setup, powerWeights, predict.sarlm,
## predict.SLX, print.gmsar, print.ME_res, print.sarlm,
## print.sarlm.pred, print.SFResult, print.spautolm, print.stsls,
## print.summary.gmsar, print.summary.sarlm, print.summary.spautolm,
## print.summary.stsls, residuals.gmsar, residuals.sarlm,
## residuals.spautolm, residuals.stsls, sacsarlm, SE_classic_setup,
## SE_interp_setup, SE_whichMin_setup, set.ClusterOption,
## set.coresOption, set.mcOption, set.VerboseOption,
## set.ZeroPolicyOption, similar.listw, spam_setup, spam_update_setup,
## SpatialFiltering, spautolm, spBreg_err, spBreg_lag, spBreg_sac,
## stsls, subgraph_eigenw, summary.gmsar, summary.sarlm,
## summary.spautolm, summary.stsls, trW, vcov.sarlm, Wald1.sarlm
require(splitstackshape)
## Loading required package: splitstackshape
library(tinytex)
Distritos #### Analizaremos la cantidad de espacios público verde por distrito
distritos <- st_read ('https://datos.rosario.gob.ar/sites/default/files/distritos_descentralizados.gml')
## Reading layer `distritos_descentralizados' from data source `https://datos.rosario.gob.ar/sites/default/files/distritos_descentralizados.gml' using driver `GML'
## Simple feature collection with 6 features and 3 fields
## geometry type: POLYGON
## dimension: XY
## bbox: xmin: -60.7971 ymin: -33.03897 xmax: -60.61183 ymax: -32.86925
## geographic CRS: WGS 84
espacioverde <- st_read ('https://datos.rosario.gob.ar/sites/default/files/espacios_verdes_parques.gml')
## Reading layer `espacios_verdes_parques' from data source `https://datos.rosario.gob.ar/sites/default/files/espacios_verdes_parques.gml' using driver `GML'
## Simple feature collection with 88 features and 5 fields
## geometry type: POLYGON
## dimension: XY
## bbox: xmin: -60.75129 ymin: -33.01096 xmax: -60.61996 ymax: -32.89483
## geographic CRS: WGS 84
espacioverde2 <- st_read('https://datos.rosario.gob.ar/sites/default/files/espacios_verdes_plazas.gml')
## Reading layer `espacios_verdes_plazas' from data source `https://datos.rosario.gob.ar/sites/default/files/espacios_verdes_plazas.gml' using driver `GML'
## Simple feature collection with 480 features and 5 fields
## geometry type: POLYGON
## dimension: XY
## bbox: xmin: -60.7789 ymin: -33.02477 xmax: -60.62133 ymax: -32.87118
## geographic CRS: WGS 84
datosparques <-rbind(espacioverde,espacioverde2)
ggplot() +
geom_sf(data = distritos) +
geom_sf(data = datosparques , fill = 'darkgreen')+
labs(title = "Espacio verde en Rosario, Santa Fe",
caption= "Fuente: https://datos.rosario.gob.ar/")+
theme_minimal()
espacioverde_distrito<- st_join(datosparques, distritos)
## although coordinates are longitude/latitude, st_intersects assumes that they are planar
ggplot() +
geom_sf(data = distritos) +
geom_sf(data = espacioverde_distrito, aes(color = DISTRITO), size=1) +
guides(fill = FALSE) +
labs(title = "Espacios Verdes por Distritos, Rosario",
caption= "Fuente: https://datos.rosario.gob.ar/",
fill= "DISTRITO",
y="",
x="") +
theme_minimal()
espacioverde_distrito_cant <- espacioverde_distrito %>%
group_by(DISTRITO) %>%
summarise(cantidad=n())
espacioverde_distrito_cant <- espacioverde_distrito_cant %>%
st_set_geometry(NULL)
head(espacioverde_distrito_cant)
## # A tibble: 6 x 2
## DISTRITO cantidad
## <fct> <int>
## 1 CENTRO 144
## 2 NOROESTE 133
## 3 NORTE 117
## 4 OESTE 71
## 5 SUDOESTE 41
## 6 SUR 69
distritos_cant <- distritos %>%
left_join(espacioverde_distrito_cant, by="DISTRITO")
head(distritos_cant)
## Simple feature collection with 6 features and 4 fields
## geometry type: POLYGON
## dimension: XY
## bbox: xmin: -60.7971 ymin: -33.03897 xmax: -60.61183 ymax: -32.86925
## geographic CRS: WGS 84
## gml_id DISTRITO OBSERVACIO cantidad
## 1 distritos_descentralizados.1 NORTE Villa Hortencia 117
## 2 distritos_descentralizados.2 NOROESTE Olga y Leticia Cossettini 133
## 3 distritos_descentralizados.3 CENTRO Antonio Berni 144
## 4 distritos_descentralizados.4 SUDOESTE <NA> 41
## 5 distritos_descentralizados.5 OESTE Felipe More 71
## 6 distritos_descentralizados.6 SUR Rosa Ziperovich 69
## geometry
## 1 POLYGON ((-60.78204 -32.874...
## 2 POLYGON ((-60.77064 -32.896...
## 3 POLYGON ((-60.69245 -32.948...
## 4 POLYGON ((-60.69016 -33.034...
## 5 POLYGON ((-60.7605 -32.9509...
## 6 POLYGON ((-60.65979 -32.969...
ggplot(distritos_cant) +
geom_bar(aes(weight = cantidad, x = DISTRITO), fill=brewer.pal(n = 6, name = "Spectral")) +
labs(title = "Espacios verdes por Distrito",
fill = "Cantidad",
caption= "Fuente: https://datos.rosario.gob.ar/",
y="Cantidad",
x="distrito") +
coord_flip()
####Se puede ver la marcada tendencia de contración de espacios verdes en distrito centro
Barrios Rosario
####Para poder enteder con mayor presiciÓn tendencias territoriales, sumamos la variable de Barrios
barrios <- st_read ('https://datos.rosario.gob.ar/sites/default/files/barrios.gml')
## Reading layer `barrios' from data source `https://datos.rosario.gob.ar/sites/default/files/barrios.gml' using driver `GML'
## Simple feature collection with 50 features and 3 fields
## geometry type: POLYGON
## dimension: XY
## bbox: xmin: -60.79693 ymin: -33.03934 xmax: -60.61278 ymax: -32.86941
## geographic CRS: WGS 84
barrio_distrito<- st_join(barrios, distritos)
## although coordinates are longitude/latitude, st_intersects assumes that they are planar
ggplot() +
geom_sf(data = barrios) +
geom_sf(data = datosparques , fill = 'darkgreen')+
labs(title = "Espacios verdes por Barrio en Rosario, Santa Fe",
caption= "Fuente: https://datos.rosario.gob.ar/")+
theme_minimal()
Espacios Verdes en relacion a los barrios de Rosario
espacioverde_barrios<- st_join(datosparques, barrios)
## although coordinates are longitude/latitude, st_intersects assumes that they are planar
ggplot() +
geom_sf(data = barrios) +
geom_sf(data = espacioverde_barrios, aes(color = BARRIO), size=1) +
guides(fill = FALSE) +
labs(title = "Espacios verdes por Barrio en Rosario, Santa Fe",
caption= "Fuente: https://datos.rosario.gob.ar/")+
theme(legend.position = "bottom")
espacioverde_barrios_cant <- espacioverde_barrios %>%
group_by(BARRIO) %>%
summarise(cantidad=n())
## Warning: Factor `BARRIO` contains implicit NA, consider using
## `forcats::fct_explicit_na`
espacioverde_barrios_cant<- espacioverde_barrios_cant %>%
st_set_geometry(NULL)
head(espacioverde_barrios_cant)
## # A tibble: 6 x 2
## BARRIO cantidad
## <fct> <int>
## 1 17 de agosto 3
## 2 Alberdi 24
## 3 Alberto Olmedo 5
## 4 Alvear 18
## 5 Antártida Argentina 50
## 6 Azcuenaga 3
barrios_cant <- barrios %>%
left_join(espacioverde_barrios_cant, by="BARRIO")
head(barrios_cant)
## Simple feature collection with 6 features and 4 fields
## geometry type: POLYGON
## dimension: XY
## bbox: xmin: -60.72556 ymin: -32.99758 xmax: -60.6559 ymax: -32.89296
## geographic CRS: WGS 84
## gml_id MSLINK BARRIO cantidad
## 1 barrios.1 28 Victoria Walsh NA
## 2 barrios.2 38 14 de Octubre NA
## 3 barrios.3 50 Docente "Hermanas Cossettini" NA
## 4 barrios.4 22 Latinoamerica 15
## 5 barrios.5 47 Bella Vista 9
## 6 barrios.6 45 Parque Casado 1
## geometry
## 1 POLYGON ((-60.68993 -32.964...
## 2 POLYGON ((-60.66428 -32.996...
## 3 POLYGON ((-60.72556 -32.893...
## 4 POLYGON ((-60.66768 -32.968...
## 5 POLYGON ((-60.69234 -32.959...
## 6 POLYGON ((-60.66151 -32.976...
ggplot(barrios_cant) +
geom_bar(fill=rgb(0.1,1,0.5,0.7),aes(x = BARRIO, weight = cantidad))+
labs(title = "Espacios verdes por Barrio",
fill = "Cantidad",
caption= "Fuente: https://datos.rosario.gob.ar/",
y="Cantidad de Espacios Verdes",
x="Barrios") +
coord_flip()
ggplot() +
geom_sf(data = barrios_cant, aes(fill=cantidad)) +
labs(title = "Espacio verde por Barrio",
fill = "Cantidad",
caption= "Fuente: https://datos.rosario.gob.ar/",
y="",
x="") +
scale_fill_gradient(low="khaki2", high="deeppink4") +
geom_sf_label_repel(data = barrios_cant,
aes(label = BARRIO), size = 2)
## Warning in st_point_on_surface.sfc(data$geometry): st_point_on_surface may not
## give correct results for longitude/latitude data
Disponibilidad de espacios verdes por habitante
###Vamos la proporción del suelo de la ciudad de Rosario destinada a Espacios Verdes y el metro cuadrado de esapcio verde por habitante. Para lo cual, vamos a relacionar la infoamción reunida anteriormente con el total de la pobleción de la ciudad
espacios_verdes_rosario<- espacioverde_barrios%>%
mutate(ciudad = 'Rosario')%>%
mutate(area = st_area(espacioverde_barrios))%>%
mutate(area = as.numeric(area))%>%
mutate(poblacion = 1350475)%>%
st_set_geometry(NULL)%>%
select(ciudad, NOMBRE_EV_, BARRIO, area, poblacion)
head(espacios_verdes_rosario)
## ciudad NOMBRE_EV_ BARRIO area
## 1 Rosario B. Mitre Belgrano 3695.690
## 2 Rosario B. Mitre Belgrano 3698.960
## 3 Rosario B. Mitre Belgrano 3702.121
## 4 Rosario B. Mitre Belgrano 2551.058
## 5 Rosario De La Independencia Centro 30560.202
## 6 Rosario De La Independencia Centro 32088.405
## poblacion
## 1 1350475
## 2 1350475
## 3 1350475
## 4 1350475
## 5 1350475
## 6 1350475
espacios_verdes_rosario_total <- espacios_verdes_rosario%>%
group_by(ciudad, poblacion)%>%
summarise(area_verde = sum(area))
head(espacios_verdes_rosario_total)
## # A tibble: 1 x 3
## # Groups: ciudad [1]
## ciudad poblacion area_verde
## <chr> <dbl> <dbl>
## 1 Rosario 1350475 7542366.
barrios_rosario <- barrios%>%
mutate(ciudad = 'ROSARIO')%>%
mutate(barrio = BARRIO)%>%
select(-gml_id, -MSLINK, -BARRIO)%>%
mutate(area = st_area(barrios))%>%
mutate(area = as.numeric(area))%>%
st_set_geometry(NULL)
head(barrios_rosario)
## ciudad barrio area
## 1 ROSARIO Victoria Walsh 8823.922
## 2 ROSARIO 14 de Octubre 22365.857
## 3 ROSARIO Docente "Hermanas Cossettini" 54551.070
## 4 ROSARIO Latinoamerica 74111.759
## 5 ROSARIO Bella Vista 260123.034
## 6 ROSARIO Parque Casado 338832.749
agrupado_barrios <- barrios_rosario%>%
group_by(ciudad)%>%
summarise(area_total = sum(area))
head(agrupado_barrios)
## # A tibble: 1 x 2
## ciudad area_total
## <chr> <dbl>
## 1 ROSARIO 179850244.
agrupado_barrios$ciudad <- str_to_lower(agrupado_barrios$ciudad)
espacios_verdes_rosario_total$ciudad <- str_to_lower(espacios_verdes_rosario_total$ciudad)
agrupado <- espacios_verdes_rosario_total%>%
left_join(agrupado_barrios)
## Joining, by = "ciudad"
head (agrupado)
## # A tibble: 1 x 4
## # Groups: ciudad [1]
## ciudad poblacion area_verde area_total
## <chr> <dbl> <dbl> <dbl>
## 1 rosario 1350475 7542366. 179850244.
agrupado <- agrupado%>%
mutate(proporcion = (area_verde*100)/area_total)%>%
mutate(m2_hab = area_verde/poblacion)%>%
mutate_if(is.numeric, round, digits = 2)
## `mutate_if()` ignored the following grouping variables:
## Column `ciudad`
kable(agrupado)
| ciudad | poblacion | area_verde | area_total | proporcion | m2_hab |
|---|---|---|---|---|---|
| rosario | 1350475 | 7542366 | 179850244 | 4.19 | 5.58 |
Accesibiladad
centroides_barrios_rosario <- barrio_distrito %>%
st_centroid()
## Warning in st_centroid.sf(.): st_centroid assumes attributes are constant over
## geometries of x
## Warning in st_centroid.sfc(st_geometry(x), of_largest_polygon =
## of_largest_polygon): st_centroid does not give correct centroids for longitude/
## latitude data
ggplot()+
geom_sf(data=barrio_distrito, fill="lightyellow")+
geom_sf(data=centroides_barrios_rosario, color="red", shape=4, stroke=2, size=0.5)+
labs(title = "Barrios de la Ciudad de Rosario",
subtitle = "Ubicación de los centroides",
caption= "Fuente:https://datos.rosario.gob.ar/")+
theme_void()
distancia_barrios_rosario <- centroides_barrios_rosario%>%
mutate(distancia_verde = apply(st_distance(centroides_barrios_rosario, espacioverde_barrios), 1, function(x) min(x)))
seleccion_rosario <- distancia_barrios_rosario%>%
st_set_geometry(NULL)
seleccion_rosario <- left_join(barrio_distrito, seleccion_rosario)
## Joining, by = c("gml_id.x", "MSLINK", "BARRIO", "gml_id.y", "DISTRITO", "OBSERVACIO")
seleccion_rosario <- seleccion_rosario%>%
mutate(distancia_verde = round(distancia_verde, 2))
ggplot(data = seleccion_rosario) +
geom_jitter(aes(x = DISTRITO, y = distancia_verde, color= DISTRITO)) +
labs(title = "Distancia en metros a espacios verdes por Barrio", x = 'barrio', y = "Distancia al espacio verde más cercano", color = 'Ciudad', caption = 'Fuente:datos Rosario')+
theme_minimal()
###Vemos que tanto en el distrito Sudoeste como Sur se ve una mayor disperción, es decir, tienen menor accesibilidad
Accesibiladad y Bicicletas Públicas
ecobicis <- st_read ('https://datos.rosario.gob.ar/sites/default/files/estaciones_de_bicicletas_publica.gml')
## Reading layer `estaciones_de_bicicletas_publica' from data source `https://datos.rosario.gob.ar/sites/default/files/estaciones_de_bicicletas_publica.gml' using driver `GML'
## Simple feature collection with 52 features and 11 fields
## geometry type: POINT
## dimension: XY
## bbox: xmin: -60.68365 ymin: -32.97866 xmax: -60.62385 ymax: -32.91593
## geographic CRS: WGS 84
ggplot() +
geom_sf(data = barrios) +
geom_sf(data = ecobicis , colour = 'red')+
geom_sf(data = datosparques , fill = 'darkgreen')+
labs(title = "Ecobicis por Barrio en Rosario, Santa Fe",
caption= "Fuente: https://datos.rosario.gob.ar/")+
theme_minimal()
centroides_espaciosverdes <- datosparques %>%
st_centroid()
## Warning in st_centroid.sf(.): st_centroid assumes attributes are constant over
## geometries of x
## Warning in st_centroid.sfc(st_geometry(x), of_largest_polygon =
## of_largest_polygon): st_centroid does not give correct centroids for longitude/
## latitude data
datosparques_2 <- datosparques%>%
st_join (centroides_espaciosverdes)
## although coordinates are longitude/latitude, st_intersects assumes that they are planar
datosparques_3 <- datosparques_2 %>%
mutate(dist_ecobici = apply(st_distance(datosparques_2, ecobicis), 1, function(x) min(x)))
summary(datosparques_3$dist_ecobici)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0 319 1787 2337 4018 9549
ggplot(datosparques_3) +
geom_histogram(aes(x = dist_ecobici))+
labs(title = "Distancias entre espacios verdes y Ecobicis en Rosario, Santa Fe",
caption= "Fuente: https://datos.rosario.gob.ar/")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
datosparques_3 %>%
ggplot() +
geom_sf(data=barrio_distrito)+
geom_sf(aes(color=dist_ecobici)) +
geom_sf(data=ecobicis) +
scale_color_viridis_c(option = "plasma", direction = -1)+
labs(title = "Distancias entre espacios verdes y Ecobicis en Rosario, Santa Fe",
caption= "Fuente: https://datos.rosario.gob.ar/")
bicisenda <- st_read ('https://datos.rosario.gob.ar/sites/default/files/ciclovias_y_bicisendas.gml')
## Reading layer `ciclovias_y_bicisendas' from data source `https://datos.rosario.gob.ar/sites/default/files/ciclovias_y_bicisendas.gml' using driver `GML'
## Simple feature collection with 1046 features and 18 fields
## geometry type: LINESTRING
## dimension: XY
## bbox: xmin: -60.72032 ymin: -33.02907 xmax: -60.62063 ymax: -32.88436
## geographic CRS: WGS 84
ggplot() +
geom_sf(data = barrios) +
geom_sf(data = ecobicis , colour = 'red')+
geom_sf(data = datosparques , fill = 'darkgreen')+
geom_sf(data = bicisenda, color = "salmon", alpha = 10)+
labs(title = "Ecobicis y Bicisendas en Rosario, Santa Fe",
caption= "Fuente: https://datos.rosario.gob.ar/")+
theme_minimal()
ecobici_barrio<- st_join(ecobicis,distritos)
## although coordinates are longitude/latitude, st_intersects assumes that they are planar
## although coordinates are longitude/latitude, st_intersects assumes that they are planar
ggplot() +
geom_sf(data = distritos) +
geom_sf(data = ecobici_barrio, aes(color = DISTRITO))+
labs(title = "Estaciones de Bicicletas por Distrito",
subtitle = "Ciudad de Rosario",
fill = "Cantidad",
caption= "Fuente: https://datos.rosario.gob.ar")
distritos_estaciones <- ecobici_barrio %>%
filter(!is.na(DISTRITO)) %>%
group_by(DISTRITO) %>%
summarise(cantidad=n())
head(distritos_estaciones)
## Simple feature collection with 5 features and 2 fields
## geometry type: MULTIPOINT
## dimension: XY
## bbox: xmin: -60.68365 ymin: -32.97866 xmax: -60.62385 ymax: -32.91593
## geographic CRS: WGS 84
## # A tibble: 5 x 3
## DISTRITO cantidad geometry
## <fct> <int> <MULTIPOINT [°]>
## 1 CENTRO 35 ((-60.68015 -32.94435), (-60.67203 -32.94586), (-60.67053 -~
## 2 NORTE 5 ((-60.67455 -32.92173), (-60.6731 -32.91593), (-60.66907 -3~
## 3 OESTE 5 ((-60.68365 -32.95779), (-60.68155 -32.95022), (-60.67633 -~
## 4 SUDOESTE 2 ((-60.66916 -32.97468), (-60.6606 -32.97153))
## 5 SUR 5 ((-60.66118 -32.97619), (-60.64944 -32.97858), (-60.64373 -~
distritos_estaciones_2<- distritos%>%
st_join(distritos_estaciones, by="DISTRITO")
## although coordinates are longitude/latitude, st_intersects assumes that they are planar
head(distritos_estaciones_2)
## Simple feature collection with 6 features and 5 fields
## geometry type: POLYGON
## dimension: XY
## bbox: xmin: -60.7971 ymin: -33.03897 xmax: -60.61183 ymax: -32.86925
## geographic CRS: WGS 84
## gml_id DISTRITO.x OBSERVACIO DISTRITO.y
## 1 distritos_descentralizados.1 NORTE Villa Hortencia NORTE
## 2 distritos_descentralizados.2 NOROESTE Olga y Leticia Cossettini <NA>
## 3 distritos_descentralizados.3 CENTRO Antonio Berni CENTRO
## 4 distritos_descentralizados.4 SUDOESTE <NA> SUDOESTE
## 5 distritos_descentralizados.5 OESTE Felipe More OESTE
## 6 distritos_descentralizados.6 SUR Rosa Ziperovich SUR
## cantidad geometry
## 1 5 POLYGON ((-60.78204 -32.874...
## 2 NA POLYGON ((-60.77064 -32.896...
## 3 35 POLYGON ((-60.69245 -32.948...
## 4 2 POLYGON ((-60.69016 -33.034...
## 5 5 POLYGON ((-60.7605 -32.9509...
## 6 5 POLYGON ((-60.65979 -32.969...
ggplot() +
geom_sf(data = distritos_estaciones_2, aes(fill=cantidad)) +
geom_sf_text(data=distritos_estaciones_2, aes(label = DISTRITO.y), size=1.5, colour = "black") +
labs(title = "Estaciones de Bicicletas por Distrito",
subtitle = "Ciudad de Rosario",
fill = "Cantidad",
caption= "Fuente: https://datos.rosario.gob.ar",
y="latitud",
x="longitud") +
scale_fill_gradient(low="yellow", high="dark green")
## Warning in st_point_on_surface.sfc(data$geometry): st_point_on_surface may not
## give correct results for longitude/latitude data
## Warning: Removed 1 rows containing missing values (geom_text).
ggplot(distritos_estaciones) +
geom_bar(aes(x = DISTRITO, weight = cantidad, fill=DISTRITO)) +
coord_flip() +
labs(title = "Estaciones de Ecobici por DISTRITO",
subtitle = "Ciudad de Rosario",
caption = "Fuente: portal de datos abiertos de la Ciudad de Rosario, https://datos.rosario.gob.ar",
x = "DISTRITO",
y = "CANTIDAD")
distritos_estaciones_2 <- distritos_estaciones_2 %>%
mutate(superficie = st_area(distritos_estaciones_2))
distritos_estaciones_2<- distritos_estaciones_2 %>%
mutate(superficie_ha=round(as.numeric(superficie)/10000, 2))
ggplot() +
geom_sf(data = distritos_estaciones_2, aes(fill=cantidad/superficie_ha)) +
geom_sf_text(data=distritos, aes(label = DISTRITO), size=2.5, colour = "black") +
labs(title = "Estaciones de Bici por superficie",
subtitle = "Ciudad de Rosario",
fill = "Cantidad por ha",
caption= "Fuente: https://datos.rosario.gob.ar",
y="latitud",
x="longitud") +
scale_fill_gradient(low="khaki2", high="deeppink4")
## Warning in st_point_on_surface.sfc(data$geometry): st_point_on_surface may not
## give correct results for longitude/latitude data
Accesibiladad Peatonal
leaflet(datosparques) %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addPolygons()
datosparques <- st_transform(datosparques,
crs = "+proj=tmerc +lat_0=-34.6297166 +lon_0=-58.4627 +k=1 +x_0=100000 +y_0=100000 +ellps=intl +units=m +no_defs")
datosparques <- datosparques %>%
mutate(area=st_area(.)) %>%
mutate(area=as.numeric(area)) %>%
filter(area>10000)
leaflet(datosparques %>% st_transform(4326)) %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addPolygons()
set_key("m_gy2KqFB7XZKbjIh1ZIPgeLhuj-GWrZ7xw48GEtd6A")
# Para cada uno de los espacios verdes agarramos 4 puntos al azar
puntosEspaciosVerdes <- purrr::map(1:nrow(datosparques),function(x){
st_sample(datosparques[x,],size= 4)
})
# Juntamos todos los puntos en un objeto
puntosEspaciosVerdes <- do.call("c",puntosEspaciosVerdes)
# Lo convertimos a un objeto SF
puntosEspaciosVerdesSF <- st_as_sf(puntosEspaciosVerdes)
# Hacemos una transformación para que esté en el WSG84, que es lo que puede procesar isoline()
puntosEspaciosVerdesSF <- st_transform(puntosEspaciosVerdesSF,crs=4326)
# Efectivamente calculamos las isocronas para cada uno de los puntos
isocronosEspaciosVerdes <- purrr::map(1:nrow(puntosEspaciosVerdesSF),function(x) {
# Esta línea es solo para que nos vaya avisando qué está haciendo
cat("Procesando: ",x,"\r")
isoline(puntosEspaciosVerdesSF[x,], mode = "pedestrian",range_type = "time",range = 60*10)
})
## Procesando: 1
Procesando: 2
Procesando: 3
Procesando: 4
Procesando: 5
Procesando: 6
Procesando: 7
Procesando: 8
Procesando: 9
Procesando: 10
Procesando: 11
Procesando: 12
Procesando: 13
Procesando: 14
Procesando: 15
Procesando: 16
Procesando: 17
Procesando: 18
Procesando: 19
Procesando: 20
Procesando: 21
Procesando: 22
Procesando: 23
Procesando: 24
Procesando: 25
Procesando: 26
Procesando: 27
Procesando: 28
Procesando: 29
Procesando: 30
Procesando: 31
Procesando: 32
Procesando: 33
Procesando: 34
Procesando: 35
Procesando: 36
Procesando: 37
Procesando: 38
Procesando: 39
Procesando: 40
Procesando: 41
Procesando: 42
Procesando: 43
Procesando: 44
Procesando: 45
Procesando: 46
Procesando: 47
Procesando: 48
Procesando: 49
Procesando: 50
Procesando: 51
Procesando: 52
Procesando: 53
Procesando: 54
Procesando: 55
Procesando: 56
Procesando: 57
Procesando: 58
Procesando: 59
Procesando: 60
Procesando: 61
Procesando: 62
Procesando: 63
Procesando: 64
Procesando: 65
Procesando: 66
Procesando: 67
Procesando: 68
Procesando: 69
Procesando: 70
Procesando: 71
Procesando: 72
Procesando: 73
Procesando: 74
Procesando: 75
Procesando: 76
Procesando: 77
Procesando: 78
Procesando: 79
Procesando: 80
Procesando: 81
Procesando: 82
Procesando: 83
Procesando: 84
Procesando: 85
Procesando: 86
Procesando: 87
Procesando: 88
Procesando: 89
Procesando: 90
Procesando: 91
Procesando: 92
Procesando: 93
Procesando: 94
Procesando: 95
Procesando: 96
Procesando: 97
Procesando: 98
Procesando: 99
Procesando: 100
Procesando: 101
Procesando: 102
Procesando: 103
Procesando: 104
Procesando: 105
Procesando: 106
Procesando: 107
Procesando: 108
Procesando: 109
Procesando: 110
Procesando: 111
Procesando: 112
Procesando: 113
Procesando: 114
Procesando: 115
Procesando: 116
Procesando: 117
Procesando: 118
Procesando: 119
Procesando: 120
Procesando: 121
Procesando: 122
Procesando: 123
Procesando: 124
Procesando: 125
Procesando: 126
Procesando: 127
Procesando: 128
Procesando: 129
Procesando: 130
Procesando: 131
Procesando: 132
Procesando: 133
Procesando: 134
Procesando: 135
Procesando: 136
Procesando: 137
Procesando: 138
Procesando: 139
Procesando: 140
Procesando: 141
Procesando: 142
Procesando: 143
Procesando: 144
Procesando: 145
Procesando: 146
Procesando: 147
Procesando: 148
Procesando: 149
Procesando: 150
Procesando: 151
Procesando: 152
Procesando: 153
Procesando: 154
Procesando: 155
Procesando: 156
Procesando: 157
Procesando: 158
Procesando: 159
Procesando: 160
Procesando: 161
Procesando: 162
Procesando: 163
Procesando: 164
Procesando: 165
Procesando: 166
Procesando: 167
Procesando: 168
Procesando: 169
Procesando: 170
Procesando: 171
Procesando: 172
Procesando: 173
Procesando: 174
Procesando: 175
Procesando: 176
Procesando: 177
Procesando: 178
Procesando: 179
Procesando: 180
Procesando: 181
Procesando: 182
Procesando: 183
Procesando: 184
Procesando: 185
Procesando: 186
Procesando: 187
Procesando: 188
Procesando: 189
Procesando: 190
Procesando: 191
Procesando: 192
Procesando: 193
Procesando: 194
Procesando: 195
Procesando: 196
Procesando: 197
Procesando: 198
Procesando: 199
Procesando: 200
Procesando: 201
Procesando: 202
Procesando: 203
Procesando: 204
Procesando: 205
Procesando: 206
Procesando: 207
Procesando: 208
Procesando: 209
Procesando: 210
Procesando: 211
Procesando: 212
Procesando: 213
Procesando: 214
Procesando: 215
Procesando: 216
Procesando: 217
Procesando: 218
Procesando: 219
Procesando: 220
Procesando: 221
Procesando: 222
Procesando: 223
Procesando: 224
Procesando: 225
Procesando: 226
Procesando: 227
Procesando: 228
Procesando: 229
Procesando: 230
Procesando: 231
Procesando: 232
Procesando: 233
Procesando: 234
Procesando: 235
Procesando: 236
Procesando: 237
Procesando: 238
Procesando: 239
Procesando: 240
Procesando: 241
Procesando: 242
Procesando: 243
Procesando: 244
Procesando: 245
Procesando: 246
Procesando: 247
Procesando: 248
Procesando: 249
Procesando: 250
Procesando: 251
Procesando: 252
Procesando: 253
Procesando: 254
Procesando: 255
Procesando: 256
Procesando: 257
Procesando: 258
Procesando: 259
Procesando: 260
Procesando: 261
Procesando: 262
Procesando: 263
Procesando: 264
Procesando: 265
Procesando: 266
Procesando: 267
Procesando: 268
Procesando: 269
Procesando: 270
Procesando: 271
Procesando: 272
Procesando: 273
Procesando: 274
Procesando: 275
Procesando: 276
Procesando: 277
Procesando: 278
Procesando: 279
Procesando: 280
Procesando: 281
Procesando: 282
Procesando: 283
Procesando: 284
Procesando: 285
Procesando: 286
Procesando: 287
Procesando: 288
Procesando: 289
Procesando: 290
Procesando: 291
Procesando: 292
Procesando: 293
Procesando: 294
Procesando: 295
Procesando: 296
Procesando: 297
Procesando: 298
Procesando: 299
Procesando: 300
Procesando: 301
Procesando: 302
Procesando: 303
Procesando: 304
Procesando: 305
Procesando: 306
Procesando: 307
Procesando: 308
Procesando: 309
Procesando: 310
Procesando: 311
Procesando: 312
Procesando: 313
Procesando: 314
Procesando: 315
Procesando: 316
Procesando: 317
Procesando: 318
Procesando: 319
Procesando: 320
Procesando: 321
Procesando: 322
Procesando: 323
Procesando: 324
Procesando: 325
Procesando: 326
Procesando: 327
Procesando: 328
Procesando: 329
Procesando: 330
Procesando: 331
Procesando: 332
Procesando: 333
Procesando: 334
Procesando: 335
Procesando: 336
Procesando: 337
Procesando: 338
Procesando: 339
Procesando: 340
Procesando: 341
Procesando: 342
Procesando: 343
Procesando: 344
Procesando: 345
Procesando: 346
Procesando: 347
Procesando: 348
Procesando: 349
Procesando: 350
Procesando: 351
Procesando: 352
Procesando: 353
Procesando: 354
Procesando: 355
Procesando: 356
Procesando: 357
Procesando: 358
Procesando: 359
Procesando: 360
Procesando: 361
Procesando: 362
Procesando: 363
Procesando: 364
Procesando: 365
Procesando: 366
Procesando: 367
Procesando: 368
Procesando: 369
Procesando: 370
Procesando: 371
Procesando: 372
Procesando: 373
Procesando: 374
Procesando: 375
Procesando: 376
Procesando: 377
Procesando: 378
Procesando: 379
Procesando: 380
Procesando: 381
Procesando: 382
Procesando: 383
Procesando: 384
Procesando: 385
Procesando: 386
Procesando: 387
Procesando: 388
Procesando: 389
Procesando: 390
Procesando: 391
Procesando: 392
Procesando: 393
Procesando: 394
Procesando: 395
Procesando: 396
Procesando: 397
Procesando: 398
Procesando: 399
Procesando: 400
Procesando: 401
Procesando: 402
Procesando: 403
Procesando: 404
Procesando: 405
Procesando: 406
Procesando: 407
Procesando: 408
Procesando: 409
Procesando: 410
Procesando: 411
Procesando: 412
Procesando: 413
Procesando: 414
Procesando: 415
Procesando: 416
Procesando: 417
Procesando: 418
Procesando: 419
Procesando: 420
Procesando: 421
Procesando: 422
Procesando: 423
Procesando: 424
Procesando: 425
Procesando: 426
Procesando: 427
Procesando: 428
Procesando: 429
Procesando: 430
Procesando: 431
Procesando: 432
Procesando: 433
Procesando: 434
Procesando: 435
Procesando: 436
Procesando: 437
Procesando: 438
Procesando: 439
Procesando: 440
Procesando: 441
Procesando: 442
Procesando: 443
Procesando: 444
Procesando: 445
Procesando: 446
Procesando: 447
Procesando: 448
Procesando: 449
Procesando: 450
Procesando: 451
Procesando: 452
Procesando: 453
Procesando: 454
Procesando: 455
Procesando: 456
Procesando: 457
Procesando: 458
Procesando: 459
Procesando: 460
Procesando: 461
Procesando: 462
Procesando: 463
Procesando: 464
# Los juntamos en el mismo data frame
isocronosEspaciosVerdesJuntas <- do.call(rbind,isocronosEspaciosVerdes)
# Hacemos un gran poligono
isocronosEspaciosVerdesJuntasUnion <- st_union(isocronosEspaciosVerdesJuntas)
leaflet(isocronosEspaciosVerdesJuntasUnion %>% st_transform(4326)) %>%
addTiles() %>%
addPolygons()
manzanas <- st_read ('https://datos.rosario.gob.ar/sites/default/files/manzanas.gml')
## Reading layer `manzanas' from data source `https://datos.rosario.gob.ar/sites/default/files/manzanas.gml' using driver `GML'
## Simple feature collection with 8509 features and 4 fields
## geometry type: POLYGON
## dimension: XY
## bbox: xmin: -60.78127 ymin: -33.03465 xmax: -60.614 ymax: -32.87056
## geographic CRS: WGS 84
# Transformamos la proyección de las manzanas
manzanas <- manzanas %>%
st_transform("+proj=tmerc +lat_0=-34.6297166 +lon_0=-58.4627 +k=1 +x_0=100000 +y_0=100000 +ellps=intl +units=m +no_defs")
# Transformamos la proyección de la cobertura de espacios verdes
isocronosEspaciosVerdesJuntasUnion <- isocronosEspaciosVerdesJuntasUnion %>%
st_transform("+proj=tmerc +lat_0=-34.6297166 +lon_0=-58.4627 +k=1 +x_0=100000 +y_0=100000 +ellps=intl +units=m +no_defs")
# Lo convertimos en un objeto sf y creamos una columna, cobertura, que tendrá valor TRUE siempre
isocronosEspaciosVerdesJuntasUnion <- st_as_sf(isocronosEspaciosVerdesJuntasUnion) %>%
mutate(cobertura=TRUE)
# Spatial join
manzanas <- st_join(manzanas,st_as_sf(isocronosEspaciosVerdesJuntasUnion))
# Completamos los datos para los casos en los cuales no hubo ningún resultadoe en el match
manzanas <- manzanas %>% mutate(cobertura=ifelse(is.na(cobertura),FALSE,TRUE))
bbRosario <-getbb("Rosario, Argentina")
RosarioBaseMap <- get_stamenmap(bbRosario,maptype = "toner-lite",zoom=12)
## Source : http://tile.stamen.com/toner-lite/12/1356/2444.png
## Source : http://tile.stamen.com/toner-lite/12/1357/2444.png
## Source : http://tile.stamen.com/toner-lite/12/1358/2444.png
## Source : http://tile.stamen.com/toner-lite/12/1356/2445.png
## Source : http://tile.stamen.com/toner-lite/12/1357/2445.png
## Source : http://tile.stamen.com/toner-lite/12/1358/2445.png
## Source : http://tile.stamen.com/toner-lite/12/1356/2446.png
## Source : http://tile.stamen.com/toner-lite/12/1357/2446.png
## Source : http://tile.stamen.com/toner-lite/12/1358/2446.png
ggmap(RosarioBaseMap,extent = "device") +
geom_sf(data=manzanas %>% st_transform(4326),aes(fill=cobertura), color=NA, inherit.aes=FALSE, alpha=0.7) +
theme_minimal() +
coord_sf(datum=NA) +
labs(x="",y="") +
scale_fill_manual(values = c("#37b84f","#e41a1c"),
breaks = c(TRUE,FALSE),
labels=c("Menos de 10 minutos","Más de 10 minutos"),
name="")+
theme(legend.position = "bottom")
## Coordinate system already present. Adding new coordinate system, which will replace the existing one.
Relaciones
ar_properties <- read.csv("C:/Users/garbarino39/Desktop/ar_properties.csv", stringsAsFactors = FALSE,
encoding = "UTF-8")
names(ar_properties)
## [1] "id" "ad_type" "start_date" "end_date"
## [5] "created_on" "lat" "lon" "l1"
## [9] "l2" "l3" "l4" "l5"
## [13] "l6" "rooms" "bedrooms" "bathrooms"
## [17] "surface_total" "surface_covered" "price" "currency"
## [21] "price_period" "title" "description" "property_type"
## [25] "operation_type"
rosarioproperati <- filter(ar_properties, l3 == "Rosario", operation_type== "Alquiler", property_type == "Departamento")
rosarioproperatii2_b <- rosarioproperati %>%
filter(!is.na(lat), !is.na(lon)) %>%
st_as_sf(coords = c("lon", "lat"), crs = 4326)
st_crs(rosarioproperatii2_b)
## Coordinate Reference System:
## User input: EPSG:4326
## wkt:
## GEOGCRS["WGS 84",
## DATUM["World Geodetic System 1984",
## ELLIPSOID["WGS 84",6378137,298.257223563,
## LENGTHUNIT["metre",1]]],
## PRIMEM["Greenwich",0,
## ANGLEUNIT["degree",0.0174532925199433]],
## CS[ellipsoidal,2],
## AXIS["geodetic latitude (Lat)",north,
## ORDER[1],
## ANGLEUNIT["degree",0.0174532925199433]],
## AXIS["geodetic longitude (Lon)",east,
## ORDER[2],
## ANGLEUNIT["degree",0.0174532925199433]],
## USAGE[
## SCOPE["unknown"],
## AREA["World"],
## BBOX[-90,-180,90,180]],
## ID["EPSG",4326]]
rosarioproperatii2_b1 <- filter (rosarioproperatii2_b, price <50000, currency == "ARS", surface_total<600)
summary(rosarioproperatii2_b$price)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0 8000 9800 11727 13000 900000 288
ggplot(rosarioproperatii2_b1) +
geom_histogram(aes(x = price))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
###Veamos si hay alguna relación entre el valor del alquiler de un departamento y la distancia a espacios verdes. #Vamos a calcular la distancia en m2 desde cada departamento en alquiler a un espacio verde. Creamos un centroide en cada espacio verde y calculamos la distancia creando una nueva variable llamada dist_verde
datosparquesreg <- datosparques %>%
st_transform("+proj=tmerc +lat_0=-34.6297166 +lon_0=-58.4627 +k=1 +x_0=100000 +y_0=100000 +ellps=intl +units=m +no_defs")
centroideparques <- datosparquesreg %>%
st_centroid()
## Warning in st_centroid.sf(.): st_centroid assumes attributes are constant over
## geometries of x
centroideparques <- centroideparques %>%
st_transform("+proj=tmerc +lat_0=-34.6297166 +lon_0=-58.4627 +k=1 +x_0=100000 +y_0=100000 +ellps=intl +units=m +no_defs")
rosarioproperatii2_b <- rosarioproperatii2_b %>%
st_transform("+proj=tmerc +lat_0=-34.6297166 +lon_0=-58.4627 +k=1 +x_0=100000 +y_0=100000 +ellps=intl +units=m +no_defs")
properati_espacioverde <- rosarioproperatii2_b %>%
mutate(dist_verde = apply(st_distance(rosarioproperatii2_b, centroideparques), 1, function(x) min(x)))
properati_espacioverde <- filter (properati_espacioverde, price <50000, currency == "ARS", dist_verde<5000, surface_total<600)
ggplot() +
geom_sf(data = barrios) +
geom_sf(data = properati_espacioverde, (aes(color=price))) +
scale_color_viridis_c(option = "plasma", direction = -1)+
theme_map()+
labs(title = "Price de departamentos en Rosario", caption = 'Fuente: Rosario Datos | Properati')
ggplot() +
geom_sf(data = barrios) +
geom_sf(data = properati_espacioverde, (aes(color=dist_verde))) +
scale_color_viridis_c(option = "plasma", direction = 1)+
theme_map()+
labs(title = "Distancia de departamento a espacio verde público en Rosario", caption = 'Fuente: Rosario Datos | properati')
properati_espacioverde <- properati_espacioverde%>%
filter(!is.na(price))
modelo_exp <- lm(price ~ dist_verde, data = properati_espacioverde)
modelo_exp
##
## Call:
## lm(formula = price ~ dist_verde, data = properati_espacioverde)
##
## Coefficients:
## (Intercept) dist_verde
## 12132.646 -1.415
summary(modelo_exp)
##
## Call:
## lm(formula = price ~ dist_verde, data = properati_espacioverde)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8066 -3554 -1572 1721 36755
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 12132.6462 182.0180 66.656 < 2e-16 ***
## dist_verde -1.4149 0.3291 -4.299 1.76e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5605 on 4239 degrees of freedom
## Multiple R-squared: 0.00434, Adjusted R-squared: 0.004105
## F-statistic: 18.48 on 1 and 4239 DF, p-value: 1.757e-05
ggplot(data = properati_espacioverde, mapping = aes(x=dist_verde, y = price))+
geom_point()+
geom_abline(aes(intercept = 12526.19
, slope = -3.08 ), color = 'blue')+
labs(title = 'Correlación entre distancia a espacios verdes y valor del alquiler', x = 'Distancia en metros a espacios verdes', y = 'Valor inmobiliario del Alquiler', caption = 'Fuente: Rosario datos| Properati')
cor(properati_espacioverde$price, properati_espacioverde$dist_verde)
## [1] -0.06588126
plot(residuals(modelo_exp))
Regresión multiple
modelo_exp_multiple <- lm(price ~ dist_verde + surface_total, data = properati_espacioverde)
modelo_exp_multiple
##
## Call:
## lm(formula = price ~ dist_verde + surface_total, data = properati_espacioverde)
##
## Coefficients:
## (Intercept) dist_verde surface_total
## 3972.9789 -0.8362 153.8532
summary(modelo_exp_multiple)
##
## Call:
## lm(formula = price ~ dist_verde + surface_total, data = properati_espacioverde)
##
## Residuals:
## Min 1Q Median 3Q Max
## -23475 -1940 -576 1237 36278
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3972.9789 172.5858 23.020 < 2e-16 ***
## dist_verde -0.8362 0.2266 -3.691 0.000226 ***
## surface_total 153.8532 2.2395 68.699 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3856 on 4238 degrees of freedom
## Multiple R-squared: 0.5289, Adjusted R-squared: 0.5287
## F-statistic: 2379 on 2 and 4238 DF, p-value: < 2.2e-16
confint(modelo_exp_multiple)
## 2.5 % 97.5 %
## (Intercept) 3634.620318 4311.3374456
## dist_verde -1.280432 -0.3920197
## surface_total 149.462540 158.2438502
vecinosRosario <- knn2nb(knearneigh(as_Spatial(properati_espacioverde), k = 3))
## Warning in knearneigh(as_Spatial(properati_espacioverde), k = 3): knearneigh:
## identical points found
vecinosRosario <- nb2listw(vecinosRosario, style="W")
class(vecinosRosario)
## [1] "listw" "nb"
properati_espacioverde$precioVecinosk3 <- lag.listw(x = vecinosRosario,
var = properati_espacioverde$price)
ggplot(properati_espacioverde) +
geom_point(aes(x=precioVecinosk3,y=price))
regMoran <- lm(formula = precioVecinosk3 ~ price ,
data = properati_espacioverde)
summary(regMoran)
##
## Call:
## lm(formula = precioVecinosk3 ~ price, data = properati_espacioverde)
##
## Residuals:
## Min 1Q Median 3Q Max
## -13458.3 -2161.0 -717.8 1335.7 27973.4
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7.072e+03 1.261e+02 56.10 <2e-16 ***
## price 3.678e-01 9.890e-03 37.19 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3617 on 4239 degrees of freedom
## Multiple R-squared: 0.246, Adjusted R-squared: 0.2459
## F-statistic: 1383 on 1 and 4239 DF, p-value: < 2.2e-16
coef(regMoran)[2]
## price
## 0.3678405
set.seed(1)
samples <- c(1:1000)
MCoef <- c()
for(sample in samples) {
precio <- sample(properati_espacioverde$price, replace=FALSE)
precio.lag <- lag.listw(vecinosRosario, precio)
MCoef<- c(MCoef,
coef(lm(precio.lag ~ precio))[2])
}
ggplot() +
geom_histogram(aes(x = MCoef))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
sum(coef(regMoran)[2]>MCoef)
## [1] 1000
ggplot() +
geom_histogram(aes(x = MCoef)) +
geom_vline(xintercept = coef(regMoran)[2])
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
moran.mc(x = properati_espacioverde$price,listw = vecinosRosario, nsim=1000)
##
## Monte-Carlo simulation of Moran I
##
## data: properati_espacioverde$price
## weights: vecinosRosario
## number of simulations + 1: 1001
##
## statistic = 0.36784, observed rank = 1001, p-value = 0.000999
## alternative hypothesis: greater