Replies: 4 comments 2 replies
|
I've been pointed to this issue as I've recently had similar discussions with various people. One thought: the above reads like we need to use target data as of the time of forecasting for scoring ("If you evaluate these forecasts retrospectively using the latest version of the target data", "so scoring these forecasts against the current target data does not reflect what forecasters actually knew"). I would argue we need to use the data as it was available for forecast generation, which is something different. For scoring it is fine to use the data as available at the end of the season - or whatever was defined as the target in advance. One alternative to data as of end of season as the target is to give each data point a fixed amount of time to stabilize. So for instance "predict the incidence value after four weeks of potential retrospective revisions". That makes sense when revisions primarily stem from reporting delays, as the models used to correct for this usually need some pre-defined maximum reporting delay to take into account. In our German Hubs this is actually our preferred solution, see our discussion in Wolffram et al. I feel like currently the targets aren't always well-defined as it is often not stated explicitly which data version is the actual target. But maybe this is defined somewhere for the US Hubs, I don't know the documentation well enough. I wonder if we also need well-defined exclusion criteria for state-weeks with too strong revisions to be meaningfully scored. IMO the revisions to look at to this end are the ones in the latest data points forecasters had available at a given point in time, not the ones in the data points they had to predict. I think the latter is what we did in Sherratt et al, but I'm not so convinced anymore. Again it depends on whether the issue is delayed reporting and thus predictable revisions, or occasional major and unpredictable revisions / backfill. For predictable revisions we'd probably say they are just part of the game. |
|
Thanks for starting this conversation, @micokoch ! I agree with @jbracher's points. So a specific suggestion for edits to Variant A could be
becomes
With similar adjustments to B and C. |
|
Thank you @jbracher and @nickreich for the comments and suggestions. Here are the three reworked variants building on Nick's suggested language for Variant A (the short variants B and C are meant to link back to the canonical explanation in Variant A once it lives in the hubverse docs). Variant A — Full (docs admonition)
Variant B — Short (evaluation pages / dashboards)
Variant C — README boilerplate (template & real-time hubs)
|
|
Thanks @dsweber2 and @nickreich! I've updated the Delphi reference to point at Delphi's Epidata API as suggested by David, and aligned the wording with the FluSight (#3688) and covidhub (#1645) PRs (adding the epidatr/epidatpy clients, the git-reconstruction option, and a note on how large the effect can be). Here is the final version of the three variants, ready for implementation. I will proceed with implementation as well. Variant A — Full (docs admonition)
Variant B — Short (evaluation pages / dashboards)
Variant C — README boilerplate (template & real-time hubs)
|
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Add prominent warnings about data revisions when using hub data for retrospective forecast generation and evaluation
Note: Changes and updates have been made based on feedback. Please scroll to the bottom to find the latest proposed language.
Background
This comes out of a suggestion from the Delphi group to have hubs include a warning prominently that care must be taken to actually use historical revision behavior for retrospective forecast evaluation.
I'm starting this as a discussion (rather than an issue) because it spans several repos and the immediate goal is to gather feedback on the wording, placement, and links before we commit to implementing anything. Once we've converged here, we can spin off concrete issues in the individual repos and link back to this thread.
The problem
Real-time forecasting hubs store the forecasts that were generated with the data available at the time each forecast was made. Surveillance/target data, however, is frequently revised after its initial release — reporting delays, backfill, and retroactive corrections mean that the observed value for a given target date can change (sometimes substantially) in later data versions.
If an analyst runs a retrospective evaluation using the latest / finalized version of the target data, they are no longer reproducing the conditions the forecasters faced. Models can look artificially better or worse than they were in real time, and comparisons between models can be distorted. Faithful retrospective evaluation requires using the version of the target data that was available as of each forecast's reference date.
The hubverse target-data format already supports this: time-series target data may include an optional
as_ofcolumn, andtarget-data.jsonhas aversionedflag. But:as_ofversion rather than pulling the current snapshot.So this is primarily a documentation / prominent-warning effort, not a format change: make the risk visible everywhere hub data is offered for download or evaluation, tell analysts what to do, and point them to versioned-data archives (e.g. Delphi's) where a hub doesn't retain its own revision history.
Proposed solution
Add a short, consistent warning — with a link to guidance and to versioned-data archives — in the places where someone is most likely to grab hub data and evaluate it. Use one canonical long-form version in the docs and shorter pointers elsewhere that link back to it.
Where to put it
docs.hubverse.io)user-guide/target-data.md, as an admonition near theas_of/versioneddiscussionhubEvalsdocs, dashboard-predevals page)README.md— add a standard "Using this data for retrospective evaluation" section to the template boilerplatepages/, and/or nearpredevals-config.ymldocscovid19-forecast-hub-archive)README.mdhubverse.io)Once wording and placement are agreed here, the plan is to open a concrete issue per repo (starting with hubDocs, which is the canonical home for the warning) and link each back to this discussion. The rollout list below is the starting point for those issues.
Draft warning text
Variant A — Full (docs admonition)
Variant B — Short (evaluation pages / dashboards)
Variant C — README boilerplate (template & real-time hubs)
Open questions / for discussion
as_of/issuesdocs, theepiprocessepi_archivetooling,epidatr/epidatpy, or a landing page? (Placeholders above.)target-data.md)?covid19-forecast-hub-archive) should carry the README note too.hubData/ Pythonhub-datadocs whereconnect_target_*()functions are described), since that's where analysts programmatically pull target data?Proposed plan (for discussion)
Rough rollout, to become per-repo issues once we've agreed on the text:
user-guide/target-data.mdAll reactions