docs: public double[] getLinearRegressionParameters(RandomVariable dependents) {
  
  		RandomVariable[] basisFunctions = basisFunctionsEstimator.getBasisFunctions();
  
  		synchronized (solverLock) {
  			if(solver == null) {
  				// Build XTX - the symmetric matrix consisting of the scalar products of the basis functions.
  				double[][] XTX = new double[basisFunctions.length][basisFunctions.length];
  				for(int i=0; i<basisFunctions.length; i++) {
  					for(int j=i; j<basisFunctions.length; j++) {
  						XTX[i][j] = basisFunctions[i].mult(basisFunctions[j]).getAverage();	// Scalar product
  						XTX[j][i] = XTX[i][j];												// Symmetric matrix
  					}
  				}
  
  				solver = new SingularValueDecomposition(new Array2DRowRealMatrix(XTX, false)).getSolver();
  			}
  		}
  
  		// Build XTy - the projection of the dependents random variable on the basis functions.
  		double[] XTy = new double[basisFunctions.length];
  		for(int i=0; i<basisFunctions.length; i++) {
  			XTy[i] = dependents.mult(basisFunctions[i]).getAverage();				// Scalar product
  		}
  
  		// Solve X^T X x = X^T y - which gives us the regression coefficients x = linearRegressionParameters
  		double[] linearRegressionParameters = solver.solve(new ArrayRealVector(XTy)).toArray();
  
  		return linearRegressionParameters;
  	}