public abstract class AbstractMultipleLinearRegression extends Object implements MultipleLinearRegression
Constructor and Description |
---|
AbstractMultipleLinearRegression() |
Modifier and Type | Method and Description |
---|---|
protected abstract RealVector |
calculateBeta()
Calculates the beta of multiple linear regression in matrix notation.
|
protected abstract RealMatrix |
calculateBetaVariance()
Calculates the beta variance of multiple linear regression in matrix
notation.
|
protected double |
calculateErrorVariance()
Calculates the variance of the error term.
|
protected RealVector |
calculateResiduals()
Calculates the residuals of multiple linear regression in matrix
notation.
|
protected double |
calculateYVariance()
Calculates the variance of the y values.
|
double |
estimateErrorVariance()
Estimates the variance of the error.
|
double |
estimateRegressandVariance()
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).
|
double |
estimateRegressionStandardError()
Estimates the standard error of the regression.
|
double[] |
estimateResiduals()
Estimates the residuals, ie u = y - X*b.
|
protected RealMatrix |
getX() |
protected RealVector |
getY() |
boolean |
isNoIntercept() |
void |
newSampleData(double[] data,
int nobs,
int nvars)
Loads model x and y sample data from a flat input array, overriding any previous sample.
|
protected void |
newXSampleData(double[][] x)
Loads new x sample data, overriding any previous data.
|
protected void |
newYSampleData(double[] y)
Loads new y sample data, overriding any previous data.
|
void |
setNoIntercept(boolean noIntercept) |
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.
|
protected void |
validateSampleData(double[][] x,
double[] y)
Validates sample data.
|
protected RealMatrix getX()
protected RealVector getY()
public boolean isNoIntercept()
public void setNoIntercept(boolean noIntercept)
noIntercept
- true means the model is to be estimated without an intercept termpublic 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
data
array containing the sequence of values (1, 2, 3, 4, 5, 6, 7, 8, 9) with
nobs = 3
and nvars = 2
creates 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()
is true
,
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:
data
cannot be nulldata.length = nobs * (nvars + 1)
nobs > nvars
data
- input data arraynobs
- number of observations (rows)nvars
- number of independent variables (columns, not counting y)NullArgumentException
- if the data array is nullMathIllegalArgumentException
- if the length of the data array is not equal
to nobs * (nvars + 1)
MathIllegalArgumentException
- if nobs
is less than
nvars + 1
protected void newYSampleData(double[] y)
y
- the array representing the y sampleNullArgumentException
- if y is nullMathIllegalArgumentException
- if y is emptyprotected void newXSampleData(double[][] x)
Loads new x sample data, overriding any previous data.
The inputx
array should have one row for each sample
observation, with columns corresponding to independent variables.
For example, if
x = new double[][] {{1, 2}, {3, 4}, {5, 6}}
then setXSampleData(x)
results in a model with two independent
variables and 3 observations:
x[0] x[1] ---------- 1 2 3 4 5 6
Note that there is no need to add an initial unitary column (column of 1's) when specifying a model including an intercept term.
x
- the rectangular array representing the x sampleNullArgumentException
- if x is nullMathIllegalArgumentException
- if x is emptyMathIllegalArgumentException
- if x is not rectangularprotected void validateSampleData(double[][] x, double[] y) throws MathIllegalArgumentException
x
- the [n,k] array representing the x datay
- the [n,1] array representing the y dataNullArgumentException
- if x
or y
is nullMathIllegalArgumentException
- if x
and y
do not
have the same lengthMathIllegalArgumentException
- if x
or y
are zero-lengthMathIllegalArgumentException
- if the number of rows of x
is not larger than the number of columns + 1 if the model has an intercept;
or the number of columns if there is no intercept termprotected void validateCovarianceData(double[][] x, double[][] covariance)
x
- the [n,k] array representing the x samplecovariance
- the [n,n] array representing the covariance matrixMathIllegalArgumentException
- if the number of rows in x is not equal
to the number of rows in covarianceMathIllegalArgumentException
- if the covariance matrix is not squarepublic double[] estimateRegressionParameters()
estimateRegressionParameters
in interface MultipleLinearRegression
public double[] estimateResiduals()
estimateResiduals
in interface MultipleLinearRegression
public double[][] estimateRegressionParametersVariance()
estimateRegressionParametersVariance
in interface MultipleLinearRegression
public double[] estimateRegressionParametersStandardErrors()
estimateRegressionParametersStandardErrors
in interface MultipleLinearRegression
public double estimateRegressandVariance()
estimateRegressandVariance
in interface MultipleLinearRegression
public double estimateErrorVariance()
public double estimateRegressionStandardError()
protected abstract RealVector calculateBeta()
protected abstract RealMatrix calculateBetaVariance()
protected double calculateYVariance()
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.
protected RealVector calculateResiduals()
u = y - X * b
Copyright © 2016-2022 CS GROUP. All rights reserved.