# Indian Air Quality Forecasting Eval

> Evaluates the ability of hybrid time-series models to forecast urban air quality indices and specific pollutant concentrations (PM2.5, O3, CO, NOx) using historical environmental data and temporal features. Use when the user wants to benchmark on CPCB Indian Air Quality Dataset, or asks about evaluating this task. Reports RMSE.

- Skill: `qhjqhj00/indian-air-quality-forecasting-eval` (Agent Skill)
- Install (CLI): `npx skillmds add qhjqhj00/indian-air-quality-forecasting-eval`
- Raw SKILL.md: https://api.skillmd.com/api/skills/qhjqhj00/indian-air-quality-forecasting-eval/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: qhjqhj00 (https://skillmd.com/u/qhjqhj00)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/qhjqhj00/indian-air-quality-forecasting-eval

---


# indian-air-quality-forecasting-eval

> Air Quality Prediction Using LOESS-ARIMA and Multi-Scale CNN-BiLSTM with Residual-Gated Attention — Pahari et al. (2025) (arXiv:2510.22818, 2025)

## What this evaluates

Evaluates the ability of hybrid time-series models to forecast urban air quality indices and specific pollutant concentrations (PM2.5, O3, CO, NOx) using historical environmental data and temporal features.

## Datasets

- **CPCB Indian Air Quality Dataset** — total ?; splits: train (-1), val (-1), test (-1)

## Metrics

- `RMSE` **(primary)** — range: other
  - Root Mean Square Error: $\sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_{i}-\hat{y}_{i})^{2}}$. Lower values indicate better predictive accuracy.
- `R²` — range: [0, 1]
  - Coefficient of Determination: $1-\frac{\sum_{i=1}^{n}(y_{i}-\hat{y}_{i})^{2}}{\sum_{i=1}^{n}(y_{i}-\bar{y})^{2}}$. Measures proportion of variance explained; higher is better.
- `MAE` — range: other
  - Mean Absolute Error: $\frac{1}{n}\sum_{i=1}^{n}\left|y_{i}-\hat{y}_{i}\right|$. Lower values indicate better predictive accuracy.

## Input / output format

**Input**: Hourly time-series sequences of pollutant concentrations (PM2.5, O3, CO, NOx) augmented with temporal features (hour, dayofweek, month, year) and a 1-year lag feature for PM2.5.

**Output**: Predicted concentration values for the target pollutant(s) at the next forecasting horizon.

## Scoring recipe

```python
def compute_metrics(y_true, y_pred):
    n = len(y_true)
    rmse = np.sqrt(np.mean((y_true - y_pred) ** 2))
    mae = np.mean(np.abs(y_true - y_pred))
    ss_res = np.sum((y_true - y_pred) ** 2)
    ss_tot = np.sum((y_true - np.mean(y_true)) ** 2)
    r2 = 1 - (ss_res / ss_tot)
    return {'RMSE': rmse, 'R2': r2, 'MAE': mae}
```

## Common pitfalls

- Pollutants have vastly different scales (e.g., O3/CO MSE ~1e-5 vs PM2.5 MSE ~8), so comparing raw MSE across pollutants is misleading without normalization.
- Time-series splits must be chronological to prevent data leakage; the paper does not explicitly state the train/val/test split ratio or dates.
- Missing value imputation (forward-fill then mean) may introduce bias if missingness is not random, affecting baseline comparisons.

## Evidence (verbatim from paper)

> Model performance was assessed using three standard statistical indicators: Root Mean Square Error (RMSE), Coefficient of Determination ($R^{2}$), and Mean Absolute Error (MAE). These are defined as follows:

|  | $\text{RMSE}\=\sqrt{\frac{1}{n}\sum_{i\=1}^{n}(y_{i}-\hat{y}_{i})^{2}}$ |  | (17) |
| --- | --- | --- | --- |

|  | $R^{2}\=1-\frac{\sum_{i=1}^{n}(y_{i}-\hat{y}_{i})^{2}}{\sum_{i=1}^{n}(y_{i}-\bar{y})^{2}}$ |  | (18) |
| --- | --- | --- | --- |

|  | $\text{MAE}\=\frac{1}{n}\sum_{i=1}^{n}\left|y_{i}-\hat{y}_{i}\right|$ |  | (19) |

## Citation

```bibtex
@misc{pahari2025airquality,
  title={Air Quality Prediction Using LOESS-ARIMA and Multi-Scale CNN-BiLSTM with Residual-Gated Attention},
  author={Pahari et al. (2025)},
  year={2025},
  note={arXiv:2510.22818}
}
```

- arXiv: 2510.22818

