> On 28 Oct 2019, at 17:55, Eric Barnhill <ericbarnhill@gmail.com> wrote:
>
> Here is a schematic for how the interface might be made more abstract.
>
> https://imgur.com/a/izx5Xkh <https://imgur.com/a/izx5Xkh>
Regression and RegressionResults both have a predict method with the same signature.
>
> In this case, we may want to just implement the simplest case, using Matrix
> and double[], for now.
>
> In principle the RegressionMetric class could extend a Metrics class later.
>
> Do you feel this would set up the library better for the future?
I know that the use case for a diagonal matrix only was put forward previously. So I can see
the Matrix abstraction as useful. But should this then be Matrix<E>.
You have Vector<E> for most methods to pass a 1D set of numeric data. But the RegressionData.of
method accepts a double[]. This should also be Vector<E>.
I am assuming that Vector is an abstraction of a 1D data object.
What are the possible values for <E>?
Double
double[]
Possibly complex numbers.
… ?
Such that Matrix<E> and Vector<E> just denote that the analysis is done on a matrix
and vector of the same type.
This would then require abstraction of all operations required by the regression objects such
as:
Vector<E> = Matrix<E>.multiply(Vector<E>)
Matrix<E> = Matrix<E>.transpose()
Etc.
Then you start by using concrete classes for Matrix<double[]> and Vector<double[]>.
I see that the nomenclature Matrix<double[]> is a bit of a misnomer as it may be confused
for Matrix<double[][]>. So this would be documented as <E> is the type of the
entire data for a single matrix dimension. The matrix is actually a E[].
>
> Eric
