This static report is generated with Quarto and the singapore_eda package in this repository. The pipeline covers ingestion, cleaning, feature engineering, visualization, and a simple OLS on log median-adjusted features for illustration.
Reference lookups (planning area, mature/young, MRT proxy), optional EIP block stub, numerology digit flags (descriptive only), and optional gross rental yield sit alongside the core resale EDA. Unit sun exposure is not in the public resale CSV; we do not claim façade-level solar loads without further data.
Pipeline
flowchart LR raw[Raw_CSV] --> clean[clean] rent[Median_rent_CSV] --> yield[Gross_yield] raw --> clean ref[Reference_CSV] --> enrich[geo_join] clean --> features[features] enrich --> features features --> yield features --> app[Streamlit_Quarto] yield --> app
flowchart LR
raw[Raw_CSV] --> clean[clean]
rent[Median_rent_CSV] --> yield[Gross_yield]
raw --> clean
ref[Reference_CSV] --> enrich[geo_join]
clean --> features[features]
enrich --> features
features --> yield
features --> app[Streamlit_Quarto]
yield --> app
Ethics and culture
Digit-based flags (e.g. containing 4 or 8) are mechanical features for exploration only. They are not measures of individual beliefs; keep language non-stereotyping in any public writeup.
Reproducible sample (test fixture)
The chunk below uses the same path as pytest fixtures so GitHub Pages can render without downloading the full 21MB file.
town is grouped into the top 15 markets with the remainder in OTHER to keep coefficients interpretable. Caveat: this is a teaching baseline; for production use you would add fixed effects, cluster errors by town, and test functional form more carefully.
Static site vs interactive app
GitHub Pages serves this Quarto output as static HTML only. The full interactive experience (maps, clusters, graph, forecast, rental yield) runs in Streamlit — deploy the same repo to Streamlit Community Cloud and link both URLs in the project README. Do not claim that Pages alone runs Python.
After deployment, update this section with your real interactive URL: