Use illustration of local and global scores
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 42/100
- Tipo de issue
- Documentación
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- r
Línea de trabajo
Comienza localizando la vignette que explica las diferencias entre las puntuaciones y revisa el código de R proporcionado para generar el gráfico, incluida la ruta de salida inst/manuscript/output/score-locality.png. Se considera completado cuando la ilustración se haya incorporado a una vignette y explique claramente las diferencias entre las puntuaciones locales y globales.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
We have this nice illustration:
It's not used in the manuscript anymore. But it would be nice to use it in a vignette explaining differences between scores.
Related: #933, #929, #930
This was the code to generate the plot:
library(scoringutils)
library(ggplot2)
library(data.table)
quantiles <- seq(0.1, 1, 0.1)
forecast_a <- c(0.3, 0.35, 0.25, 0.04, 0.02, 0.01, 0.01, 0.01, 0.005, 0.005)
forecast_b <- c(0.1, 0.35, 0.05, 0.02, 0.01, 0.01, 0.05, 0.07, 0.2, 0.14)
true_value <- 2
df <- data.table(
forecaster = rep(c("Forecaster A", "Forecaster B"), each = 10),
outcome = rep(1:10, 2),
prob = c(forecast_a, forecast_b),
true_value = true_value
)
df[, crps := sum((cumsum(prob) - (outcome >= true_value))^2),
by = c("forecaster")]
df[, log_score := -log(prob[outcome == true_value]),
by = c("forecaster")]
df[, mean_pred := sum(prob * outcome) / sum(prob),
by = c("forecaster")]
df[, sd_pred := sqrt(sum((prob * outcome - mean_pred)^2)),
by = c("forecaster")]
df[, log_score := -log(prob[outcome == true_value]),
by = c("forecaster")]
df[, dss := ((true_value - mean_pred)^2) / sd_pred + 2 * log(sd_pred),
by = c("forecaster")]
# sense-check: compute crps using samples
sample_a <- sample(x=1:10, size = 1e5, replace = TRUE, prob = forecast_a)
sample_b <- sample(x=1:10, size = 1e5, replace = TRUE, prob = forecast_b)
crps_a <- scoringutils::crps_sample(2, t(as.matrix(sample_a)))
crps_b <- scoringutils::crps_sample(2, t(as.matrix(sample_b)))
annotation <- df[, .(forecaster, crps, log_score, dss)] |> unique()
ggplot(df, aes(x = factor(outcome), y = prob)) +
geom_col() +
geom_text(data = annotation, x = 4, y = 0.3, hjust = "left", size = 3,
aes(label = paste("CRPS: ", round(crps, 2)))) +
geom_text(data = annotation,x = 4, y = 0.27, hjust = "left", size = 3,
aes(label = paste("Log score: ", round(log_score, 2)))) +
geom_text(data = annotation, x = 4, y = 0.24, hjust = "left", size = 3,
aes(label = paste("DSS: ", round(dss, 2)))) +
facet_wrap(~ forecaster) +
geom_vline(aes(xintercept = 2), linetype = "dashed") +
theme_scoringutils() +
labs(y = "Probability assigned", x = "Possible outcomes")
ggsave("inst/manuscript/output/score-locality.png", height = 3, width = 8)
- 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 ·