Hey Observables folks
Here’s something that I’d like to discuss with you:
Are you planning on using Observable notebooks for research / teaching? Or are you already doing so? If not, what is keeping you from doing it?
Here’s my current stance on it:
Pros
One idea I absolutely love about Observables is that users do not need to
install any software in order to edit and run a notebook.
You can just send a link to supervisors, students, reviewers, fellow researchers,
as well as your parents, and they can have a look at your notebook and play
around with it.
Another great benefit is that due to the reactive approach, the execution order does not matter in an Observable notebook. Just last month the JetBrains Datalore Team examined 10.000.000 Jupyter notebooks on Github, and found that ~36% would not run right away due to out-of-order execution source.
I think the combination of the two points not only shows the potential of Observables to overcome the technical part of the reproducibility crisis, but also highlights the lower entrance barrier to statistics / data science / programming in general.
Cons
Unfortunately, there still seems to be a lack of a well maintained (advanced) statistics library in the JS ecosystem, especially when it comes to doing regression analysis.
While I think simple-statistics,
jstats, and ml.js)
are great libraries, they are missing the functionality to perform (still relatively basic) regressions on (1) multiple-linear models (2) linear models including higher powers of one or more predictor variables (3) models with interaction terms (4) models including weights (see here for a non-extensive list).
The lack of these functions currently pushes me (and probably others) to using Python/R/Matlab for the actual data analysis, and uploading the results to Observable afterwards for visualization.
Unfortunately, this way we’re losing the benefit of having the data, analysis, and visualization all in one place, where students / fellow researchers / reviewers etc. can easily play around with the data / method.
Synopsis
While I am aware that it is possible to execute R from an Observable notebook, I still think that there is a need for an actual JS (or WebAssembly) implementation of the core functions (IMHO something similar to lm
would be needed the most).
Right now we are teaching students R, but I sometimes think teaching JS/Observable might get more people interested in the subject as it also allows them to produce Websites / d3 visualizations.
Really interested in your thoughts and ideas here!