Hour by hour · last two weeks
Cleanest recently: 11 AM to 2 PM (working hours) · Worst recently: 12 AM to 3 AM. This is the pattern of the last 15 days, hour by hour (Pakistan time). It is not a forecast: the forecast above is a 24-hour average.
Details and evidence
Why you can check this
Why you can check this
64% closerthan the satellite-model forecast (CAMS) on data the model never saw
56% closerthan simply repeating the last 24 hours (our declared baseline)
80% insideof real outcomes fell inside the likely range (aimed at 80%)
20934 h oldnewest monitor reading; the pipeline re-checks every hour
The evidence: model against the baselines
| period |
rows |
MAE model |
MAE baseline (persistence) |
MAE CAMS |
skill vs baseline % |
skill vs CAMS % |
category accuracy |
80% interval coverage |
| valid |
2082 |
5.86 |
11.15 |
19.00 |
47.5 |
69.2 |
0.849 |
0.801 |
| test |
2614 |
4.60 |
10.44 |
12.72 |
56.3 |
63.8 |
0.904 |
0.804 |
Where the model is weakest
| group |
value |
n |
mae_model |
mae_baseline |
mae_cams |
interval_80_coverage |
| season |
rest of year |
2614 |
4.60 |
10.44 |
12.72 |
0.804 |
| time_of_day |
day (07-18 PKT) |
1295 |
4.64 |
11.14 |
12.77 |
0.799 |
| time_of_day |
night |
1319 |
4.56 |
9.75 |
12.68 |
0.808 |
| observed_level |
Good |
12 |
19.31 |
20.74 |
2.76 |
0.000 |
| observed_level |
Moderate |
1273 |
6.35 |
9.66 |
8.29 |
0.626 |
| observed_level |
Unhealthy |
554 |
2.75 |
11.84 |
21.98 |
0.995 |
| observed_level |
Unhealthy for sensitive groups |
775 |
2.83 |
10.58 |
13.53 |
0.972 |
| sensor_type |
low-cost sensor |
724 |
4.96 |
12.25 |
19.55 |
0.829 |
| sensor_type |
reference monitor |
1890 |
4.46 |
9.74 |
10.10 |
0.794 |
| location_id |
1 |
722 |
4.52 |
9.80 |
9.91 |
0.780 |
| location_id |
2 |
716 |
4.36 |
9.34 |
10.11 |
0.804 |
| location_id |
3 |
724 |
4.96 |
12.25 |
19.55 |
0.829 |
| location_id |
4 |
452 |
4.52 |
10.30 |
10.41 |
0.801 |
What the Data Quality Agent did in the latest run
| action |
check_name |
table_name |
rows |
| FILL |
gaps |
pm25 |
2 |
| FIX |
duplicates |
pm25 |
1 |
| FIX |
type |
pm25 |
1 |
| FLAG |
freshness |
nasa-firms |
0 |
| FLAG |
freshness |
open-meteo-air |
0 |
| FLAG |
freshness |
open-meteo-weather |
0 |
| FLAG |
freshness |
openaq |
0 |
| FLAG |
gaps |
pm25 |
30 |
| FLAG |
humidity_bias |
pm25 |
1106 |
| FLAG |
range |
pm25 |
77 |
| FLAG |
stuck |
pm25 |
8 |
| PASS |
completeness |
cams |
0 |
| PASS |
completeness |
weather |
0 |
| PROPOSE |
history |
pm25 |
1 |
Pipeline status and data freshness
Last successful run: run-pipe · finished 2026-10-21T05:07:47.058454+00:00
Latest run: FAILED
run-fail · 0.0 s ·
failed sources: none
Quality status (latest run): FILL 1 · FIX 2 · FLAG 9 · PASS 2 · PROPOSE 1 · pending approvals: 1
| LATE | openaq | 20934.1 h old (limit 3 h) | latest 2024-05-31T23:00:00+00:00 |
| LATE | open-meteo-weather | 20934.1 h old (limit 3 h) | latest 2024-05-31T23:00:00+00:00 |
| LATE | open-meteo-air | 20934.1 h old (limit 3 h) | latest 2024-05-31T23:00:00+00:00 |
| LATE | nasa-firms | 21044.6 h old (limit 36 h) | latest 2024-05-27T08:30:00+00:00 |
Checked against Punjab EPD's official daily AQI
No comparison has been run yet.
How it works. Every hour a pipeline collects readings from Lahore's monitors, weather, satellite estimates and fire detections, checks and cleans them
(every fix is logged), and a model forecasts the next 24 hours with a likely range. The advice follows the US EPA guide, which lists outdoor workers among the groups most exposed.
The question box (answers with citations, or “I don't know”) runs in the team's local app because it needs a server.