Esempio n. 1
0
        /// <summary>
        /// Find the model parameters β such that their linear combination with all predictor-arrays in X become as close to their response in Y as possible, with least squares residuals.
        /// Uses the cholesky decomposition of the normal equations.
        /// </summary>
        /// <param name="samples">Sequence of predictor-arrays and their response.</param>
        /// <param name="intercept">True if an intercept should be added as first artificial predictor value. Default = false.</param>
        /// <param name="method">The direct method to be used to compute the regression.</param>
        /// <returns>Best fitting list of model parameters β for each element in the predictor-arrays.</returns>
        public static T[] DirectMethod <T>(IEnumerable <Tuple <T[], T> > samples, bool intercept = false, DirectRegressionMethod method = DirectRegressionMethod.NormalEquations) where T : struct, IEquatable <T>, IFormattable
        {
            switch (method)
            {
            case DirectRegressionMethod.NormalEquations:
                return(NormalEquations(samples, intercept));

            case DirectRegressionMethod.QR:
                return(QR(samples, intercept));

            case DirectRegressionMethod.Svd:
                return(Svd(samples, intercept));

            default:
                throw new NotSupportedException(method.ToString());
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Find the model parameters β such that X*β with predictor X becomes as close to response Y as possible, with least squares residuals.
        /// </summary>
        /// <param name="x">Predictor matrix X</param>
        /// <param name="y">Response matrix Y</param>
        /// <param name="method">The direct method to be used to compute the regression.</param>
        /// <returns>Best fitting vector for model parameters β</returns>
        public static Matrix <T> DirectMethod <T>(Matrix <T> x, Matrix <T> y, DirectRegressionMethod method = DirectRegressionMethod.NormalEquations) where T : struct, IEquatable <T>, IFormattable
        {
            switch (method)
            {
            case DirectRegressionMethod.NormalEquations:
                return(NormalEquations(x, y));

            case DirectRegressionMethod.QR:
                return(QR(x, y));

            case DirectRegressionMethod.Svd:
                return(Svd(x, y));

            default:
                throw new NotSupportedException(method.ToString());
            }
        }