Data-driven analysis of Munich’s residential real estate market, combining listing data and migration statistics to uncover key drivers of prices and market dynamics.
Munich is one of the most expensive real estate markets in Germany.
This project analyzes residential property listings in Munich and combines them with district-level migration data to investigate how location, price segments, time on market, and migration patterns interact.
The analysis focuses on apartments and houses listed between 2021 and 2023 and evaluates several hypotheses regarding pricing, demand and migration trends across Munich’s districts.
Completed (2024). Academic research project.
- H1: Real estate offer prices per square meter vary significantly by district.
- H2: The number of days a property remains on the market depends on the district.
- H2.1: The number of days a property is higher / lower regards to the offer price per sqm.
- H3: The average time a property stays on the market varies between the “budget”, “standard” and “luxury” segments.
- H4: There is less migration in districts with higher real estate offer prices.
- Source: CASAFARI
- Scope: Residential property listings in Munich
- Size: ~438,000 rows, 40 variables
- Key variables:
- Offer price
- Living area
- Days on market
- Property type
- Construction year
- Condition
- Location (district & quarter)
- Source: City of Munich (Statistikstelle)
- Coverage: 25 districts, years 2019–2023
- Metrics:
- Internal migration
- External migration
- Total migration balance
-
Data Cleaning
- Filtering listings to Munich only
- Removing irrelevant property types (e.g. commercial, plots)
- Handling missing values and outliers
- Standardizing construction years and property conditions
-
Feature Engineering
- Price per square meter
- Price segments (budget / standard / luxury via quartiles)
- Year extraction from offer dates
- District and quarter harmonization via lookup tables
-
Data Integration
- Joining real estate data with migration data by district and year
-
Analysis & Visualization
- District-level price distributions
- Average days on market
- Segment comparisons
- Interactive visualizations (Plotly & Shiny)
- R (≥ 4.2 recommended)
- RStudio (optional, but recommended)
install.packages(c(
"dplyr", "ggplot2", "ggspatial", "gridExtra", "lubridate", "maptiles",
"osmdata", "patchwork", "plotly", "sf", "shiny", "stringr", "tidyr"
))- Property prices per square meter differ strongly by district
- Central districts (e.g. Altstadt-Lehel) show the highest prices
- Time on market varies by district but is not strongly driven by price alone
- Differences between budget, standard, and luxury segments are smaller than expected
- Higher prices do not necessarily correlate with lower migration
- Listing prices are used instead of transaction prices
- Migration data is aggregated at district level
- No causal inference — results are descriptive and exploratory
The code in this repository is provided for academic and analytical purposes.
- The proprietary CASAFARI dataset used in this analysis cannot be published or redistributed.
- Public migration data was obtained from the City of Munich and is subject to the original data provider’s license and attribution requirements.
Celina Breuer (part of a group project)