> On 18 Jul 2019, at 23:49, Eric Barnhill <ericbarnh...@gmail.com> wrote: > > I suggested the following grammar to aim for in our meeting today with the > developing OLS module. If you see anything you'd prefer to change let's > establish it now , if anyone doesn't like it later, it's on me. > > RegressionData data = RegressionDataLoader.of(double[][] y, double[] x);
Maybe: RegressionData data = Regressions.newRegressionData(double[][] y, double[] x); RegressionData data = Regressions.newData(double[][] y, double[] x); ? Note that the idea that either the x or y of the RegressionData may want to be changed was also raised. This could use a Builder pattern: RegressionData data = Regressions.newDataBuilder() .setY(double[][] y) .setX(double[] x) .build(); Or some variant of. Something for the future. > Regression ols = new OLSRegression(); > RegressionResults results = ols.regress(data); > betas = results.getBetas() ; > > where: > RegressionData is an interface > RegressionDataLoader is a factory class and of() a (possibly overloaded) > static method > Regression is an interface, implemented by OLSRegression > RegressionResults is an interface, the specific class returned is > OLSResults which implements it. > betas are the intercept and slopes of the regression model > > I think this preserves abstraction at the levels desired, since we will > want in future flexibility as to regression type, posslble state parameters > set on the regression object, and results contents and format. But also > doesn't take on any unnecessary abstractions. > > Eric