-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bumbl submission #2
Comments
I'm not sure I understand tests #2 or 6. For 2, is it suggesting that you should be able to pass a formula as a character vector? For 6, I have documented what is returned with |
Thanks for the response @Aariq. This should help clarify:
Not necessarily, but it should certainly be interpreted as indicating an unhelpful error message, and a corresponding implication that either formulae as character vectors should be appropriately processed, or that appropriately informative errors be issued when that is done.
Thanks for that - this workflow is literally being test-run by, and developed in response to these submissions. The checking of return values has been updated in the output above, and should now make your suggested course of action clearer.
That was also a glitch which has now been rectified, and no longer appears in your output. Please feel free to ask here (or via private slack channels) about any further aspects which we or the code might have failed to clarify. Thanks! |
Thanks @Aariq for your submission and improvements that have already been made to the package. The few remaining diagnostic message produced by That means we are now able to proceed to the formal review stage, for which members of the project's advisory board @rkillick and @Paula-Moraga have kindly agreed to review your package. They are now requested to perform a two-stage review, the first part involving assessment of the package against the standards as they are currently drafted, with the second being a more "traditional" review. We hope, by the time we proceed to this second component, that many aspects which might otherwise have arisen within a "traditional" unstructured review will already have been covered, and will thereby make the review process notably easier. Our review system will ultimately perform much of the preceding automated assessment prior to actual submission, and reviewers will be provided with a high-level interactive graphical overview of the package's functions and their inter-relationships. Fortunately here, the package has sufficiently few functions that the graph can just be pasted here in static form: (That can be reproduced by running Instructions for review@rkillick and @Paula-Moraga, could you please now asses the Please do this in two phases:
In each case, please only note those standards which you judge the package not to conform to, along with a description of what you would expect this particular software package to do in order to conform to each standard. When you do that, please provide sufficient information on which standard you are referring to. (The standards themselves are all enumerated, but not yet at a necessarily stable state, so please provide enough information for anyone to clearly know which standard you are referring to regardless of potential changes in nomenclature.) Please also note as a separate list all those standards which you think should not apply to this package, along with brief explanations of why. Importantly, to aid us in refining the standards which will ultimately guide the peer review of statistical software, we also ask you to please consider whether you perceive any aspects of software (design, functionality, algorithmic implementations or applications, testing, and any other aspects you can think of) which you think might be able to be addressed by standards, and yet which are not addressed by our standards in their current form. To sum up, please post the following in this issue:
Once you've done that, we'll ask to you proceed to a more general review of the software, for which we'll provide more detail at that time. Thanks all for agreeing to be part of this! |
@rkillick, @Paula-Moraga Neglected one piece of important information: Due dateWe would like to have this review phase completed within 4 weeks, which we'll time from today, so by the 13th of November 2020. We accordingly suggest that you aim to have the first of the two tasks completed within two weeks, by the 30th October. Could you both please also record approximately how much time you have spent on each review stage. Thank you! |
Update for reviewers @rkillick, @Paula-Moraga, note that this repo now includes an R package which enables you to get a pre-formatted checklist for your reviews (inspired by, and with gratitude to, co-board member @stephaniehicks) by running the following lines: remotes::install_github("ropenscilabs/statistical-software-review")
library(statsoftrev) # the name of the package
rssr_standards_checklist (category = "time-series") That will produce a markdown-formatted checklist in your clipboard ready to paste where you like, or you can use a ping @noamross so you'll be notified of these conversations. |
Initial Review of Bumbl (git hash 1bf981): Applying General Software Standards:
Test coverage:
Applying Time Series software standards:
|
NOTE: all my issues still arise in the new version (git hash ba1371), just the reference to line numbers is different. |
Not covered in standards but should be:
|
Thanks @rkillick both for the checklist of points, and those final suggestions for improving the standards. It would be great if you could update current standards by inserting any new aspects which you think could or should be inserted - there are explicit instructions on the source repo for the standards. @Aariq the next steps for you will be to make any modifications you deem necessary in response both to @rkillick's points above, and those of @Paula-Moraga. It's up to you whether you decide to already respond to these comments, or wait for equivalent comments from @Paula-Moraga. |
Standards that package fails to meetgit hash ba1371a Documentation
Documentation should be improved. For example, the documentation of functions Also the documentation of
The package does not provide the code to reproduce the results given in the reference provided (Crone and Williams (2016)). Input Structures
Functions should check the type of arguments. For example, right now we can call
Missing data are not checked.
The package does not provide options to handle missing data.
There are functions that could pass data with missing values to base routines with default
where
The package does not provide options to handle undefined data. Input data structures and validation
This is not well documented. For example,
This is not done. The documentation does not explain the type of data that should be passed, and the R code does not check the arguments passed.
This is not done. For example, one can call
This is not done. There is some validation code at the beginning of the Pre-processing and Variable Transformation
The package does not check for missing data.
The package does not provide functions to specify how to handle missing data.
There are functions that could pass data with missing values to base routines with default
where
Documentation should be improved to explain the type of arguments to be passed and possible assumptions. Visualization
Plots clearly distinguish between data which are represented by points and model predictions which are represented with red lines, but a legend would help in understanding the plot better. Other aspects not covered in the current standards
|
Thanks so much @Paula-Moraga! Could you please give an estimate of how long you spent on that stage of the review? And @Aariq this checklist was intentionally compared with your package at the time this issue was opened, not with current version. Could you please indicate whether current version has addressed all of those issues, or if not, then please notify here once you have either addressed all issues, or otherwise explained why you deem those issues not to be relevant. Thanks! |
@mpadge I took me around 3 hours to read the paper and review the package. |
@mpadge Similar amount of time for me, around 3.5 hours for the first pass and then an hour for the second pass. Faster the second time as I'd just done the first and was now familiar with the package! |
Thank you @rkillick and @Paula-Moraga for the comments! I made a lot of improvements (I think) based on your suggestions and I'll try to post a response to your comments in the next few days. Since there are a lot of comments, I think I will address both of your suggestions together, but break up my responses by the standard (e.g. G1, G2, G4, TS1, etc.) |
G1G1.0 Statistical Software should list at least one primary reference from published academic literature.
G1.1 All statistical terminology should be clarified and unambiguously defined.
G1.2 Software should use roxygen to documentation all functions.
G1.3 Software should include all code necessary to reproduce results which form the basis of performance claims made in associated publications.
|
G2G2.1 Provide explicit secondary documentation of expectations on data types of all vector inputs (see the above list).
G2.3a Use match.arg() or equivalent where applicable to only permit expected values.
G2.10 Statistical Software should implement appropriate checks for missing data as part of initial pre-processing prior to passing data to analytic algorithms.
G2.11 Where possible, all functions should provide options for users to specify how to handle missing (NA) data
G2.12 Functions should never assume non-missingness, and should never pass data with potential missing values to any base routines with default na.rm = FALSE-type parameters
G2.13 All functions should also provide options to handle undefined values (e.g., NaN, Inf and -Inf), including potentially ignoring or removing such values.
|
G4G4.2b Explicit tests should demonstrate conditions which trigger every one of those messages, and should compare the result with expected values.
G4.4 Correctness tests to test that statistical algorithms produce expected results to some fixed test data sets.
G4.5 Correctness tests should be run with a fixed random seed.
G4.8 Edge condition tests to test that these conditions produce expected behaviour such as clear warnings or errors when confronted with data with extreme properties.
G4.9 Noise susceptibility tests. Packages should test for expected stochastic behaviour.
G.4.10-12 Extended testing.
|
TS1TS1.0 Time Series Software should explicitly document the types and classes of input data able to be passed to each function
TS1.1 Time Series Software should accept input data in as many time series specific classes as possible.
TS1.2 Time Series Software should implement validation routines to confirm that inputs are of acceptable classes
TS1.3 Time Series Software should implement a single pre-processing routine to validate input data, and to appropriately transform it to a single uniform type to be passed to all subsequent data-processing functions (the tsbox package provides one convenient approach for this).
TS1.7 Accept inputs defined via the units package for attributing SI units to R vectors.
TS1.8 Where time intervals or periods may be days or months, be explicit about the system used to represent such, particularly regarding whether a calendar system is used, or whether a year is presumed to have 365 days, 365.2422 days, or some other value.
|
TS2TS2.0 Appropriate checks for missing data, and associated transformation routines, should be performed as part of initial pre-processing prior to passing data to analytic algorithms.
TS2.1 Time Series Software which presumes or requires regular data should only allow explicit* missing values, and should issue appropriate diagnostic messages, potentially including errors, in response to any implicit missing values.*
TS2.2 Where possible, all functions should provide options for users to specify how to handle missing data,
TS2.3 Functions should never assume non-missingness, and should never pass data with potential missing values to any base routines with default na.rm = FALSE-type parameters
TS2.5 Explicitly document all assumptions and/or requirements of stationarity
TS2.6 Implement appropriate checks for all relevant forms of stationarity,
|
TS5TS5.0 Implement default plot methods for any implemented class system.
TS5.5 Provide options to determine whether plots of data with missing values should generate continuous or broken lines
TS5.8 By default provide clear visual distinction between model (input) values and forecast (output) values.
|
Other Comments
|
For the extended testing maybe you could include a catch in the function that returns a warning if you think that 50 values will be too small for larger datasets. In the longer term you may want to look at other packages such as |
I agree that the way bumbl finds the changepoint is not great, but I feel like improving it is beyond the scope of what I'm trying to do right now. I like the idea of adding a warning for larger datasets to increase the number of values to test. I will think about what the threshold for that warning should be. |
Thanks @Aariq for volunteering to submit your
bumbl
package for trial "soft submission" to rOpenSci's new system for peer review of statistical software. This issue includes output from our automated assement and reporting tools developed as part of this new system. These currently function as the following two distinct components (which will be integrated later):packgraph
autotest
data.frame
input is removed.Created on 2020-09-27 by the reprex package (v0.3.0)
The output of
autotest
includes a columnyaml_hash
. This in turn refers to theyaml
specification used to generate the autotests, which can be generated locally by runningexamples_to_yaml (<path>/<to>/<package>)
. Those contain theyaml_hash
values, and finding the matching value will show you the base code used to trigger the diagnostic messages. Theoperation
column should then provide a sufficient description of what has been mutated with regard to the structure defined in theyaml
.As there is only one primary function here, you should be able to address most of the aspects raised in the
autotest
output.The text was updated successfully, but these errors were encountered: