Synthetic sessions · real weather · portfolio project

Explore the network, then see which conclusions survive testing.

Filter 80 stations across 8 cities, play with the fitted demand model, and inspect the forecast and map. The Validation tab shows what each analysis was checked against, including the parts that failed.

Cities
Metric
Resolution
Demand over time
Hover for exact values. Click a city chip above to include or exclude it.
Select at least one city and a valid date range.
Total by city
Average by day of week
Per city-day, in the selected range
Daily sessions vs temperature
Each dot is one city-day (filters above apply). Lines are model-expected sessions at median congestion.
Select at least one city.
What-if: expected sessions for one city-day
Adjust conditions; the model returns expected sessions and each factor's effect.
Expected sessions that day

Baseline = 10 °C, congestion 50, weekday, no rain. Real daily counts vary around this expectation (about ±√n from Poisson noise).

History shown
30-day forecast
Holt-Winters with weekly seasonality, fitted on the full history. Thin line = daily actual, thick = 7-day average, dashed = forecast.
How accurate is it? (backtest)
Reading the error
Read before quoting an accuracy number
    Size markers by

    Station coordinates are synthetic (no Open Charge Map key). Click a marker for details. Map tiles © OpenStreetMap contributors.

    1. Demand drivers: truth vs estimate
    DriverTrue effectEstimated95% CIRecovered

    Full write-up: outputs/demand_model_validation.md

    2. Forecast backtest by model
    WAPE across 8 cities × 12 origins × 30-day horizon (lower is better)

    outputs/forecast_backtest.md

    3. Geospatial permutation test

    outputs/geospatial_stress_test.md