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
[REVIEW]: MarSwitching.jl: A Julia package for Markov switching dynamic models #6441
Comments
Hello humans, I'm @editorialbot, a robot that can help you with some common editorial tasks. For a list of things I can do to help you, just type:
For example, to regenerate the paper pdf after making changes in the paper's md or bib files, type:
|
|
Software report:
Commit count by author:
|
|
Paper file info: 📄 Wordcount for ✅ The paper includes a |
License info: ✅ License found: |
@editorialbot generate pdf |
|
@m-dadej - Could you please fix the paper metadata before reviewing process starts? The output of the previous message may help how to indicate the error. Thank you in advance. |
@editorialbot generate pdf |
@y1my1, @mkitti - Dear reviewers, you can start with creating your task lists. In that list, there are several tasks. Whenever you perform a task, you can check on the corresponding checkbox. Since the review process of JOSS is interactive, you can always interact with the author, the other reviewers, and the editor during the process. You can open issues and pull requests in the target repo. Please mention the url of this page in there so we can keep tracking what is going on out of our world. Please create your tasklist by typing
Thank you in advance. |
Review checklist for @y1my1Conflict of interest
Code of Conduct
General checks
Functionality
Documentation
Software paper
|
Overall, this is a good mature package for achieving what the author intends to do. I could tell the author has put a lot of effort into programming the software and writing the documentation. I have some minor issues with the following Functionality
I was trying to verify whether the package can replicate the results of a basic regression model I found here (data could be found here). However, the results I got from this package seem to be quite different from what I can get from statsmodel (Python) and Stata (statsmodel and Stata gave almost the same results). See attached graph below
I tried to compare the performance of the corresponding methods in the package and statsmodel (Python). I generated a simulated data of 10000 rows, following this example. The results don't seem to be that different, at least on my MacBook (see below). However, I may not be doing it the right way; it would be good if the author could document how he did the performance test. Documentation
There are no community guidelines, but this should be an easy fix. |
Review checklist for @mkittiConflict of interest
Code of Conduct
General checks
Functionality
Documentation
Software paper
|
Thank you for your comments y1my1 and sorry for delayed response, I was busy with my Phd. Regarding the functionality comment. The way you defined a model with
That being said, a current version of the package still gives some of the estimates a bit off than in statsmodels: The one intercept now is way different. I think some time ago I compared it but disregarded the issue as the rest of the examples matches my package. Plus, the Matlab package If you install the github version of the package you can now replicate the results from statsmodels. Regarding the performance comparison. The code for benchmark is in benchmark folder. The readme example can give different results as benchmark (in terms of relative performance), because the model is different (less complex). In the benchmark code I estimate 3 regime, 1 non-switching and 1 switching exogenous variable model. That being said, I compare the readme example and the relative performance between statsmodel is smaller. MarSwitching is ~2x faster. But I am unable to replicate your results, even though the code on your screen shoot seems to be fine. About community guidelines, it's a good idea. I will write them soon. |
@m-dadej - Do you think the first sentence in the article is a bit too assertive? I believe there are other packages in Julia that do similar or identical tasks. Perhaps if you soften the first sentence and refer to packages that perform the same or similar tasks, it would be better. |
I have not seen any package that do identical task. There is a package to model hidden Markov models (https://github.com/gdalle/HiddenMarkovModels.jl) which may allow similar estimation. However as you can see in its example, it requires additional programming from user in order to estimate a rather simple Markov switching model. Do you have any other package in mind that I missed? |
@m-dadej - Yes, you can refer to the package, emphasizing that it can address the same types of problems with additional effort, while highlighting that your package is capable of efficiently handling these tasks in a smoother manner rather than a sharp one like the current one. Thank you in advance. |
@editorialbot generate pdf |
For the examples, an environment including a Project.toml and Manifest.toml should be included with the repository. This would allow user to reproduce the examples with the exact versions of the packages used. Some of the examples use data included in the package as follows: df = CSV.read("my_assets/philips.csv", DataFrame, missingstring = "NA")
df = CSV.read("my_assets/df_spx.csv", DataFrame) I might make those relative to the path of the package that the user installed so that no additional work needs to be done for the user to try the examples. They would otherwise have to clone the repository, but this is not necessary since the files are already installed. philips_csv_path = joinpath(
dirname(pathof(MarSwitching)),
"../docs/src/man/examples/my_assets/philips.csv"
)
df = CSV.read(philips_csv_path, DataFrame, missingstring = "NA")
df_spx_csv_path = joinpath(
dirname(pathof(MarSwitching)),
"../docs/src/man/examples/my_assets/df_spx.csv"
)
df = CSV.read(df_spx_csv_path, DataFrame) |
The reference and limitations of HiddenMarkovModels.jl would be greatly appreciated. Users may be trying to decide between the two packages and a comparison of this package that would be very useful. |
I see Community Guidelines in the README.md of the Github repository, but not in the documentation itself. https://github.com/m-dadej/MarSwitching.jl/blob/main/README.md#contributing Please include this information in https://m-dadej.github.io/MarSwitching.jl/ |
Overall, MarSwitching.jl is an important contribution to the field, allowing Markov switching dynamic models to be simulated and analyzed in the Julia Programming Langauge. Comparisons are provided to packages in other langauges. Comprehensive examples are provided. The documentation and paper are well written and organized. Additional comparisons and contrasts to existing packages in the Julia ecosystem would be appreciated as others have noted in this review. I also suggested a few minor changes to make it easier to run the examples by referencing data files relative to the installed package. If the concerns raised above in my own review and those are the other reviewer are addressed, I would recommend the paper for publication. I apologize for the delay in reviewing the submission. |
Minor correction
The "a" should be inserted. |
The performance difference we saw may be because of the different environments we are using. I updated Julia to the newest version (1.10.3) and was able to see MarSwitching runs 3 times faster compared with statsmodel. I would recommend adding a note of what environment is used. In addition, I am not sure I see people use "," as equivalent to "." anywhere, e.g., "6,7", which is hard to read, at least to me. |
@m-dadej - Please consider the changes and additions suggested by our reviewers, and then ping us again. Thank you in advance. |
Hey @jbytecode I added changes according to the reveiwer'ssuggestions. @mkitti project.toml and manifest.toml are now in the examples folder and the scripts now have the path generating function you sugested. The contribution guidelines are also in docs now. About the HiddenMarkovModels.jl comparison. The last paragraph in statement of need now reads:
I did not elaborate further as the paper is already pretty long. Of course I am open to any suggestions. @y1my1 I added the information regarding the environment. The paragraph below the benchmark table now reads:
The commas are removed as well. |
Submitting author: @m-dadej (Mateusz Dadej)
Repository: https://github.com/m-dadej/MarSwitching.jl
Branch with paper.md (empty if default branch): joss
Version: 0.2.2
Editor: @jbytecode
Reviewers: @y1my1, @mkitti
Archive: Pending
Status
Status badge code:
Reviewers and authors:
Please avoid lengthy details of difficulties in the review thread. Instead, please create a new issue in the target repository and link to those issues (especially acceptance-blockers) by leaving comments in the review thread below. (For completists: if the target issue tracker is also on GitHub, linking the review thread in the issue or vice versa will create corresponding breadcrumb trails in the link target.)
Reviewer instructions & questions
@y1my1 & @mkitti, your review will be checklist based. Each of you will have a separate checklist that you should update when carrying out your review.
First of all you need to run this command in a separate comment to create the checklist:
The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html. Any questions/concerns please let @jbytecode know.
✨ Please start on your review when you are able, and be sure to complete your review in the next six weeks, at the very latest ✨
Checklists
📝 Checklist for @y1my1
📝 Checklist for @mkitti
The text was updated successfully, but these errors were encountered: