Regress.PCRegress Method

Overload List

#SignatureDescription
1void PCRegress(TVec Y, TMtx A, TVec b, TVec Weights, TVec YCalc, TVec Bse, Int32 NumOmmit)Weighted PC regression.
2void PCRegress(TVec Y, TMtx A, TVec b, TVec YCalc, TVec Bse, Int32 NumOmmit)Principal Component Regression.

Overload 1: void PCRegress(TVec Y, TMtx A, TVec b, TVec Weights, TVec YCalc, TVec Bse, Int32 NumOmmit)

Weighted PC regression.

#NameDescription
1YDefines vector of dependant variable.
2ADefines matrix of independant variables.
3bReturns calculated regression coefficiens.
4WeightsDefines weights for PC regression.
5YCalcReturns vector of calculated dependant variable, where YCalc = A*b + constant term.
6BseReturns principal component b coefficient standard error.
7NumOmmitDefines the number of variables to ommit from initial model.

Result: stored in self (calling object)

Overload 2: void PCRegress(TVec Y, TMtx A, TVec b, TVec YCalc, TVec Bse, Int32 NumOmmit)

Principal Component Regression.

#NameDescription
1YDefines vector of dependant variable.
2ADefines matrix of independant variables.
3NumOmmitDefines the number of variables to ommit from initial model.
4bReturns calculated regression coefficiens.
5YCalcReturns vector of calculated dependant variable, where YCalc = A*b + constant term.
6BseReturns principal component b coefficient standard error.

Result: stored in self (calling object)

Remarks:

Performs unweighted Principal Component Regression (PCR). PCR is a technique for analyzing multiple regression data that suffer from multicollinearity. When multicollinearity occurs, least squares estimates are unbiased, but their variances are large so they may be far from the true value. By adding a degree of bias to the regression estimates, principal components regression reduces the standard errors. The algorithm first standardizes A matrix and performs PC regression on standardized matrix.

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 ycalc = new Vector(0);
        Vector b = new Vector(0);
        Vector error = new Vector(0);
        double mse;
        // Load data
        A.SetIt(18,3,false, new double[] {1,  2,      1,
            2,  4,      2,
            3,  6,      4,
            4,  7,      3,
            5, 7,       2,
            6,  7,      1,
            7,  8,      1,
            8,  10,     2,
            9,  12,     4,
            10, 13,     3,
            11, 13,     2,
            12, 13,     1,
            13, 14,     1,
            14, 16,     2,
            15, 18,     4,
            16, 19,     3,
            17, 19,     2,
            18, 19,     1});
        Y.SetIt(false, new double[] {3,9,11,15,13,13,17,21,25,27,25,27,29,33,35,37,37,39});
        // Perform Principal Component Regression
        Regress.PCRegress(y,A,b,ycalc,null,1);
        // Errors
        error.Sub(ycalc,y);
    }
}
See Also: Regress.RidgeRegress