-
-
Notifications
You must be signed in to change notification settings - Fork 104
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
dynamite: Bayesian Modeling and Causal Inference for Multivariate Longitudinal Data #554
Comments
Thanks for submitting to rOpenSci, our editors and @ropensci-review-bot will reply soon. Type |
🚀 Editor check started 👋 |
Oops, something went wrong with our automatic package checks. Our developers have been notified and package checks will appear here as soon as we've resolved the issue. Sorry for any inconvenience. |
@ropensci-review-bot check package |
Thanks, about to send the query. |
🚀 Editor check started 👋 |
Checks for dynamite (v0.0.1)git hash: a8d932ca
Important: All failing checks above must be addressed prior to proceeding Package License: GPL (>= 3) 1. rOpenSci Statistical Standards (
|
type | package | ncalls |
---|---|---|
internal | base | 1102 |
internal | dynamite | 418 |
internal | graphics | 21 |
internal | methods | 3 |
imports | utils | 81 |
imports | stats | 59 |
imports | dplyr | 29 |
imports | rlang | 16 |
imports | checkmate | 11 |
imports | glue | 11 |
imports | cli | 6 |
imports | ggplot2 | 4 |
imports | posterior | 4 |
imports | tidyr | 4 |
imports | rstan | 3 |
imports | data.table | 2 |
imports | bayesplot | 1 |
imports | MASS | NA |
suggests | covr | NA |
suggests | knitr | NA |
suggests | plm | NA |
suggests | rmarkdown | NA |
suggests | testthat | NA |
linking_to | NA | NA |
Click below for tallies of functions used in each package. Locations of each call within this package may be generated locally by running 's <- pkgstats::pkgstats(<path/to/repo>)', and examining the 'external_calls' table.
base
c (108), list (96), length (69), paste0 (66), args (53), for (47), attr (44), data.frame (39), as.list (32), match.call (32), rep (31), seq_len (25), unique (25), do.call (22), character (19), which (18), vapply (17), is.na (16), names (16), logical (15), seq_along (15), drop (13), by (12), deparse1 (11), is.null (10), mean (10), nzchar (10), all (9), apply (9), debug (9), lapply (9), parent.frame (9), as.integer (7), integer (7), rank (7), seq.int (7), sort (6), unlist (6), array (5), assign (5), colnames (5), dim (5), log (5), message (5), mode (5), nrow (5), try (5), vector (5), as.numeric (4), call (4), diff (4), eval (4), gsub (4), as.data.frame (3), cbind (3), I (3), identical (3), setdiff (3), sub (3), sum (3), any (2), aperm (2), expand.grid (2), levels (2), max (2), ncol (2), seq (2), structure (2), suppressWarnings (2), t (2), beta (1), class (1), det (1), diag (1), duplicated (1), get (1), gl (1), gregexec (1), ifelse (1), intersect (1), is.factor (1), is.finite (1), match (1), min (1), new.env (1), numeric (1), parse (1), paste (1), prod (1), range (1), regmatches (1), replace (1), replicate (1), row.names (1), sample (1), sample.int (1), signif (1), strsplit (1), substitute (1), typeof (1), union (1), warning (1), which.max (1), which.min (1), with (1)
dynamite
ifelse_ (84), paste_rows (41), get_responses (17), data_lines_default (10), get_predictors (10), onlyif (10), model_lines_default (9), warning_ (9), prepare_channel_default (8), formula_rhs (6), get_quoted (5), as.data.frame.dynamitefit (4), get_families (4), has_past (4), coef.dynamitefit (3), evaluate_specials (3), get_formulas (3), assign_deterministic (2), complete_lags (2), create_blocks (2), cs (2), default_priors (2), default_priors_categorical (2), deterministic_response (2), extract_lags (2), extract_nonlags (2), find_lags (2), formula_lhs (2), formula_past (2), formula_terms (2), full_model.matrix (2), full_model.matrix_predict (2), get_originals (2), get_terms (2), indenter_ (2), join_dynamiteformulas (2), lag_ (2), parse_global_lags (2), parse_lags (2), parse_new_lags (2), parse_singleton_lags (2), prepare_eval_envs (2), prepare_lagged_response (2), stop_ (2), which_deterministic (2), which_stochastic (2), abort_factor (1), abort_negative (1), abort_nonunit (1), add_dynamiteformula (1), as_data_frame_alpha (1), as_data_frame_beta (1), as_data_frame_corr_nu (1), as_data_frame_default (1), as_data_frame_delta (1), as_data_frame_lambda (1), as_data_frame_nu (1), as_data_frame_omega (1), as_data_frame_omega_alpha (1), as_data_frame_phi (1), as_data_frame_sigma (1), as_data_frame_sigma_nu (1), as_data_frame_tau (1), as_data_frame_tau_alpha (1), as_draws_df.dynamitefit (1), as_draws.dynamitefit (1), assign_initial_values (1), assign_lags (1), assign_lags_init (1), aux (1), check_ndraws (1), check_newdata (1), check_priors (1), clear_nonfixed (1), confint.dynamitefit (1), create_blocks.default (1), create_data (1), create_functions (1), create_generated_quantities (1), create_model (1), create_parameters (1), create_transformed_data (1), create_transformed_parameters (1), data_lines_bernoulli (1), data_lines_beta (1), data_lines_binomial (1), data_lines_categorical (1), data_lines_exponential (1), data_lines_gamma (1), data_lines_gaussian (1), data_lines_negbin (1), data_lines_poisson (1), drop_terms (1), drop_unused (1), dynamite (1), dynamitechannel (1), dynamitefamily (1), dynamiteformula (1), dynamiteformula_ (1), evaluate_deterministic (1), fill_time (1), fill_time_predict (1), fitted.dynamitefit (1), formula_specials (1), formula.dynamitefit (1), generate_random_intercept (1), generate_sim_call (1), get_code (1), get_code.dynamitefit (1), get_code.dynamiteformula (1), get_data (1), get_data.dynamitefit (1), get_data.dynamiteformula (1), get_priors (1), get_priors.dynamitefit (1), get_priors.dynamiteformula (1), get_special_term_indices (1), impute_newdata (1), increment_formula (1), initialize_deterministic (1), is_supported (1), is.dynamitefamily (1), is.dynamitefit (1), is.dynamiteformula (1), lags (1), lines_wrap (1), locf (1), mcmc_diagnostics (1), mcmc_diagnostics.dynamitefit (1), message_ (1), model_lines_bernoulli (1), model_lines_beta (1), model_lines_binomial (1), model_lines_categorical (1), model_lines_exponential (1), model_lines_gamma (1), model_lines_gaussian (1), model_lines_negbin (1), model_lines_poisson (1), ndraws.dynamitefit (1), nobs.dynamitefit (1), parameters_lines_bernoulli (1), parameters_lines_beta (1), parameters_lines_binomial (1), parameters_lines_categorical (1), parameters_lines_default (1), parameters_lines_exponential (1), parameters_lines_gamma (1), parameters_lines_gaussian (1), parameters_lines_negbin (1), parameters_lines_poisson (1), parse_data (1), parse_newdata (1), parse_past (1), parse_present_lags (1), plot_betas (1), plot_deltas (1), plot_nus (1), plot.dynamitefit (1), predict_dynamitefit (1), predict.dynamitefit (1), prepare_channel_bernoulli (1), prepare_channel_beta (1), prepare_channel_binomial (1), prepare_channel_categorical (1), prepare_channel_exponential (1), prepare_channel_gamma (1), prepare_channel_gaussian (1), prepare_channel_negbin (1), prepare_channel_poisson (1), prepare_common_priors (1), prepare_prior (1), prepare_splines (1), prepare_stan_input (1), values (1), verify_lag (1)
utils
data (79), capture.output (1), combn (1)
stats
formula (21), var (7), df (5), sd (4), D (3), model.matrix.lm (3), na.action (3), na.pass (3), offset (3), complete.cases (2), setNames (2), terms (2), sigma (1)
dplyr
bind_rows (12), filter (7), mutate (3), summarise (3), left_join (2), matches (1), n (1)
graphics
mtext (10), title (9), pairs (2)
rlang
caller_env (16)
checkmate
test_character (3), test_flag (3), test_string (3), test_int (2)
glue
glue (11)
cli
cli_abort (2), qty (2), cli_inform (1), cli_warn (1)
ggplot2
labs (3), position_dodge (1)
posterior
summarise_draws (2), as_draws (1), ndraws (1)
tidyr
expand_grid (2), full_seq (1), unnest (1)
methods
is (2), new (1)
rstan
extract (2), check_hmc_diagnostics (1)
data.table
setDT (1), setkeyv (1)
bayesplot
mcmc_combo (1)
NOTE: Some imported packages appear to have no associated function calls; please ensure with author that these 'Imports' are listed appropriately.
3. Statistical Properties
This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.
Details of statistical properties (click to open)
The package has:
- code in R (100% in 30 files) and
- 2 authors
- 1 vignette
- 6 internal data files
- 14 imported packages
- 36 exported functions (median 7 lines of code)
- 404 non-exported functions in R (median 9 lines of code)
Statistical properties of package structure as distributional percentiles in relation to all current CRAN packages
The following terminology is used:
loc
= "Lines of Code"fn
= "function"exp
/not_exp
= exported / not exported
All parameters are explained as tooltips in the locally-rendered HTML version of this report generated by the checks_to_markdown()
function
The final measure (fn_call_network_size
) is the total number of calls between functions (in R), or more abstract relationships between code objects in other languages. Values are flagged as "noteworthy" when they lie in the upper or lower 5th percentile.
measure | value | percentile | noteworthy |
---|---|---|---|
files_R | 30 | 89.3 | |
files_vignettes | 2 | 85.7 | |
files_tests | 11 | 91.7 | |
loc_R | 5956 | 96.5 | TRUE |
loc_vignettes | 877 | 89.0 | |
loc_tests | 2413 | 95.3 | TRUE |
num_vignettes | 1 | 64.8 | |
data_size_total | 2661885 | 98.5 | TRUE |
data_size_median | 349085 | 96.0 | TRUE |
n_fns_r | 440 | 96.6 | TRUE |
n_fns_r_exported | 36 | 82.0 | |
n_fns_r_not_exported | 404 | 97.8 | TRUE |
n_fns_per_file_r | 8 | 83.4 | |
num_params_per_fn | 2 | 11.9 | |
loc_per_fn_r | 9 | 24.3 | |
loc_per_fn_r_exp | 7 | 13.5 | |
loc_per_fn_r_not_exp | 9 | 27.1 | |
rel_whitespace_R | 4 | 76.1 | |
rel_whitespace_vignettes | 13 | 68.1 | |
rel_whitespace_tests | 9 | 86.4 | |
doclines_per_fn_exp | 37 | 45.3 | |
doclines_per_fn_not_exp | 0 | 0.0 | TRUE |
fn_call_network_size | 696 | 96.9 | TRUE |
3a. Network visualisation
Click to see the interactive network visualisation of calls between objects in package
4. goodpractice
and other checks
Details of goodpractice checks (click to open)
3a. Continuous Integration Badges
GitHub Workflow Results
id | name | conclusion | sha | run_number | date |
---|---|---|---|---|---|
2903919221 | R-CMD-check | success | a8d932 | 295 | 2022-08-22 |
2903919220 | test-coverage | success | a8d932 | 295 | 2022-08-22 |
3b. goodpractice
results
R CMD check
with rcmdcheck
R CMD check generated the following note:
- checking installed package size ... NOTE
installed size is 11.1Mb
sub-directories of 1Mb or more:
data 7.2Mb
doc 1.0Mb
R 2.5Mb
R CMD check generated the following check_fail:
- rcmdcheck_reasonable_installed_size
Test coverage with covr
Package coverage: 97.82
Cyclocomplexity with cyclocomp
No functions have cyclocomplexity >= 15
Static code analyses with lintr
lintr found the following 6 potential issues:
message | number of times |
---|---|
Avoid library() and require() calls in packages | 5 |
unexpected symbol | 1 |
5. Other Checks
Details of other checks (click to open)
✖️ The following 10 function names are duplicated in other packages:
-
aux
from seewave
-
get_code
from norgeo, rmonad, xpose
-
get_data
from canvasXpress.data, cbsodataR, cimir, completejourney, CVXR, danstat, deckgl, ecb, finnishgrid, ggPMX, ggvis, hydroscoper, insight, jtools, mapbayr, metacoder, missCompare, optimall, qrmtools, r4googleads, radiant.data, radous, rbedrock, rchallenge, rsimsum, SWIM, swissparl, tidyLPA, tidySEM, trending, tsmp, ugatsdb, xpose
-
get_priors
from CausalQueries, insight
-
lags
from smooth, tis, TTR
-
mcmc_diagnostics
from bpr, rater, rnmamod
-
obs
from metacoder, observer
-
plot_deltas
from spruce
-
random
from CoOL, decisionSupport, distributions3, gam, gamlss, ggdmc, lidR, messydates, simr, sodium
-
splines
from rpatrec
Package Versions
package | version |
---|---|
pkgstats | 0.1.1.20 |
pkgcheck | 0.1.0.9 |
srr | 0.0.1.178 |
Editor-in-Chief Instructions:
Processing may not proceed until the items marked with ✖️ have been resolved.
@santikka Thank you for your help debugging and improving our check system. Sorry the checks took so long to appear here. @adamhsparks Please ignore the failing checks. The duplicated names check will soon be downgraded from a fail to a note. The other check is brand new. @santikka Feel free to modify your repo to describe return values, but do so at your own leisure, and consider all checks as passing for now. Thanks for all the help! |
@mpadge No worries, glad to help! I will add the missing return values soon. |
@mpadge About the return values: the system does not seem to recognize function aliases. For example in the above,
|
@ropensci-review-bot assign @noamross as editor |
Assigned! @noamross is now the editor |
@ropensci-review-bot seeking reviewers |
Please add this badge to the README of your package repository: [](https://github.com/ropensci/software-review/issues/554) Furthermore, if your package does not have a NEWS.md file yet, please create one to capture the changes made during the review process. See https://devguide.ropensci.org/releasing.html#news |
@ropensci-review-bot assign @nicholasjclark as reviewer |
@nicholasjclark added to the reviewers list. Review due date is 2022-09-27. Thanks @nicholasjclark for accepting to review! Please refer to our reviewer guide. rOpenSci’s community is our best asset. We aim for reviews to be open, non-adversarial, and focused on improving software quality. Be respectful and kind! See our reviewers guide and code of conduct for more. |
@nicholasjclark: If you haven't done so, please fill this form for us to update our reviewers records. |
Package ReviewPlease check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide
DocumentationThe package includes all the following forms of documentation:
Functionality
Estimated hours spent reviewing: 5
Review CommentsThis is a very nicely-documented package that provides a rich set of functions all tailored towards a single purpose or estimating complex panel models and interrogating resulting models. The authors make good arguments as to why the package is needed, how it extends existing software and who the target audience is. I have not used these models personally so I found it a little difficult to understand how I would go about implementing them for my own purposes. On this note I do feel that the planned accompanying papers will be essential for introducing unfamiliar users to the package. Some extra detail in the vignette and readme could help to provide a bit more context about what the parameters mean and how the models can be interpreted, but overall this does not detract from the soundness of the package itself. The only issue I find in general testing is that I receive a single failure during unit testing: Error (test-recovery.R:22:3): parameters for the linear regression are recovered as with lm Error in All examples pass on my machine, and they are appropriate for demonstrating the functionality of the package. I do however have a few general notes: There appears to be a typo in the vignette on line 383 due to a missing closing parenthesis (change On line 398 in the vignette I receive the following error: On line 514 in the vignette, the text states that the output is a two-component Some guidelines for contributing could be listed explicitly if the authors would welcome community contributions The package has quite a few dependencies that make installation a lengthy process. Could any of this be streamlined? Also, the reliance on the newest version of I see no reason why the authors shouldn’t allow for The options for updating priors and for generating It is not clear how users can simulate from the prior to help inform model development. This would be a useful addition to vignettes / examples as it is an essential component of a modern Bayesian workflow
Very impressive and thorough set of unit tests Each function appears to have a standalone usage that is well documented Links to the code used for creation of example datasets are excellent tools for demonstrating how users can implement simulations in their own workflows |
Thank you for your review, @nicholasjclark! I note you used the non-statistical reviewer template. Would you be able to use the statistical one at https://stats-devguide.ropensci.org/pkgreview.html#pkgrev-template? My apologies, it looks like the one linked above is dead so you probably searched out and found that one. I am still seeking a second reviewer, @santikka. I suggest limiting updates until you have inputs from both. |
@LucyMcGowan: If you haven't done so, please fill this form for us to update our reviewers records. |
📆 @LucyMcGowan you have 2 days left before the due date for your review (2022-10-20). |
Hi @noamross! Would it be possible to get a status update regarding the review process? It has now been over one month since the second review deadline. |
Im so sorry I’m so behind! Hoping to wrap this up soon |
Package Review
Compliance with Standards
The authors identify 42 standards that they deem "Non-applicable". I agree with these designations, the majority describe methods that are out of scope for the project or not appropriate given the methods. The authors complied with the remaining 129 standards. In particular, the documentation and testing in this package is very thorough. For packages aiming for silver or gold badges:
General ReviewDocumentationThe package includes all the following forms of documentation:
I did find one TODO left in the AlgorithmsThe algorithms are encoded well. The language is appropriate, and all tests passed on my machine. TestingThis package has extensive testing and all tests passed on my machine. The examples and vignette, however, are not currently compiling, for example, when I run the first example of the library(dynamite)
fit <- dynamite(
dformula = obs(y ~ -1 + varying(~x), family = "gaussian") +
lags(type = "varying") +
splines(df = 20), gaussian_example, "id", "time",
chains = 1,
refresh = 0
)
#> Error in `[.data.table`(data, idx, cl, env = list(cl = cl)): unused argument (env = list(cl = cl)) Created on 2022-12-06 by the reprex package (v2.0.1) EDIT updating to the development version of the Visualisation (where appropriate)
Package Design
Estimated hours spent reviewing: 4
|
@LucyMcGowan Thank you for the review! Regarding the error, |
Package ReviewPlease check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide
Compliance with Standards
The following standards currently deemed non-applicable (through tags of Please also comment on any standards which you consider either particularly well, or insufficiently, documented. For packages aiming for silver or gold badges:
The authors have been able to comply with 129 standards with only 42 N/A standards across the “Bayesian and Monte Carlo” and “Regression and Supervised Learning” categories and the function design is very well compartmentalised in my view General ReviewDocumentationThe package includes all the following forms of documentation:
The following sections of this template include questions intended to be used as guides to provide general, descriptive responses. Please remove this, and any subsequent lines that are not relevant or necessary for your final review. Algorithms
As the maintainers have now allowed for Testing
Very impressive and thorough set of unit tests Visualisation (where appropriate)
Visualisations make use of Package Design
Function designs and levels of documentation are excellent and the returned structures will integrate very well with popular post-processing packages designed to work with
Estimated hours spent reviewing: 5
|
Thank you! I updated to the dev version of |
@LucyMcGowan It seems that at some point the development version installation function of |
Based on the reviews, we have taken some additional steps to make the package installation more straightforward and the requirements less strict:
|
@ropensci-review-bot submit review #554 (comment) time 5 |
@ropensci-review-bot submit review #554 (comment) time 4 |
Thank you all for bearing with us and following up! @LucyMcGowan and @nicholasjclark, you seem to have indicated in your follow-ups, but to be unambiguous, do the updates resolve any outstanding issues for acceptance at gold level? |
Yes, I approve acceptance at the gold level. Thanks @noamross! |
Yes I approve acceptance as well. Thanks very much |
@ropensci-review-bot approve dynamite |
Approved! Thanks @santikka for submitting and @nicholasjclark, @LucyMcGowan for your reviews! 😁 To-dos:
Should you want to acknowledge your reviewers in your package DESCRIPTION, you can do so by making them Welcome aboard! We'd love to host a post about your package - either a short introduction to it with an example for a technical audience or a longer post with some narrative about its development or something you learned, and an example of its use for a broader readership. If you are interested, consult the blog guide, and tag @ropensci/blog-editors in your reply. They will get in touch about timing and can answer any questions. We maintain an online book with our best practice and tips, this chapter starts the 3d section that's about guidance for after onboarding (with advice on releases, package marketing, GitHub grooming); the guide also feature CRAN gotchas. Please tell us what could be improved. Last but not least, you can volunteer as a reviewer via filling a short form. |
@ropensci-review-bot finalize transfer of dynamite |
Transfer completed. |
Date accepted: 2022-12-13
Due date for @nicholasjclark: 2022-09-27Submitting Author Name: Santtu Tikka
Submitting Author Github Handle: @santikka
Other Package Authors Github handles: @helske
Repository: https://github.com/santikka/dynamite
Version submitted: 0.0.1
Submission type: Stats
Badge grade: gold
Editor: @noamross
Reviewers: @nicholasjclark, @LucyMcGowan
Due date for @LucyMcGowan: 2022-10-20
Archive: TBD
Version accepted: TBD
Language: en
Pre-submission Inquiry
General Information
The package is mainly intended for applied researchers working with complex panel data.
Panel data is common in many scientific fields, especially in sociology and econometrics. For example, analysing individual-level life-course data is valuable for assessing the effects of policy reforms and other interventions.
The
dynamite
R package provides easy-to-use interface for Bayesian inference of complex panel (time series) data comprising of multiple measurements per multiple individuals measured in time. The main features distinguishing the package and the underlying methodology from many other approaches are:There are several R packages in CRAN focusing on panel data analysis including but not limited to:
plm
for linear panel data models.fixest
for fixed effects and different distributions of response variables (based onstats::family
).panelr
for "within-between" models which combine fixed effect and random effect models.lavaan
for general structural equation modelling, and thus can be used to estimate various panel data models such as cross-lagged panel models with fixed or random intercepts.However, to the best of our knowledge, there are no other R packages (or software in general) that support all features of
dynamite
simultaneously. Thus The first implementation of a novel algorithm seems most applicable.Not applicable.
Badging
Gold.
We designed
dynamite
from the ground up with the standards in mind and thus we think the package fulfills all four aspects. We have been able to comply with 129 standards with only 42 N/A standards across the "Bayesian and Monte Carlo" and "Regression and Supervised Learning" categories. The package is very general and capable of supporting a wide range of data and model structures as demonstrated by the examples and the package tests. In our opinion, the internal structure of the package is also well motivated and compartmentalized. We have also tried to carefully select the package dependencies and keep them to a minimum.Technical checks
Confirm each of the following by checking the box.
autotest
checks on the package, and ensured no tests fail.autotest
reports failures for the following tests:time
andgroup
parameters of several functions are case dependent. This is by design, as both of these parameters correspond to column names of the input data. While not entirely sure, we believe the remaining failures occur because the functionmcmc_diagnostic
produces messages while not being a print or a summary method, but this is also by design as the function outputs diagnostic messages related to the MCMC runs. The output ofautotest
is not very clear on this matter, as all columns are just filled withNA
values.srr_stats_pre_submit()
function confirms this package may be submitted.pkgcheck()
function confirms this package may be submitted - alternatively, please explain reasons for any checks which your package is unable to pass.This package:
Publication options
Code of conduct
The text was updated successfully, but these errors were encountered: