рдХреБрдЫ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдмреЗрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдХреБрдЫ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЦрд░реАрджрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреИрд╕рд╛ рдирд╣реАрдВ рд╣реИред
- рдкреНрд░реЛрд╕реНрдЯреЛрдХрд╡рд╛рд╢рд┐рдиреЛ рд╕реЗ рддреАрди
рдкрд░рд┐рдЪрдп
рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдореИрдВ рдореЙрдиреНрдЯреНрд░рд┐рдпрд▓ рдореЗрдВ рдЕрдкрдиреЗ рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ (рдпрд╛ рд╕реНрдерд╛рдиреАрдп рдХреЛрдВрдбреЛ) рдореЗрдВ рд░рд╣рддрд╛ рд╣реВрдВред рдФрд░ рдПрдХ рдмрд╛рд░, рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рджреМрд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЖрдкрдХреЗ рдЕрдкрдиреЗ рдШрд░ рдореЗрдВ рдЬрд╛рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрд╡рд╛рд╕ рдЦрд░реАрджрдиреЗ рдФрд░ рдмреЗрдЪрдиреЗ рдХрд╛ рдХреБрдЫ рдЕрдиреБрднрд╡ рдерд╛ рдФрд░, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдмрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрдерд╛рдиреАрдп рдирд┐рд╡рд╛рд╕реА рдХрд░рддреЗ рд╣реИрдВ: рдПрдХ рд░рд┐рдпрд╛рд▓реНрдЯрд╛рд░ рдХреЛ рдХрд┐рд░рд╛рдП рдкрд░ рд▓реЗрдВ рдФрд░ рдЙрд╕реЗ рд╕рднреА рдореБрджреНрджреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рджреЗрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрдмрд╛рдК рдФрд░ рдирд┐рд░реНрдмрд╛рдз рд╣реЛрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдПрдХ рдХрд╛рд░реНрдп рд╣реИ: рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдХрд┐рддрдирд╛ рдореВрд▓реНрдп рд╣реИ, рдФрд░ рд╡рд╣ рд╣реИ рдЬреЛ рдореИрдВ рд╡рд╣рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдЦреИрд░, рдПрдХ рдЧреБрдЬрд░ рд╕рд╡рд╛рд▓ - рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рд╣рд╡рд╛ рдЪрд▓ рд░рд╣реА рд╣реИред рдФрд░ рдЖрд░ рдореЗрдВ рднреВ-рд╕реНрдерд╛рдирд┐рдХ рдЧрдгрдирд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ ред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рдПрдХ рд╕рднреНрдп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд░рд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдПрдХ рджреИрдирд┐рдХ рдмрд╛рдЗрдХ рдХреА рд╕рд╡рд╛рд░реА рдХреЗ рд╕рд╛рде рдЧреНрд▓реЛрдмрд▓ рд╡рд╛рд░реНрдорд┐рдВрдЧ рдХреЛ рдорд╛рд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рдЕрд▓рдЧ рдкрд░рд┐рд╡рд╛рд░ (рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ) рдирд╣реАрдВ рдЦреАрдВрдЪреВрдВрдЧрд╛ред рдПрдХ рдФрд░ рдЖрдо рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд▓реНрдк рджреНрд╡реИрдз рдпрд╛ рдЯреНрд░рд┐рдкрд▓ рдЦрд░реАрджрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЕрд░реНрдерд╛рддред рдЬрд┐рди рдШрд░реЛрдВ рдореЗрдВ рджреЛ рдпрд╛ рддреАрди рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ рд╣реИрдВ: рдЖрдк рдПрдХ рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ,рдмрд╛рдХреА рдореЗрдВ рдЖрдк рдЦрд░рдЧреЛрд╢реЛрдВ рдХрд╛ рдкреНрд░рдЬрдирди рдХрд░рддреЗ рд╣реИрдВрдмрд╛рдХреА рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рдордиреЗ рдЖрддреНрдорд╕рдорд░реНрдкрдг рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рдПрдХ рдФрд░ рдЕрдЬреНрдЮрд╛рдд рдорд╛рддреНрд░рд╛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ - рдХрд┐рд░рд╛рдпреЗ рдХреА рдЖрдпред
рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдмрд┐рдХреНрд░реА, рдХрд┐рд░рд╛рдпреЗ рдХреА рдХреАрдорддреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╛рд╕ рдХреА рдХреАрдорддреЛрдВ рдХреЗ рд╕рд╛рде рд╢рд╣рд░ рдХрд╛ рдирдХреНрд╢рд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдФрд░ рдпрд╣ рднреА рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдХрд┐ рдпрд╣ рд╕рдордп рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдмрджрд▓рддрд╛ рд╣реИред
zillow, , , , , , : https://apciq.ca/en/real-estate-market/. , , .
, , , , , , : https://github.com/Froren/realtorca
тАФ , , - requests beatifulsoap, .
тАФ , , , , , ; , .
, openstreet map, .
тАФ , , sqlite , , . , , , , ..
R, tidy-verse, Simple Features for R, тАФ - Geocomputation with R, ggplot2 ( tidyverse), tmap.
, , (join?) .
, , dplyr , :
R , :
library(tidyverse)
library(sf)
property<-read_csv("....") %>%
st_as_sf(coords=c("lng","lat"), crs=4326) %>%
st_transform(crs=32188)
:
neighbourhood<-geojson_sf("quartierreferencehabitation.geojson") %>%
st_transform(32188) %>%
filter(nom_qr %in% c("Saint-Louis", "Milton-Parc")) %>%
summarize() %>%
st_buffer(dist=0)
:
neighbors <- st_join(property, neighbourhood, left=F)
openstreetmap :
osm_neighbourhood<-read_osm(st_bbox(neighbourhood%>%st_transform(4326)), ext=1.5, type="esri")
tmap :
library(tmap)
library(tmaptools)
tm_shape(osm_neighbourhood) + tm_rgb(alpha=0.7)+
tm_shape(neighbourhood) + tm_borders(col='red',alpha=0.8) +
tm_shape(neighbors) + tm_symbols(shape=3,size=0.2,alpha=0.8) +
tm_shape(ref_home) + tm_symbols(col='red',shape=4,size=0.5,alpha=0.8)+
tm_compass(position=c("right", "bottom"))+
tm_scale_bar(position=c("right", "bottom"))
![рдЫрд╡рд┐](https://habrastorage.org/getpro/habr/post_images/58e/efc/c29/58eefcc29df996dec0d1acb0d83a1c02.svg)
, :
![рдЫрд╡рд┐](https://habrastorage.org/getpro/habr/post_images/b55/211/d9f/b55211d9f54e4351d5b5a1e750a180b3.svg)
( ):
lm(price ~ parking:area_interior)
:
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 33776.10 22175.97 1.523 0.129
## parkingFALSE:area_interior 444.28 23.54 18.876 <2e-16 ***
## parkingTRUE:area_interior 523.01 19.65 26.614 <2e-16 ***
.. 444$ 33, +523$.
, 443k$, [433k$ тАФ 453k$]
, , :
![рдЫрд╡рд┐](https://habrastorage.org/getpro/habr/post_images/219/fd7/792/219fd7792c21cbb1115694cb164e24c5.svg)
.. , .. . , . , , , generalized linear model inverse Gaussian distribution , - , :
![рдЫрд╡рд┐](https://habrastorage.org/getpro/habr/post_images/007/2ad/d56/0072add564f8de13689123c86bfaf745.svg)
: 435k$, 95% [419k$ тАФ 450k$] тАФ , .
, , , тАФ .
, , тАФ .. , , ( X X ) .
, () , ( , ).
![рдЫрд╡рд┐](https://habrastorage.org/getpro/habr/post_images/969/080/2ae/9690802aeccabd043ad9f734a38a2b14.svg)
generalized linear model inverse Gaussian distribution :
glm(price_sqft ~ parking + bedrooms,family=inverse.gaussian(link="log")
:
## (Intercept) parkingTRUE bedrooms2 bedrooms3 bedrooms4
## 503.1981961 1.1215828 0.9720589 0.9662187 0.8325715
.. , 503$, 12% , тАФ 2.8%, 3 тАФ 3.3%, 4 17%, .
430k$ [ 413k$ тАФ 448k$]
. .
- , - , тАФ - , ?
, loess.
![рдЫрд╡рд┐](https://habrastorage.org/getpro/habr/post_images/971/703/3e7/9717033e7236995e67b49e244c69e7a2.svg)
, тАФ - .
![рдЫрд╡рд┐](https://habrastorage.org/getpro/habr/post_images/28f/d7f/831/28fd7f831faa836dfbd6553d6721d016.svg)
, . , ( ) .
тАЬ тАЭ Generalized additive model
, . R mgcv gam:
gam(price_sqft ~ parking + bedrooms + s(start_date, k=24), family=inverse.gaussian(link="log"))
, , inverse Gaussian distribution, , , 24 . gam тАФ , k .
( 2 ):
![рдЫрд╡рд┐](https://habrastorage.org/getpro/habr/post_images/677/cbf/c8f/677cbfc8fef6f08880e15c8442ffbfcf.svg)
, : 429k [413k-447k], . . , .
, , .
![рдЫрд╡рд┐](https://habrastorage.org/getpro/habr/post_images/5c6/3d2/02e/5c63d202e56401475ad563c6229359c6.svg)
, 60 . , .
, , . , 1, - :
#
selected_mls=17758383
# 2
max_distance=2000
#
plex_pe<-prop_geo_p %>% filter(type!='Apartment', type!='House')
ref<-plex_pe%>%filter(mls==selected_mls)
#
search_roi <- st_buffer(ref, max_distance)
# , -
result <- st_intersection(plex_pe %>% filter(mls!=selected_mls), search_roi) %>%
filter(area_interior<10000, area_interior>100,area_land>0,price<1e7,price>100 )
:
![рдЫрд╡рд┐](https://habrastorage.org/getpro/habr/post_images/4e1/587/1d7/4e15871d7535aab6a74659f9c6146a69.svg)
:
![рдЫрд╡рд┐](https://habrastorage.org/getpro/habr/post_images/035/34b/dd6/03534bdd6c6ec801eb352f0dc62d3a71.svg)
, , , - тАФ , ( XX ), ..
, 523k$, [ 570k$ тАФ 620k$]
, . , . sf :
, (), , :
aggregate(filter(kijiji_geo_p,bedrooms==2)%>%dplyr::select(price), mtl_p, median, join = st_contains)
![рдЫрд╡рд┐](https://habrastorage.org/getpro/habr/post_images/895/498/c1d/895498c1d59478b1b0e18cea42c2e2b0.svg)
, . . .
, :
gam(price_sqft ~ type + bedrooms + parking + s(x,y,k=100), family=inverse.gaussian(link="log"))
, 100:
pred_rent_whole <- raster(extent(mtl_land),res=100)
crs(pred_rent_whole)<-crs(mtl_land)
my_predict<-function(...) predict(...,type="response")
pred_rent_whole<- raster::interpolate(pred_rent_whole, model_rent_geo_whole, fun=my_predict, xyOnly=T,const=data.frame(bedrooms=2))
#
pred_rent_whole <- mask(pred_rent_whole, mtl_land)
tmap:
tm_shape(osm_mtl)+tm_rgb(alpha=0.6)+
tm_shape(mtl_arr) + tm_borders(alpha=0.8, col='black')+
tm_shape(pred_rent_whole)+tm_raster(style="cont",alpha=0.7, title='$')+ tm_shape(subway_stop_p%>%dplyr::select(stop_name))+tm_symbols(col='blue',alpha=0.2,size=0.03)+
tm_shape(subway_p)+tm_lines(col='blue',alpha=0.2)+
tm_compass(position=c("right", "bottom"))+
tm_scale_bar(position=c("left", "bottom"))+
tm_layout(scale=1.5)
![рдЫрд╡рд┐](https://habrastorage.org/getpro/habr/post_images/47e/a93/8fd/47ea938fd524dc1027091bba03b7f1d5.svg)
тАФ .
, .
![рдЫрд╡рд┐](https://habrastorage.org/getpro/habr/post_images/b3f/272/789/b3f272789dd8ba919eb026a9b37a23aa.svg)
, .
![рдЫрд╡рд┐](https://habrastorage.org/getpro/habr/post_images/a89/de3/2a7/a89de32a720f8a50b8fc0fdaf1e8a052.svg)
, ( /( * ).
.
![рдЫрд╡рд┐](https://habrastorage.org/getpro/habr/post_images/c81/269/8a9/c812698a9809d34bd26cdead72c6fd00.svg)
( / ).
![рдЫрд╡рд┐](https://habrastorage.org/getpro/habr/post_images/b88/b94/4ec/b88b944ecca7908d3e78bf5b83fd3c84.svg)
, , ( ).
![рдЫрд╡рд┐](https://habrastorage.org/getpro/habr/post_images/3b5/6bf/684/3b56bf6845a7558258397b1e07b90e74.svg)
, R рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛, рдХрдм рдФрд░ рдХрд╣рд╛рдВ рдЦрд░реАрджрдирд╛ рдпрд╛ рдмреЗрдЪрдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬреАрд╡рди рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЪреАрдЬ рд╣реИ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрд┐рдХреНрд░реА рдореВрд▓реНрдп рдХрд╛ рдкрд░реНрдпрд╛рдкреНрдд рдЬреНрдЮрд╛рди рдирд╣реАрдВ рд╣реИ (рд╣рдорд╛рд░реЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдпрд╣ рдХреЗрд╡рд▓ рдкрдВрдЬреАрдХреГрдд рд░рд┐рдпрд▓реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ)ред рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкреНрд░рд╛рдкреНрдд рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди 100% рддрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рдПрдЧрд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЬрд┐рд╕рдиреЗ рднреА рдирд╣реАрдВ рдЫрд┐рдкрд╛рдпрд╛ рд╡рд╣ рдореЗрд░реА рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИред
рд╕реНрд░реЛрдд
рд╕рднреА рдбреЗрдЯрд╛ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реИрдВ ред рд╣рдорд╛рд░реЗ рд╣рд╛рдереА рдЦрд░реАрджреЗрдВ!
рдЕрдВрдд рддрдХ рдкрдврд╝реЗ рд╣реБрдП рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмреЛрдирд╕
рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рдирдХреНрд╢рд╛: http://www.ilmarin.info/re_mtl/