Class AbstractMultipleLinearRegression
- java.lang.Object
-
- org.hipparchus.stat.regression.AbstractMultipleLinearRegression
-
- All Implemented Interfaces:
MultipleLinearRegression
- Direct Known Subclasses:
GLSMultipleLinearRegression,OLSMultipleLinearRegression
public abstract class AbstractMultipleLinearRegression extends Object implements MultipleLinearRegression
Abstract base class for implementations of MultipleLinearRegression.
-
-
Constructor Summary
Constructors Constructor Description AbstractMultipleLinearRegression()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract org.hipparchus.linear.RealVectorcalculateBeta()Calculates the beta of multiple linear regression in matrix notation.protected abstract org.hipparchus.linear.RealMatrixcalculateBetaVariance()Calculates the beta variance of multiple linear regression in matrix notation.protected doublecalculateErrorVariance()Calculates the variance of the error term.protected org.hipparchus.linear.RealVectorcalculateResiduals()Calculates the residuals of multiple linear regression in matrix notation.protected doublecalculateYVariance()Calculates the variance of the y values.doubleestimateErrorVariance()Estimates the variance of the error.doubleestimateRegressandVariance()Returns the variance of the regressand, ie Var(y).double[]estimateRegressionParameters()Estimates the regression parameters b.double[]estimateRegressionParametersStandardErrors()Returns the standard errors of the regression parameters.double[][]estimateRegressionParametersVariance()Estimates the variance of the regression parameters, ie Var(b).doubleestimateRegressionStandardError()Estimates the standard error of the regression.double[]estimateResiduals()Estimates the residuals, ie u = y - X*b.protected org.hipparchus.linear.RealMatrixgetX()protected org.hipparchus.linear.RealVectorgetY()booleanisNoIntercept()voidnewSampleData(double[] data, int nobs, int nvars)Loads model x and y sample data from a flat input array, overriding any previous sample.protected voidnewXSampleData(double[][] x)Loads new x sample data, overriding any previous data.protected voidnewYSampleData(double[] y)Loads new y sample data, overriding any previous data.voidsetNoIntercept(boolean noIntercept)protected voidvalidateCovarianceData(double[][] x, double[][] covariance)Validates that the x data and covariance matrix have the same number of rows and that the covariance matrix is square.protected voidvalidateSampleData(double[][] x, double[] y)Validates sample data.
-
-
-
Method Detail
-
getX
protected org.hipparchus.linear.RealMatrix getX()
- Returns:
- the X sample data.
-
getY
protected org.hipparchus.linear.RealVector getY()
- Returns:
- the Y sample data.
-
isNoIntercept
public boolean isNoIntercept()
- Returns:
- true if the model has no intercept term; false otherwise
-
setNoIntercept
public void setNoIntercept(boolean noIntercept)
- Parameters:
noIntercept- true means the model is to be estimated without an intercept term
-
newSampleData
public void newSampleData(double[] data, int nobs, int nvars)Loads model x and y sample data from a flat input array, overriding any previous sample.
Assumes that rows are concatenated with y values first in each row. For example, an input
dataarray containing the sequence of values (1, 2, 3, 4, 5, 6, 7, 8, 9) withnobs = 3andnvars = 2creates a regression dataset with two independent variables, as below:y x[0] x[1] -------------- 1 2 3 4 5 6 7 8 9
Note that there is no need to add an initial unitary column (column of 1's) when specifying a model including an intercept term. If
isNoIntercept()istrue, the X matrix will be created without an initial column of "1"s; otherwise this column will be added.Throws IllegalArgumentException if any of the following preconditions fail:
datacannot be nulldata.length = nobs * (nvars + 1)nobs > nvars
- Parameters:
data- input data arraynobs- number of observations (rows)nvars- number of independent variables (columns, not counting y)- Throws:
org.hipparchus.exception.NullArgumentException- if the data array is nullorg.hipparchus.exception.MathIllegalArgumentException- if the length of the data array is not equal tonobs * (nvars + 1)org.hipparchus.exception.MathIllegalArgumentException- ifnobsis less thannvars + 1
-
newYSampleData
protected void newYSampleData(double[] y)
Loads new y sample data, overriding any previous data.- Parameters:
y- the array representing the y sample- Throws:
org.hipparchus.exception.NullArgumentException- if y is nullorg.hipparchus.exception.MathIllegalArgumentException- if y is empty
-
newXSampleData
protected void newXSampleData(double[][] x)
Loads new x sample data, overriding any previous data.
The inputxarray should have one row for each sample observation, with columns corresponding to independent variables. For example, if
thenx = new double[][] {{1, 2}, {3, 4}, {5, 6}}setXSampleData(x)results in a model with two independent variables and 3 observations:x[0] x[1] ---------- 1 2 3 4 5 6Note that there is no need to add an initial unitary column (column of 1's) when specifying a model including an intercept term.
- Parameters:
x- the rectangular array representing the x sample- Throws:
org.hipparchus.exception.NullArgumentException- if x is nullorg.hipparchus.exception.MathIllegalArgumentException- if x is emptyorg.hipparchus.exception.MathIllegalArgumentException- if x is not rectangular
-
validateSampleData
protected void validateSampleData(double[][] x, double[] y) throws org.hipparchus.exception.MathIllegalArgumentExceptionValidates sample data. Checks that- Neither x nor y is null or empty;
- The length (i.e. number of rows) of x equals the length of y
- x has at least one more row than it has columns (i.e. there is sufficient data to estimate regression coefficients for each of the columns in x plus an intercept.
- Parameters:
x- the [n,k] array representing the x datay- the [n,1] array representing the y data- Throws:
org.hipparchus.exception.NullArgumentException- ifxoryis nullorg.hipparchus.exception.MathIllegalArgumentException- ifxandydo not have the same lengthorg.hipparchus.exception.MathIllegalArgumentException- ifxoryare zero-lengthorg.hipparchus.exception.MathIllegalArgumentException- if the number of rows ofxis not larger than the number of columns + 1 if the model has an intercept; or the number of columns if there is no intercept term
-
validateCovarianceData
protected void validateCovarianceData(double[][] x, double[][] covariance)Validates that the x data and covariance matrix have the same number of rows and that the covariance matrix is square.- Parameters:
x- the [n,k] array representing the x samplecovariance- the [n,n] array representing the covariance matrix- Throws:
org.hipparchus.exception.MathIllegalArgumentException- if the number of rows in x is not equal to the number of rows in covarianceorg.hipparchus.exception.MathIllegalArgumentException- if the covariance matrix is not square
-
estimateRegressionParameters
public double[] estimateRegressionParameters()
Estimates the regression parameters b.- Specified by:
estimateRegressionParametersin interfaceMultipleLinearRegression- Returns:
- The [k,1] array representing b
-
estimateResiduals
public double[] estimateResiduals()
Estimates the residuals, ie u = y - X*b.- Specified by:
estimateResidualsin interfaceMultipleLinearRegression- Returns:
- The [n,1] array representing the residuals
-
estimateRegressionParametersVariance
public double[][] estimateRegressionParametersVariance()
Estimates the variance of the regression parameters, ie Var(b).- Specified by:
estimateRegressionParametersVariancein interfaceMultipleLinearRegression- Returns:
- The [k,k] array representing the variance of b
-
estimateRegressionParametersStandardErrors
public double[] estimateRegressionParametersStandardErrors()
Returns the standard errors of the regression parameters.- Specified by:
estimateRegressionParametersStandardErrorsin interfaceMultipleLinearRegression- Returns:
- standard errors of estimated regression parameters
-
estimateRegressandVariance
public double estimateRegressandVariance()
Returns the variance of the regressand, ie Var(y).- Specified by:
estimateRegressandVariancein interfaceMultipleLinearRegression- Returns:
- The double representing the variance of y
-
estimateErrorVariance
public double estimateErrorVariance()
Estimates the variance of the error.- Returns:
- estimate of the error variance
-
estimateRegressionStandardError
public double estimateRegressionStandardError()
Estimates the standard error of the regression.- Returns:
- regression standard error
-
calculateBeta
protected abstract org.hipparchus.linear.RealVector calculateBeta()
Calculates the beta of multiple linear regression in matrix notation.- Returns:
- beta
-
calculateBetaVariance
protected abstract org.hipparchus.linear.RealMatrix calculateBetaVariance()
Calculates the beta variance of multiple linear regression in matrix notation.- Returns:
- beta variance
-
calculateYVariance
protected double calculateYVariance()
Calculates the variance of the y values.- Returns:
- Y variance
-
calculateErrorVariance
protected double calculateErrorVariance()
Calculates the variance of the error term.
Uses the formulavar(u) = u · u / (n - k)
where n and k are the row and column dimensions of the design matrix X.- Returns:
- error variance estimate
-
calculateResiduals
protected org.hipparchus.linear.RealVector calculateResiduals()
Calculates the residuals of multiple linear regression in matrix notation.u = y - X * b
- Returns:
- The residuals [n,1] matrix
-
-