Pre-ranking for multivariate calibration assessment
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 38/100
Línea de trabajo
Empiece leyendo las secciones 2.1–2.2 de Gneiting et al. (2008) e inspeccione la nueva clase forecast_multivariate_sample. Compare integrar coverage en score.forecast_multivariate_sample() con añadir get_multivariate_ranks(), y aclare después la API prevista y el tratamiento de los rangos. Se considera terminado cuando exista una implementación documentada del pre-ranking con una salida de calibración que pueda visualizarse como histogramas de rangos.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
Implement pre-ranking methods from Gneiting et al. (2008) to assess calibration of multivariate forecasts via univariate rank histograms.
Motivation
When forecasting multiple correlated quantities (e.g., multiple locations, age groups, or forecast horizons), standard univariate calibration checks miss dependency structure. A forecast could be perfectly calibrated marginally (each location's PIT is uniform) but miss the correlation structure entirely. Gneiting et al. (2008) propose "pre-ranking" approaches that reduce multivariate calibration assessment to univariate ranks, which can then be visualised via rank histograms. This could complement the new forecast_multivariate_sample class by providing calibration diagnostics.
Pre-ranking methods
The paper describes two main pre-ranking approaches:
-
Multivariate rank (Section 2.1): Based on pre-ranks using an orthant semi-ordering. For each point, count how many other points lie "to the lower left" in all dimensions. The observation's rank among samples is then interpreted as a calibration metric. Ties are resolved randomly.
-
Minimum spanning tree (MST) rank (Section 2.2): Remove each point in turn and compute the MST length of the remaining points. Rank observation by where its MST length falls among sample MST lengths.
Design options
This could be implemented in two ways
Option A: Include in score()
Add coverage columns to score.forecast_multivariate_sample() output:
multivariate_coverage_50,multivariate_coverage_90, etc.- Each is 0/1 per forecast unit (like univariate
interval_coverage_*) - Aggregation via
summarise_scores()gives coverage proportions - Existing visualisation tools can display coverage deviations
This parallels how univariate interval coverage works and feels most natural.
Option B: Standalone function
get_multivariate_ranks(forecast_multivariate, method = "average_rank")
Returns the observation's rank among samples (1 to M+1). This can be passed to get_pit_histogram() for visualisation. Useful for detailed calibration diagnostics beyond coverage.
Reference
Gneiting, T., Stanberry, L. I., Grimit, E. P., Held, L., & Johnson, N. A. (2008). Assessing probabilistic forecasts of multivariate quantities, with an application to ensemble predictions of surface winds. Test, 17(2), 211-235. https://doi.org/10.1007/s11749-008-0114-x -- available at https://stat.uw.edu/sites/default/files/files/reports/2008/tr537.pdf
- Lenguaje dominante
- R
- Estrellas
- 65
- Forks
- 24
- Merge medio
- 1 h 24 min
- PR fusionados (30 d)
- 2
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de epiforecasts/scoringutils
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
epiforecasts/scoringutils#1264 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
epiforecasts/scoringutils#1265 ·
Los mantenedores suelen responder en 1 día
-
Non-randomised PIT for integer forecasts drops forecasts whose observation exceeds all samplesAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
epiforecasts/scoringutils#1260 ·
Los mantenedores suelen responder en 1 día
-
Incorrect guidance in `NEWS.md` re `add_relative_skill()`?Posiblemente ocupada @nikosbosse la tomó hace 3 días. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
epiforecasts/scoringutils#1226 · 1 comentario · 2 reacciones ·
Los mantenedores suelen responder en 1 día
-
get_pit_histogram(): unsorted breaks produce negative densities; num_bins = 1 returns an empty tablePosiblemente ocupada @nikosbosse la tomó hace 3 días. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
epiforecasts/scoringutils#1219 ·
Los mantenedores suelen responder en 1 día
Todos los issues de epiforecasts/scoringutils
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
waldronlab/bugphyzz#301 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
r-lib/tree-sitter-r#209 ·
-
Suggest rmoriebricklayerAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 67/100
-
Suggest rmoriebricklayerAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 79/100
cran-task-views/CausalInference#52 · 1 comentario ·