A Data-Driven Approach to Evaluating the Vancouver Housing Market
January 11, 2019 By Pascal Schmidt Personal Project
Today, we will be looking at the Vancouver housing market in Canada. We collected rent data from Craigslist and also home prices from various websites. A home is on average the most expensive “investment” almost everyone makes and therefore, it is important to know the market. In this blog post, we will be answering questions such as:
- What are the market rates for rents and homes in the Vancouver housing market?
- At what prices are homes undervalued or overvalued?
The Vancouver housing market is one of the most expensive ones in the world. Consequently, one must spend a lot of money when purchasing a home. However, is the money spend on a home worth the cost?To answer this question, we also looked at the price to rent ratios. In more detail, we wanted to know:
- What locations have the best price to rent ratios?
- In what locations should you buy and in what locations should you rent?
Data Collection
The data for this project was obtained from various websites that listed home prices. The rent data, on the other hand, was collected with the craigr
package which is available on github. After we collected the data, we spend a lot of time inserting the neighborhoods by looking at the street names.
We did that to decrease the variance for our home prices and rents but on the other hand, introduced bias in our analysis. We thought that we would compare and evaluate neighborhoods rather than particular street names due to the fact we only had one house for some street names. Therefore, this would increase the variance for our homes. Consequently, we analyzed the prices and rents by neighborhood. If you are interested in finding out more about the bias-variance trade-off, then check out this blog post.
We collected rent data and housing prices from Vancouver, Richmond, New Westminster, and Coquitlam. We restricted our search to apartments that cost less than a million dollars. This is because we did not want to collect any outlier luxury apartments worth millions of dollars.
What Are the Market Rates for Rent and Home Prices in Vancouver?
Multiple Linear Regression for Housing Prices
To answer this question, we fit a multiple linear regression model. One for rents and one for home prices. For home prices, we regressed price
on age
, number of bathrooms bath
, number of bedrooms bed
, square feet squares
, and neighborhood
.
Regression Equation for Housing Prices in the Greater Vancouver Area
Below, you can find a summary table of the regression output. We only displayed the neighborhoods with the lowest estimates and the neighborhood with the highest estimates. We also displayed age
, squares,
bath
, and bed
as well as the intercept. For a full table, which displays the estimates of all neighborhoods, you can look at my github document.
Term |
Estimate |
Standard Error |
Test Statistic |
P-Value |
Maple Ridge |
-463157.24 |
33080.68 |
-14 |
< 0.01 |
Birchland Manor |
-434377.78 |
61917.35 |
-7.02 |
< 0.01 |
Port Moody North |
-400267.22 |
83778.72 |
-4.78 |
< 0.01 |
Port Coquitlam |
-338276.29 |
27089.12 |
-12.49 |
< 0.01 |
Mary Hill |
-317865.57 |
33957.2 |
-9.36 |
< 0.01 |
. . . Age |
. . . -4861.85 |
. . . 192.17 |
. . . -25.3 |
. . . < 0.01 |
Squares |
352.98 |
15.48 |
22.81 |
< 0.01 |
Bath |
27452.53 |
6747.35 |
4.07 |
< 0.01 |
Bed |
34660.06 |
5977.4 |
5.8 |
< 0.01 |
. . . Downtown |
. . . 42784.72 |
. . . 18277.2 |
. . . 2.34 |
. . . 0.02 |
Hollyburn |
66132.75 |
27949.61 |
2.37 |
0.02 |
Eagle Harbour |
74902.15 |
50326.06 |
1.49 |
0.14 |
Dundarave |
90116.16 |
44587.16 |
2.02 |
0.04 |
West End |
95721.22 |
21230.08 |
4.51 |
< 0.01 |
Yaletown |
122073.08 |
22317.12 |
5.47 |
< 0.01 |
(Intercept) |
476094.5 |
19136.08 |
24.88 |
< 0.01 |
From the output above, we can see that age
, bed
, bath
, and squares
are statistically significant. Some neighborhoods are also significant. As expected, the sign of age
is negative. This means that on average, holding everything else constant, a one year increase in age decreases the value of the property by around 4861 dollars.
It is interesting to see that home prices in Maple Ridge drop the most when comparing to other neighborhoods. On the other hand, holding everything else constant, a home buyer has to pay 122,073 dollars extra when purchasing a house in Yaletown.
age
, squares
, bed
, bath
, and neighborhood
explain around 61% of the variation in home prices. So, 39% are still unexplained and are due to other factors. The F-statistic is < 0.01 and so we can conclude that our model is better than the intercept-only model.
What Are the Market Rates for Home Prices in the Greater Vancouver Area?
When one wants to buy a home in Yaletown, the market price for a one-bedroom, one bathroom apartment with 800 square feet and 10 years old is:
So, whenever you are interested in finding out the market rate of a particular house, then you can plug-in age, the number of bathrooms and bedrooms, and square feet into this equation.
If the price of a home is lower than the result of the regression equation, then this house might sell below market value. Likewise, if the price of a home is above the price of the regression equation’s output, then this house might be above market value.
The next regression model we fit was for rents.
Multiple Linear Regression for Rent Prices in the Greater Vancouver Area
We regressed rent prices on bedrooms, square feet, and neighborhoods. For the Craigslist data, we ,unfortunately, did not collect covariates for age and number of bathrooms. Consequently, this will lower the variation explained in rent prices.
Regression Equation for Rent Prices in the Greater Vancouver Area
Term |
Estimate |
Standard Error |
Test Statistic |
P-Value |
Cassin |
-1119.2 |
706.52 |
-1.58 |
0.11 |
Broadmoor |
-937.59 |
463.33 |
-2.02 |
0.04 |
Richmond South |
-902.91 |
544.16 |
-1.66 |
0.1 |
Seafair |
-708.06 |
487.95 |
-1.45 |
0.15 |
Connaught Heights |
-687.54 |
930.74 |
-0.74 |
0.46 |
SqFt . . . |
1.2 . . . |
0.04 . . . |
26.73 . . . |
< 0.01 . . . |
Bedrooms |
51.94 |
33.43 |
1.55 |
0.12 |
(Intercept) . . . |
584.04 . . . |
371.81 . . . |
1.57 . . . |
0.12 . . . |
Downtown Eastside |
1433.39 |
615.72 |
2.33 |
0.02 |
Kitsilano |
1636 |
377.7 |
4.33 |
< 0.01 |
Yaletown |
1689.49 |
377.03 |
4.48 |
< 0.01 |
Coal Harbour |
1941.04 |
389.59 |
4.98 |
< 0.01 |
Shaugnessey |
2369.72 |
517.99 |
4.57 |
< 0.01 |
Bedrooms and square feet have positive coefficients. This means that on average, holding everything else constant, the more bedrooms and the more square feet an apartment has, the more expensive it will be. The most expensive neighborhoods are Shaugnessey, Coal Harbour, and Yaletown. The p-values for these neighborhoods are statistically significant.
SqFt
, bedrooms
, and neighborhood
explain around 50% of the variation in rents. This means that the other 50% is due to other factors and remains unexplained in our model. The F-statistic is again statistically significant, which means that the fitted model with the covariates is better than the intercept-only model.
If you are interested in the full table with all neighborhoods then you can look at this github document.
What Are the Market Rates for Rent Prices in the Greater Vancouver Area?
The market rate for renting the same 1 bedroom apartment with 800 square feet in Yaletown would cost 3284 dollars.
The equation would look like this:
So, whenever there is an apartment with a renting price below the one you’ll get when plugging in the information into the equation above, then this apartment’s rent is likely below market value.
Likewise, is the renting price is above the price you’ll get from the equation, then the rent is likely above market value.
Here, I use the word likely because our regression equation explains only 50% of the variation in rent prices. Therefore, there might be other factors that contribute to rent prices that are not accounted for in the equation above.
Price to Rent Ratios for Different Neighborhoods in Vancouver
If you are familiar with the successful real estate investor Grant Cardone, then you have probably the sentence:
“Rent where you live and own what you can rent”.
This is what we are trying to figure out now.
The price to rent ratio is calculated by the price of the house divided by the yearly rent. So, . Consequently, you want to rent when the price to rent ratio is high. This happens when the denominator of the equation (rent) is low and house prices, the nominator, are high. On the other hand, you want to buy a property, when the price to rent ratio is low. Meaning, a low nominator (house prices) and a high denominator (rents).
In What Locations in the Vancouver Housing Market Should You Buy and in What Locations Should You Rent?
We first calculated the average price of houses and rents in certain neighborhoods with certain square feet. Then we kept the neighborhoods that had at least three home prices listed and three rent listings. The reason why we did it is that we wanted to decrease the variance by averaging the neighborhood prices/rents and also by throwing out houses/apartments that had less than 3 listings.
Afterward, we calculated the price to rent ratios by matching apartment prices and apartment rents with the same neighborhood and the same square feet.
The price to rent ratios would have been more accurate if we had also the age of certain apartments. This would ensure even more accurate matching of house prices and rent prices. Consequently, this would have resulted in more accurate price to rent ratios.
The results are displayed in the table below.
Square Feet |
Neighborhood |
Number of Apartments with Rent Prices |
Number of Apartments with Housing Prices |
Price to Rent Ratio |
801-901 |
Riley Park |
5 |
6 |
41.304 |
701-801 |
Oakridge |
5 |
5 |
37.535 |
801-901 |
Maple Ridge |
10 |
3 |
34.498 |
801-901 |
Hastings-Sunrise |
4 |
5 |
34.452 |
1101-1351 |
Brentwood |
6 |
7 |
33.883 |
701-801 |
Metrotown |
15 |
25 |
32.699 |
601-701 |
Richmond Central |
15 |
17 |
31.330 |
601-701 |
Mount Pleasant |
8 |
8 |
31.174 |
701-801 |
Hastings-Sunrise |
3 |
14 |
31.023 |
601-701 . . . . |
Grandview-Woodland . . . |
3 . . . . |
3 . . . . |
31.023 . . . . |
801-901 |
West End |
9 |
3 |
20.657 |
1351-1601 |
Richmond North |
7 |
8 |
20.646 |
1601-1851 |
Maple Ridge |
11 |
3 |
20.531 |
901-1001 |
Mount Pleasant |
5 |
4 |
19.704 |
701-801 |
Grandview-Woodland |
3 |
9 |
19.470 |
1001-101 |
Yaletown |
14 |
3 |
18.898 |
1001-101 |
Downtown |
12 |
5 |
18.523 |
1001-101 |
Kitsilano |
4 |
7 |
18.504 |
901-1001 |
West End |
8 |
4 |
17.974 |
1101-1351 |
Kitsilano |
12 |
4 |
16.490 |
Again, for a full table, visit my github page.
Buying vs. Renting in the Greater Vancouver Real Estate Market
So, back to the question if you should buy or rent in Vancouver. If you want to live close to downtown Vancouver, then neighborhoods with a high price to rent ratio would be Hastings-Sunrise, Mount Pleasant, or Grandview-Woodland.
On the other hand, if you want to purchase a property for investment purposes then you should buy a home in Kitsilano, West End, Downtown, or Yaletown. These are the neighborhoods with the lowest price to rent ratios. It is also noticeable that these ratios suggest that apartments with higher square feet should be purchased. Consequently, apartments with 900 or more square feet will yield the lowest price to rent ratios. Smaller apartments in these areas, with 400, 500, or 600 square feet won’t be as profitable.
In addition to the table above, we also did the same analysis as above except that we predicted the rent prices from the previous regression for the housing data set. Likewise, we predicted the housing prices with the previous housing regression for the Craigslist data set.
Price to Rent Ratios for Different Neighborhoods by Predicting Renting Prices
We predicted rent prices for the housing price data set and then calculated the price to rent ratios.
Square Feet and Neighborhood |
Average Housing Price |
Number of Apartments |
Predicted Renting Prices |
Price to Rent Ratio |
701-801 Cassin |
562140 |
5 |
460.082 |
101.819 |
801-901 Cassin |
635128 |
7 |
599.760 |
88.248 |
901-1001 Cassin |
699275 |
12 |
711.096 |
81.948 |
1001-101 Cassin |
795725 |
4 |
841.088 |
78.839 |
1101-1351 Cassin |
851512 |
7 |
947.547 |
74.887 |
901-1001 South Slope |
824580 |
5 |
1677.307 |
40.967 |
801-901 Maple Ridge |
540233 |
3 |
1124.220 |
40.045 |
701-801 Marpole |
792433 |
9 |
1660.701 |
39.764 |
901-1001 Eastburn |
730966 |
3 |
1554.063 |
39.197 |
801-901 Arbutus Ridge . . . |
786160 . . . . |
5 . . . . |
1677.935 . . . . |
39.044 . . . . |
901-1001 Mount Pleasant |
680750 |
4 |
2891.669 |
19.618 |
601-701 Yaletown |
726514 |
7 |
3095.841 |
19.556 |
701-801 Kitsilano |
746658 |
24 |
3187.909 |
19.518 |
1001-101 Kitsilano |
821571 |
7 |
3579.117 |
19.129 |
601-701 Kitsilano |
650889 |
28 |
3058.244 |
17.736 |
501-601 Kitsilano |
619906 |
15 |
2946.907 |
17.530 |
601-701 Coal Harbour |
697950 |
4 |
3340.204 |
17.413 |
501-601 Coal Harbour |
643065 |
9 |
3261.879 |
16.429 |
401-501 Kitsilano |
546222 |
4 |
2833.887 |
16.062 |
There are still some similarities when we are looking at the lowest price to rent ratios. The Kitsilano neighborhood has a very low price to rent ratios for different square feet apartments. Similarly, for Yaletown. When we look at the highest price to rent ratios then we see that Cassin is on top with different square feet apartments.
Now, let’s look at price to rent ratios where we predict apartment prices for the Craigslist data set.
Price to Rent Ratios for Different Neighborhoods by Predicting Housing Prices
Here, we took the Craigslist data set and predicted the housing prices with the previous regression model. The table looks like this:
Square Feet and Neighborhood |
Average Renting Price |
Number of Apartments |
Predicted Housing Price |
Price to Rent Ratio |
801-901 Riley Park |
1660 |
5 |
828925 |
41.613 |
601-701 Univercity |
1083 |
3 |
520626 |
40.048 |
701-801 Burnaby Central |
1500 |
3 |
703518 |
39.084 |
401-501 Renfrew-Collingwood |
1066 |
3 |
499441 |
39.0189 |
901-1001 Burnaby Central |
1650 |
3 |
754664 |
38.114 |
1101-1351 South Slope |
1875 |
4 |
821050 |
36.491 |
701-801 South Slope |
1563 |
3 |
673455 |
35.898 |
401-501 Richmond Central |
1216 |
3 |
512563 |
35.107 |
801-901 Hastings-Sunrise |
1680 |
4 |
694280 |
34.439 |
401-501 Univercity . . . |
1135 . . . |
3 . . . |
468436 . . . |
34.393 . . . |
1351-1601 West End |
4666 |
3 |
956150 |
17.074 |
1101-1351 Kitsilano |
4493 |
12 |
902705 |
16.740 |
1601-1851 Yaletown |
5798 |
6 |
1146763 |
16.482 |
1351-1601 Downtown |
5508 |
5 |
989862 |
14.976 |
1351-1601 Coal Harbour |
5439 |
5 |
939259 |
14.391 |
2351-2601 Yaletown |
8500 |
3 |
1295070 |
12.697 |
1851-2101 Coal Harbour |
7491 |
3 |
1079181 |
12.004 |
3601-4101 Kitsilano |
12758 |
5 |
1628908 |
10.639 |
2351-2601 Kitsilano |
11882 |
6 |
1263720 |
8.863 |
901-1001 Sunset |
6183 |
3 |
619285 |
8.346 |
When we look at the highest price to rent ratios, then we can see that a lot of apartments are located in neighborhoods in Burnaby.
On the other hand, the lowest price to rent ratios appears in the Kitsilano neighborhood with various square feet. In addition to Kitsilano, some Downtown neighborhoods such as Yaletown, Coal Harbour, and West End also have very low price to rent ratios. Again, we see a low price to rent ratios for apartments with high square feet.
Overall, when looking at the three tables, we can conclude that the best investment properties can be found in neighborhoods in Downtown Vancouver. These neighborhoods have the lowest price to rent ratios. Consequently, these ones are the most promising for positive cashflow.
The last two tables where we predicted housing prices and rent prices can be taken with a grain of salt. This is because the covariates square feet, bedrooms, and neighborhoods only explain around 50% of the variation in rent prices and only 42% of the variation in housing prices.
The most reliable table is the first one where we calculated the price to rent ratios by matching the actual housing and rent prices for certain neighborhoods and square feet.
Google Maps of Housing Prices in the Greater Vancouver Area
The picture below shows a Google Maps map of Greater Vancouver with all the apartments colored by neighborhood for housing prices. There are around 95 neighborhoods in total so some of the colors are very similar to each other. However, this is a rough visualization where the apartments are located that we have collected.
Limitations of the Study and Improvements
Limitations
- We do not know how biased our home prices and rent prices are. We combined the prices of multiple apartments by looking at their street addresses. Afterward, we assigned these apartments to a specific neighborhood. This was done to lower the variance but at the same time has increased bias. Therefore, there may be some neighborhoods that only include expensive homes from a certain popular street or cheap apartments from streets less popular.
- As already mentioned, we calculated the price to rent ratios by matching the average price of homes, for certain neighborhoods and square feet, with the average price of rents, for certain neighborhoods and square feet, for more than 3 apartments. This can be improved by also collecting age for rent apartments and then matching on these 3 variables,
square feet
,neighborhood
, andage
. - We also wanted to match apartments for rent and apartment prices by the number of bedrooms. However, because the data was sparse, we decided to only match on neighborhood and square feet.
- Another limitation of our analysis is extrapolation. Extrarpolation happens when we predicted home prices for the Craigslist data set. Some predicted home prices are exceeding one million dollars. However, remember that we only collected apartment prices below one million dollars. Therefore, our regression equation does not know how to handle apartment prices that exceed one million dollars. If you are not clear about the concept, then here is a great explanation with a great picture that explains the concept perfectly.
Improvements
- A way to decrease the bias would be to collect more data. The data cleaning process for the Craigslist data was very time intensive because the posts are not well structured. Everyone can upload apartments and it is up to the person who posts how well structured the uploads are. Therefore, the street names are missing or only mentioned in the description sometimes. Consequently, getting information from Craigslist might be very time-consuming. It is better to find a commercial website who posts rent prices so we can get data from well structured uploads.
- Another improvement would be to cross-validate our results. This means that for the multiple linear regression we do not know how large our error is. A way to solve this problem would be to scrape a validation set from Craigslist or other websites and then predict rents and housing prices on this data. Afterwards, one can compare the predicted results to the actual results on the website and then determine how large the error is. This would also show us if the tables with the price to rent ratios where we predicted home and rent prices are reliable.
All analysis was done in R and can be found on my github. Check out the code there if you are interested!
I hope you have enjoyed this little project about the Vancouver housing market. Let me know in the comments below of any improvements of the analysis or if you have any suggestions. Maybe you can come up with your own analysis of real estate in your area.
Additional Resources
- If you want to create a similar analysis for your own area where you are living, then check out my blog posts about building a web scraper. Scraping Indeed job postings and scraping real estate data. These blog posts will help you to develop your own scraper for any website.
- Also check out my github document where you can find all the analysis and code you need for your own project.
- Here is an article about price to rent ratios in Vancouver compared to San Francisco.
- Here is another news article which talks about renting vs. buying in the Vancouver housing market. Note that all the graphs were done with ggplot 🙂 . They could have been a little bit nicer with a theme and a centered heading for example.
Recent Posts
Recent Comments
- Kardiana on The Lasso – R Tutorial (Part 3)
- Pascal Schmidt on RSelenium Tutorial: A Tutorial to Basic Web Scraping With RSelenium
- Pascal Schmidt on Dynamic Tabs, insertTab, and removeTab For More efficient R Shiny Applications
- Gisa on Persistent Data Storage With a MySQL Database in R Shiny – An Example App
- Nicholas on Dynamic Tabs, insertTab, and removeTab For More efficient R Shiny Applications
Comments (2)
This is an amazing piece of work. Well done!
Thank you Steven, I am happy you find it amazing 🙂