public class UserBasisRegression extends Object
UserBasisRegression
generalizes the concept of linear regression to user
defined basis functions. The linear regression model is
\(y = c_0 + c_1 x_1 + \cdots + c_k x_k + \varepsilon \),
where are the k independent variables. UserBasisRegression
generalizes this
concept by setting \(x_i = f_i (x)\), where \(f_i (x)\)
is any user defined function of \(x\).
This makes it easier for users to fit complex univariate models. For
example, the LinearRegression
class can be used to fit polynomials such as
\(y = c_0 + c_1 x + c_2 x^2 \cdots + c_k x^k + \varepsilon\),
but this requires an input matrix where the ith column of that array contains
the values of \(x^i\).
With UserBasisRegression
, these columns can be automatically generated.
For this polynomial model, the user would define a user basis function
\(f_i (x) = x^{i + 1}\). The UserBasisRegression
class
automatically inserts the necessary values into the regression equation and
then calculates the coefficients and analysis of variance statistics.
Since the user provides a method for calculating the basis function, other more
complex user basis functions are possible such as \(y = c_1 Sin(x) + c_2 Cos(x) + \varepsilon\).
In this example, nBasis
=2, \(f_0 (x) = Sin(x)\), and
\(f_1 (x) = Cos(x)\).
Constructor and Description |
---|
UserBasisRegression(RegressionBasis basis,
int nBasis,
boolean hasIntercept)
Constructs a
UserBasisRegression object |
Modifier and Type | Method and Description |
---|---|
ANOVA |
getANOVA()
Get an analysis of variance table and related statistics.
|
double[] |
getCoefficients()
Returns the regression coefficients.
|
void |
update(double x,
double y,
double w)
Adds a new observation and associated weight to the
RegressionBasis object. |
public UserBasisRegression(RegressionBasis basis, int nBasis, boolean hasIntercept)
UserBasisRegression
objectbasis
- a RegressionBasis
basis function supplied by the usernBasis
- an int
which specifies the number of basis functionshasIntercept
- a boolean
which specifies whether or not the model
has an interceptpublic void update(double x, double y, double w)
RegressionBasis
object.x
- a double
containing the independent
(explanatory) variable.y
- a double
containing the dependent (response)
variable.w
- a double
representing the weightpublic double[] getCoefficients()
double
array containing the regression
coefficients. If hasIntercept is false
its length is equal to the number
of variables. If hasIntercept is true
then its length is the number of variables
plus one and the 0-th entry is the value
of the intercept.SingularMatrixException
- is thrown when the regression
matrix is singular.public ANOVA getANOVA()
ANOVA
table and related statisticsCopyright © 2020 Rogue Wave Software. All rights reserved.