plane_shape()
In this release, we have introduced a parameter to customize the
“method” used to identify shapes within plane_shape()
.
Previously, the function was only able to use a Dynamic Time Warping
(“dtw”) algorithm to identify shapes in the time series. This approach
involved calculations that were computationally expensive, particularly
on datasets with multiple locations in the seed. We have introduced a
second method that uses a scaled difference approach (“sdiff”) to
ascertain shapes. The “sdiff” option is set as the default, as it is
much more computationally efficient than the “dtw” option. For more
details on both of these methods see ?plane_shape()
.
The package now includes a narrative vignette that discusses how to
interpret results from PLANES analysis. Topics include how to apply the
weighting scheme in plane_score()
, strategies to mitigate
limitations that may arise from seed data, and considerations for
operationally taking action based on plausibility scores.
This release introduces messaging that communicates when a location has fewer time steps compared to others in the seed. The warning message is formatted as “{LOCATION} has fewer values than some or all of the locations. This may introduce issues in downstream plausibility analysis.”
In the previous version of the package, if a user input signal data
that included a location with all values missing the
plane_seed()
function would proceed. However, this would
lead to background characteristics in the seed that could not be used in
downstream algorithms (e.g., infinite range). We now trigger an error if
the input data for to_signal()
includes any locations with
all values missing.
plane_repeat()
behaviorThe PLANES scoring includes plane_repeat()
to implement
a “repeat” algorithm (i.e., checking if the evaluated signal creates a
repeat sequence longer than any previously observed in the seed). We
observed that this was flagging instances where all values of the time
series were the same. In this release we have adjusted the algorithm to
no longer flag a constant time series as implausible.
In this release, we have introduced a new feature to constrain
component weights passed to plane_score()
at values >=
1. Before adding this constraint, we saw inconsistent behavior in some
cases when weights were set a < 1. We have updated the function
documentation for plane_score()
“weights” argument to
reflect this change.
This release introduces minor fixes for typos in function documentation and the README.
The rplanes
package now features two new plausibility
components: “shape” and “zero”. Each of these components is delivered in
a function (plane_shape()
and plane_zero()
,
respectively) to be run by plane_score()
alongside all
other specified components. As with the previously developed components,
these two operate as binary classifications of plausibility for the
signal evaluated at the given location.
The “shape” component uses a series of distance calculations to characterize how “similar” the evaluated signal is to previous windows of observed data in the seed. If the distance between the evaluated shape exceeds the maximum distance observed between any of the shapes then the signal is flagged as implausible. The “shape” component can only be used with a forecast signal.
The “zero” component assesses whether or not any zeros have been observed in the seed for the given location. If not, then the component will look for zeros in the evaluated signal. If it finds any, then the signal will be flagged as implausible. Note that the “zero” component will work for either a forecast or an observed signal.
rplanes_explorer()
appThis release introduces a new feature to deliver a point-and-click
interface for PLANES scoring directly in the rplanes
package. The interface is written as a Shiny app, which is maintained as
part of the package and can be launched using the
rplanes_explorer()
function. When the user installs
rplanes
, the app (which is stored in the inst/
directory) will be visible on the host machine.
rplanes_explorer()
wraps shiny::runApp()
and
points the “appDir” argument to the directory that holds the
rplanes
explorer app. Users can take advantage of any of
the arguments inherited by shiny::runApp()
(e.g.,
launch.browser=TRUE
to open the app directly in a browser
window).
We have added improvements to overall documentation for the package. In particular, this release introduces two new vignettes: one to describe how individual components operate and another to briefly introduce the explore app. In addition to the new vignettes, we have also implemented a handful of grammatical and wording changes to make existing documentation more clear and concise.
With updates to the quantile format used by some forecast hubs, we
have introduced an option for the read_forecast()
helper to
optionally read different formats. The function now supports the
“Hubverse” format used by the 2023-24 FluSight initiative
(https://hubdocs.readthedocs.io/en/latest/user-guide/model-output.html).
In this release we introduce a new feature for users to optionally
weight the importance of individual components in the overall
plausibility score. The weights must be specified as a named vector and
passed to the plane_score()
function. This argument is
optional and by default the function will use equal weights for each
component.
plane_score()
Prior to this release, if an observed signal was evaluated then
plane_score()
would strictly require that the user manually
specify the compatible components (as of v0.0.1 this was only “diff” and
“repeat”). In this version, plane_score()
can now detect
the type of signal and if “all” components are selected the function
will identify only those that are compatible. For example, with the
addition of the new components (see above), specifying
plane_score(..., components = "all")
for an observed signal
will automatically use the “diff”, “repeat”, and “zero” components.
The plane_score()
wrapper uses -
(hyphen)
to combine location and component in the returned list object. Before
this release, if locations had a hyphen in their names (e.g.,
“United-States”) then one of the internal data manipulation steps would
not function as expected. We have updated the internals of
plane_score()
to now allow for location names that may
contain hyphens.
Previously, the plane_seed()
function used dates as
arranged in the incoming observed signal data. As such, the seeding
could have unexpected behavior. For example, if dates were ordered
descending then the “last value” would actually be the first
value chronologically. As of this release, the plane_seed()
function internally now arranges data in case input data is not ordered
ascending by date.
Alpha release for the rplanes
package!
Several of the key package features include:
read_forecast()
: Data prep function to read in
forecasts in quantile format used by forecasting hubsto_signal()
: Constructor for the “signal” S3 class used
in the packageplane_seed()
: Function to create the baseline
characteristics from observed data for a given range of datesplane_score()
: Wrapper to run plausibility components
independently across all locationsAs of this release, there are five plausibility components included
rplanes
. We will continue to develop the package to add
components, update functionality, and address any issues as needed.
For more information on features and use-cases, refer to the “Basic
Usage” vignette on the package
website or in the R console:
vignette("basic-usage", package="rplanes")