public class MillerUpdatingRegression extends Object implements UpdatingMultipleLinearRegression
UpdatingMultipleLinearRegression interface.
 The algorithm is described in:
Algorithm AS 274: Least Squares Routines to Supplement Those of Gentleman Author(s): Alan J. Miller Source: Journal of the Royal Statistical Society. Series C (Applied Statistics), Vol. 41, No. 2 (1992), pp. 458-478 Published by: Blackwell Publishing for the Royal Statistical Society Stable URL: http://www.jstor.org/stable/2347583
This method for multiple regression forms the solution to the OLS problem by updating the QR decomposition as described by Gentleman.
| Constructor and Description | 
|---|
| MillerUpdatingRegression(int numberOfVariables,
                        boolean includeConstant)Primary constructor for the MillerUpdatingRegression. | 
| MillerUpdatingRegression(int numberOfVariables,
                        boolean includeConstant,
                        double errorTolerance)This is the augmented constructor for the MillerUpdatingRegression class. | 
| Modifier and Type | Method and Description | 
|---|---|
| void | addObservation(double[] x,
              double y)Adds an observation to the regression model. | 
| void | addObservations(double[][] x,
               double[] y)Adds multiple observations to the model. | 
| void | clear()As the name suggests,  clear wipes the internals and reorders everything in the
 canonical order. | 
| double | getDiagonalOfHatMatrix(double[] row_data)Gets the diagonal of the Hat matrix also known as the leverage matrix. | 
| long | getN()Gets the number of observations added to the regression model. | 
| int[] | getOrderOfRegressors()Gets the order of the regressors, useful if some type of reordering
 has been called. | 
| double[] | getPartialCorrelations(int in)In the original algorithm only the partial correlations of the regressors
 is returned to the user. | 
| boolean | hasIntercept()A getter method which determines whether a constant is included. | 
| RegressionResults | regress()Conducts a regression on the data in the model, using all regressors. | 
| RegressionResults | regress(int numberOfRegressors)Conducts a regression on the data in the model, using a subset of regressors. | 
| RegressionResults | regress(int[] variablesToInclude)Conducts a regression on the data in the model, using regressors in array
 Calling this method will change the internal order of the regressors
 and care is required in interpreting the hatmatrix. | 
public MillerUpdatingRegression(int numberOfVariables,
                                boolean includeConstant,
                                double errorTolerance)
                         throws MathIllegalArgumentException
numberOfVariables - number of regressors to expect, not including constantincludeConstant - include a constant automaticallyerrorTolerance - zero tolerance, how machine zero is determinedMathIllegalArgumentException - if numberOfVariables is less than 1public MillerUpdatingRegression(int numberOfVariables,
                                boolean includeConstant)
                         throws MathIllegalArgumentException
numberOfVariables - maximum number of potential regressorsincludeConstant - include a constant automaticallyMathIllegalArgumentException - if numberOfVariables is less than 1public boolean hasIntercept()
hasIntercept in interface UpdatingMultipleLinearRegressionpublic long getN()
getN in interface UpdatingMultipleLinearRegressionpublic void addObservation(double[] x,
                           double y)
                    throws MathIllegalArgumentException
addObservation in interface UpdatingMultipleLinearRegressionx - the array with regressor valuesy - the value of dependent variable given these regressorsMathIllegalArgumentException - if the length of x does not equal
 the number of independent variables in the modelpublic void addObservations(double[][] x,
                            double[] y)
                     throws MathIllegalArgumentException
addObservations in interface UpdatingMultipleLinearRegressionx - observations on the regressorsy - observations on the regressandMathIllegalArgumentException - if x is not rectangular, does not match
 the length of y or does not contain sufficient data to estimate the modelpublic void clear()
clear in interface UpdatingMultipleLinearRegressionpublic double[] getPartialCorrelations(int in)
 corr =
 {
   corrxx - lower triangular
   corrxy - bottom row of the matrix
 }
 Replaces subroutines PCORR and COR of:
 ALGORITHM AS274  APPL. STATIST. (1992) VOL.41, NO. 2 
 Calculate partial correlations after the variables in rows 1, 2, ..., IN have been forced into the regression. If IN = 1, and the first row of R represents a constant in the model, then the usual simple correlations are returned.
If IN = 0, the value returned in array CORMAT for the correlation of variables Xi & Xj is:
sum ( Xi.Xj ) / Sqrt ( sum (Xi^2) . sum (Xj^2) )
On return, array CORMAT contains the upper triangle of the matrix of partial correlations stored by rows, excluding the 1's on the diagonal. e.g. if IN = 2, the consecutive elements returned are: (3,4) (3,5) ... (3,ncol), (4,5) (4,6) ... (4,ncol), etc. Array YCORR stores the partial correlations with the Y-variable starting with YCORR(IN+1) = partial correlation with the variable in position (IN+1).
in - how many of the regressors to include (either in canonical
 order, or in the current reordered state)public double getDiagonalOfHatMatrix(double[] row_data)
row_data - returns the diagonal of the hat matrix for this observationpublic int[] getOrderOfRegressors()
public RegressionResults regress() throws MathIllegalArgumentException
regress in interface UpdatingMultipleLinearRegressionMathIllegalArgumentException - - thrown if number of observations is
 less than the number of variablespublic RegressionResults regress(int numberOfRegressors) throws MathIllegalArgumentException
numberOfRegressors - many of the regressors to include (either in canonical
 order, or in the current reordered state)MathIllegalArgumentException - - thrown if number of observations is
 less than the number of variables or number of regressors requested
 is greater than the regressors in the modelpublic RegressionResults regress(int[] variablesToInclude) throws MathIllegalArgumentException
regress in interface UpdatingMultipleLinearRegressionvariablesToInclude - array of variables to include in regressionMathIllegalArgumentException - - thrown if number of observations is
 less than the number of variables, the number of regressors requested
 is greater than the regressors in the model or a regressor index in
 regressor array does not existCopyright © 2016–2020 Hipparchus.org. All rights reserved.