Skip to content

Methodology

VAYU converts a bad air-quality reading into an evidence-backed enforcement order and then checks whether it worked. Everything below is how — the models, the formulas, the numbers we beat and the ones we don’t, and the limitations we’d want a reviewer to know before trusting a single order.

Forecast backtest

Source attribution

For a ward, VAYU walks the air back along the wind (a back-trajectory cone) and scores each source it passes through. The share of each source is its score over the total:

S_burn       = Σ FRP · exp(−d/120km) · exp(−age/12h)      (NASA FIRMS fires)
S_industry   = Σ area(industrial ∩ cone) · NO₂ anomaly    (OSM landuse + S5P)
S_construction = Σ (2 if non-compliant else 1) · exp(−d/10km)  (permits)
S_traffic    = road_density · rush_hour(t) · NO₂ uplift    (OSM roads + CPCB)
S_regional   = (cone length outside city / total) · PM proxy

share_k = S_k / Σ S

Every term is measured or a documented constant — nothing is tuned to flatter the demo. The scale factors are calibrated so a Delhi winter ward lands inside the published IITM DSS / SAFAR apportionment ranges, and make backtest reports where our shares actually fall against those ranges. One documented deviation: the fire decay is 120 km, not the 20 km some references use, because Punjab stubble sits 200–300 km upwind and 20 km would make it arithmetically zero.

Dispersion & ROI

To decide what an action is worth, VAYU runs a Gaussian plume counterfactual: source running vs. source halted, stepped through the 48h wind forecast. The µg/m³ averted × people protected ÷ teams-required gives the ROI that ranks the leaderboard. Emission rates come from published factors — fire radiative power via Wooster (2005) and Andreae & Merlet (2001); industry anchored to SAFAR’s Delhi inventory (~9.3 g/s per km²).

Hard limit: a steady-state plume is only trusted to 50 km (EPA’s AERMOD ceiling). Beyond that VAYU refuses to size a source and issues an escalation advisory instead — which is exactly why Delhi’s November stubble shows up as “not yours to fix, escalate to CAQM” rather than a fabricated averted-µg/m³ number.

Verification (difference-in-differences)

After an order is executed, the ward’s PM2.5 falls — but air moves for reasons that have nothing to do with enforcement. VAYU subtracts what would have happened anyway, estimated from control wards matched on their pre-period behaviour only:

observed = (target_post − target_pre) − mean(control_post − control_pre)

A 95% interval comes from a block bootstrap (n=500) over hourly residuals. A verdict whose interval spans zero is reported as “not distinguishable from the weather” — the seeded demo record comes out that way, and we show it rather than hide it.

Data sources

SourceStatusRowsDetail
Loading data status…

All free and public: Open-Meteo (weather, no key), NASA FIRMS (fires), OpenAQ / CPCB (stations), OpenStreetMap (roads, industry), DataMeet (ward boundaries). The app runs fully offline on bundled samples with zero keys.

Limitations (read these)

  • Ward population is an equal split

    Municipal wards are delimited to equal population (Delhi Municipal Corporation Act 1957 s.5; UP Act 1959), so the Census city total is split equally — not apportioned by area, which would invert it. Real wards vary ±15%; per-ward Census figures exist in delimitation orders and are the upgrade path.

  • The plume is a screening model

    Steady-state, straight-line, no chemistry or deposition. Trusted to 50 km; concentrations are an upper bound. Good for ranking local actions, not for regulatory-grade dispersion.

  • Industry emissions are uncertain

    Published Delhi inventories disagree on industry's PM2.5 share by ~8× (SAFAR 22%, TERI 3%). We use the SAFAR figure; any industrial averted-µg/m³ could be several times off.

  • Ward AQI is interpolated

    ~52 stations for 290 Delhi wards, so most ward values are IDW-interpolated (p=2, k=5). Wards far from a monitor are watermarked low-confidence.

  • Construction permits are sample data

    A representative synthetic permit set stands in for a live municipal feed; flagged as sample in the data-status pills.

  • Regulation text is abridged

    The GRAP corpus is a faithful but shortened restatement for a prototype. Verify against the current CAQM order before issuing anything.

Cost to run

India’s existing decision-support (IITM DSS) is Delhi-only, winter-only, and supercomputer-bound. VAYU runs the full loop — forecast, attribution, dispersion, verification — for a new city from a single config file, on a laptop, with free public data and no API keys required. Onboarding a city is one file, demonstrated live (Delhi → Lucknow in under two seconds).