Regress.MulLinRegress Method

Overload List

#SignatureDescription
1void MulLinRegress(TVec Y, TMtx A, TVec b, TVec Weights, Boolean Constant, TVec YCalc, TMtx ATA, TRegSolveMethod Method)Multivariante linear regression.
2void MulLinRegress(TVec Y, TMtx A, TVec b, Boolean Constant, TVec YCalc, TMtx ATA, TRegSolveMethod Method)Multivariante linear regression.

Overload 1: void MulLinRegress(TVec Y, TMtx A, TVec b, TVec Weights, Boolean Constant, TVec YCalc, TMtx ATA, TRegSolveMethod Method)

Multivariante linear regression.

#NameDescription
1YDefines vector of dependant variable.
2ADefines matrix of independant (also X) variables.
3bReturns calculated regression coefficiens.
4MethodUse QR, SVD, or LU solver. Typically QR will yield best compromise between stability and performance.
5WeightsDefines weights (optional).
6ConstantIf true then intercept term b(0) will be included in calculations. If false, set intercept term b(0) to 0.0.
7YCalcReturns vector of calculated dependant variable, where YCalc = A*b.
8ATAReturns inverse matrix of normal equations i.e [A(T)*A]^-1.

Result: stored in self (calling object)

Remarks:

Routine fits equations to data by minimizing the sum of squared residuals:

SS = Sum [y(k) - ycalc(k)]^2 ,

where y(k) and ycalc(k) are respectively the observed and calculated value of the dependent variable for observation k. ycalc(k) is a function of the regression parameters b(0), b(1) ... Here the observed values obey the following equation:

y(k) = b(0) + b(1) * x(1,k) + b(2) * x(2,k) + ...

i.e

y = A * b.

To calculate additional regression statistical values, use Dew.Stats.Units.Regress.RegressTest routine.

Examples
using Dew.Math;
using Dew.Stats.Units;
using Dew.Stats;
namespace Dew.Examples
{
    private void Example()
    {
        Matrix A = new Matrix(0, 0);
        Matrix ATA = new Matrix(0, 0);
        Vector y = new Vector(0);
        Vector b = new Vector(0);
        Vector w = new Vector(0);
        Vector yhat = new Vector(0);
        Vector residuals = new Vector(0);
        Vector BStdDev = new Vector(0);

        TRegStats rs;
        // independent variables
        A.SetIt(4, 2, false, new double[] {1.0, 2.0,
            -3.2, 2.5,
                8.0, -0.5,
                -2.2, 1.8});
        w.SetIt(false, new double[] { 1, 2, 2, 1 }); // weights
        y.SetIt(false, new double[] { -3.0, 0.25, 8.0, 5.5 }); // dependent variables
        Regress.MulLinRegress(y, A, b, w, true, yhat, ATA, TRegSolveMethod.regSolveLQR); //do regression
            // b=(19.093757944, -2.0141843616, -10.082487055)
        Regress.RegressTest(y, yhat, ATA, out rs, residuals, BStdDev, true, w); // do basic regression stats
            // RegStat = (ResidualVar:0.037230395108; R2:0.99965713428;
            // AdjustedR2:0.99897140285; F:1457.7968725; SignifProb: 0.01851663347)
    }
}
See Also: Regress.RegressTest, Regress.LinRegress, Regress.NLinRegress

Overload 2: void MulLinRegress(TVec Y, TMtx A, TVec b, Boolean Constant, TVec YCalc, TMtx ATA, TRegSolveMethod Method)

Multivariante linear regression.

#NameTypeDescription
1YTVecsource TVec
2ATMtxsource TMtx
3bTVecsource TVec
4ConstantBoolean
5YCalcTVecsource TVec
6ATATMtxsource TMtx
7MethodTRegSolveMethod

Result: stored in self (calling object)