Redesign and Expansion of the SOCR Modeler Project
From Socr
(Difference between revisions)
Line 30: | Line 30: | ||
* [http://socr.ucla.edu/htmls/dist/ SOCR Distribution Applets] | * [http://socr.ucla.edu/htmls/dist/ SOCR Distribution Applets] | ||
* [http://code.google.com/p/socr/source/browse/#svn%2Ftrunk%2FSOCR2.0%2Fsrc%2Fedu%2Fucla%2Fstat%2FSOCR%2Fdistributions Distributions Source Code] | * [http://code.google.com/p/socr/source/browse/#svn%2Ftrunk%2FSOCR2.0%2Fsrc%2Fedu%2Fucla%2Fstat%2FSOCR%2Fdistributions Distributions Source Code] | ||
+ | |||
+ | ===Technical Details=== | ||
+ | Here are some of the details about designing and implementing HTML5 version of the SOCR Modeler: | ||
+ | * [https://github.com/SOCR/SOCR-Java/tree/master/src/edu/ucla/stat/SOCR/modeler Current Java Modeler Code] | ||
+ | * [https://github.com/SOCR/SOCR-Java/tree/master/src/edu/ucla/stat/SOCR/distributions Current Java Distribution Code] | ||
+ | * [http://www.socr.ucla.edu/htmls/mod/ Current SOCR Modeler Java Tool] | ||
+ | * [https://github.com/Distributome/distributome/blob/master/web_site/V.3.0/calc JavaScript Implementations of the Distributions (Distributome Project)] | ||
+ | ** These need to be extended to include the same parameter-estimation (MLE) methods (paramEstimate) as in the Java source code | ||
+ | ** For example: The [https://github.com/SOCR/SOCR-Java/blob/master/src/edu/ucla/stat/SOCR/distributions/NormalDistribution.java normal distribution Java Code] has this method that needs to be pushed from Java to the [https://github.com/Distributome/distributome/blob/master/web_site/V.3.0/calc/NormalCalculator.js corresponding JavaScript implementation of Normal distribution]. | ||
+ | ::: public NormalDistribution(double[] distData) { | ||
+ | :::: paramEstimate(distData); | ||
+ | ::: } | ||
+ | ::::: public void paramEstimate(double[] distData) { | ||
+ | :::::: double mn = getMean(distData); | ||
+ | :::::: double std = Math.sqrt(getVariance(distData)); | ||
+ | :::::: setParameters(mn, std); | ||
+ | ::::: } | ||
+ | |||
+ | Clearly, for different distributions, the '''paramEstimate''' function will be different. However the Data-driven estimate calls ('''public XXX_Distribution(double[] distData)''') will always be the same. | ||
<hr> | <hr> |
Revision as of 17:03, 7 February 2017
Contents |
SOCR Project - Redesign & Expansion of the SOCR Modeler
Project Goal
To redesign and expand the utility of the SOCR Modeler in HTML5.
Background
Explore and research the SOCR Modeler first. The Modeler is one of the major SOCR packages and consists of a collection of applets that allow sampling/simulation and model-fitting. It currently allows fitting several distribution, Fourier or Wavelet models to real or simulated data.
Project specs
- Need to expand the framework of distribution models that are allowed to be fit to the data using the 40+ SOCR Distributions available in the SOCR Distributions package. This will not involve writing new distribution classes, but rather just utilizing the existent members (objects and methods) of the SOCR Distribution Package.
- All Code must be pure HTML5-compatible JavaScript/JQuery.
- Need to improve on the current Graph/Plotting functionality, perhaps by using SOCR Charts (see Charts doc).
- Need to improve the entire design of the SOCR Modeler - interface, computation and visualization.
- Need to expand the calculation methods for parameter estimation for many other SOCR distributions. This reference discusses classical statistical estimation theory, concentrating on maximum likelihood estimation in parametric models, from the point of view of physical science and engineering (Adriaan van den Bos, Parameter Estimation for Scientists and Engineers, Wiley, 2007, ISBN 978-0-470-14781-8).
Data Import/Input
- Copy-Paste: user copy-pastes data using the mouse from a CSV/XLS/HTML table into a data spreadsheet.
- Interactive Graph Entry: Moderer always displays the distribution (frequency histogram for numerical data, and/or the analytical probability distribution for modeling). User can click on the graph and effectively alter (change, pull, push the histogram and/or modeling graph up or down at the X-coordinate on the graph (see how the current modeler does that (http://socr.ucla.edu/htmls/SOCR_Modeler.html).
- RNG: Random Number Generation (see the current Modeler RNG engine). Of course, we already have the JS versions of the simulators/sampling functionality for over 50+ distributions (http://www.distributome.org/js/calc/index.html, http://www.distributome.org/js/calc/distributions.js, http://distributome.googlecode.com/).
- DB API: Use data from available API’s. See the Worldbank example: This would allow us access to an enormous collection of real (social, econ, Geo-spatial, environmental, etc.) data. See an example of Google Open-Data Explorer utilization of the Worldbank data API.
References
The following references would be useful for this project:
- This Wiki Project Description
- SOCR Source Code
- Available/Implemented SOCR Modelers
- Modeler Activities
- Available/Implemented SOCR Distributions
- SOCR Distribution Applets
- Distributions Source Code
Technical Details
Here are some of the details about designing and implementing HTML5 version of the SOCR Modeler:
- Current Java Modeler Code
- Current Java Distribution Code
- Current SOCR Modeler Java Tool
- JavaScript Implementations of the Distributions (Distributome Project)
- These need to be extended to include the same parameter-estimation (MLE) methods (paramEstimate) as in the Java source code
- For example: The normal distribution Java Code has this method that needs to be pushed from Java to the corresponding JavaScript implementation of Normal distribution.
- public NormalDistribution(double[] distData) {
- paramEstimate(distData);
- }
- public void paramEstimate(double[] distData) {
- double mn = getMean(distData);
- double std = Math.sqrt(getVariance(distData));
- setParameters(mn, std);
- }
- public void paramEstimate(double[] distData) {
- public NormalDistribution(double[] distData) {
Clearly, for different distributions, the paramEstimate function will be different. However the Data-driven estimate calls (public XXX_Distribution(double[] distData)) will always be the same.
Available_SOCR_Development_Projects
SOCR_ProposalSubmissionGuidelines
Translate this page: