نحن نستخدم Data Science للأغراض السلمية لشراء منزل

لبيع شيء غير ضروري ، يجب عليك أولاً شراء شيء غير ضروري ، ولكن ليس لدينا المال.
- ثلاثة من Prostokvashino

المقدمة


حدث أن أعيش في شقتي (أو الشقة المحلية) في مونتريال. ومرة ، قبل حوالي عام ، زرتني فكرة أنه سيكون من الجيد الانتقال إلى منزلك. لدي بالفعل بعض الخبرة في شراء وبيع المساكن ، ومن حيث المبدأ ، سيكون من الممكن التعامل مع هذه المشكلة ببساطة ، كما يفعل معظم السكان المحليين: استئجار سمسار عقارات والسماح له بالتعامل مع جميع القضايا ، ولكنه سيكون مملاً وغير مثير للاهتمام.


لذلك ، قررت أن أتناول هذه المسألة علميًا. هناك مهمة: تحتاج إلى معرفة مقدار ما لدي ، وأين ما يمكنني تحمله. حسنًا ، سؤال عابر - لفهم أين تهب الرياح. واستكشاف الحسابات الجغرافية المكانية في مجال البحث .


من حيث المبدأ ، كان من الواضح على الفور أنني لن أسحب فقط منزل عائلة منفصل (محليًا) إذا كنت أرغب في البقاء في منطقة متحضرة وضرب الاحترار العالمي بركوب الدراجة يوميًا. خيار محلي شائع آخر هو شراء دوبلكس أو ثلاثي ، أي منازل فيها شقتين أو ثلاث: تعيش في واحدة ،في البقية تقوم بتربية الأرانبيتم تسليم البقية للمستأجرين. ثم تظهر كمية أخرى غير معروفة - دخل الإيجار.


لذلك ، كنت أرغب في عمل خريطة للمدينة مع أسعار المساكن للبيع ، وأسعار الإيجار ، وأن أتمكن أيضًا من تتبع كيفية تغير كل ذلك بمرور الوقت.


لا تعمل خدمات مثل zillow ، والتي تعرض صورًا جميلة مع رسوم بيانية للسعر المقدر للسكن ، في منطقتنا ، ويمكنك فقط دراسة التقارير المنتظمة للرابطة المحلية للوسطاء العقاريين ، الذين يبلغون بانتظام عن ارتفاع الأسعار ، ولكن لا يمكنني الحفاظ عليها: https://apciq.ca/ ar / real-real-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"))

صورة
, :


صورة


( ):


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$]


, , :


صورة


.. , .. . , . , , , generalized linear model inverse Gaussian distribution , - , :


صورة


: 435k$, 95% [419k$ — 450k$] — , .


, , , — .
, , — .. , , ( X X ) .


, () , ( , ).


صورة


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.
صورة


, — - .
صورة


, . , ( ) .


“ ” 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 ):


صورة


, : 429k [413k-447k], . . , .



, , .
صورة


, 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 ) 

:


صورة


:


صورة


, , , - — , ( XX ), ..
, 523k$, [ 570k$ — 620k$]



, . , . sf :


, (), , :


aggregate(filter(kijiji_geo_p,bedrooms==2)%>%dplyr::select(price), mtl_p, median, join = st_contains)

صورة


, . . .
, :


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)

صورة
— .


, .
صورة


, .
صورة


, ( /( * ).
.


صورة


( / ).
صورة


, , ( ).


صورة



, R تقييم ما ومتى وأين للشراء أو البيع. لكن الحياة هي شيء أكثر تعقيدًا ، في التطبيق الحقيقي لا توجد معرفة كافية بسعر البيع الحقيقي (في منطقتنا هذا متاح فقط للوسطاء العقاريين المسجلين). لذلك لا يجب أن تتوقع أن تتوافق التوقعات التي تم الحصول عليها مع الواقع بنسبة 100٪. بشكل عام ، من لم يختبئ ليس خطئي.


مصدر


جميع البيانات وشفرة المصدر موجودة في المستودع . شراء الفيلة لدينا!


مكافأة لأولئك الذين قرأوا حتى النهاية


خريطة تفاعلية مع النتائج: http://www.ilmarin.info/re_mtl/


All Articles