Multivariante linear regression.
Parameters |
Description |
Y |
Defines vector of dependant variable. |
A |
Defines matrix of independant (also X) variables. |
b |
Returns calculated regression coefficiens. |
Weights |
Defines weights (optional). |
Constant |
If true then intercept term b(0) will be included in calculations. If false, set intercept term b(0) to 0.0. |
YCalc |
Returns vector of calculated dependant variable, where YCalc = A*b. |
ATA |
Returns inverse matrix of normal equations i.e [A(T)*A]^-1. |
Method |
Use QR, SVD, or LU solver. Typically QR will yield best compromise between stability and performance. |
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 RegressTest routine.
The following example performs multiple linear regression.
Uses Regress, MtxExpr; procedure Example; var y,b,w,yhat, resid, bstd: Vector; A, ATA : Matrix; RegStat : TRegStats; begin A.SetIt(4,2,false,[1.0, 2.0, -3.2, 2.5, 8.0, -0.5, -2.2, 1.8]); // independent variables w.SetIt(false,[1,2,2,1]); // weights y.SetIt(false,[-3.0, 0.25, 8.0, 5.5]); // dependent variables MulLinRegress(y,A,b,w,true,yhat,ATA); //do regression // b=(19.093757944, -2.0141843616, -10.082487055) RegressTest(y,yhat,ATA,RegStat,resid, bstd, true,w); // do basic regression stats // RegStat = (ResidualVar:0.037230395108; R2:0.99965713428; // AdjustedR2:0.99897140285; F:1457.7968725; SignifProb: 0.01851663347) end;
#include "MtxExpr.hpp" #include "Regress.hpp" void _fastcall Example() { sMatrix A,ATA; sVector y,b,w,yhat,residuals,bstdev; TRegStats rs; // independent variables A.SetIt(4,2,false,OPENARRAY(double,(1.0, 2.0, -3.2, 2.5, 8.0, -0.5, -2.2, 1.8))); w.SetIt(false,OPENARRAY(double,(1,2,2,1))); // weights y.SetIt(false,OPENARRAY(double,(-3.0, 0.25, 8.0, 5.5))); // dependent variables MulLinRegress(y,A,b,w,true,yhat,ATA); //do regression // b=(19.093757944, -2.0141843616, -10.082487055) RegressTest(y,yhat,ATA,rs,residuals,bstdev,true,w); // do basic regression stats // RegStat = (ResidualVar:0.037230395108; R2:0.99965713428; // AdjustedR2:0.99897140285; F:1457.7968725; SignifProb: 0.01851663347) }
Copyright (c) 1999-2025 by Dew Research. All rights reserved.
|
What do you think about this topic? Send feedback!
|