JMSLTM Numerical Library 6.0

com.imsl.stat
Class UserBasisRegression

java.lang.Object
  extended by com.imsl.stat.UserBasisRegression

public class UserBasisRegression
extends Object

Fits a linear function of the form y = c_0  + c_1 f_1 (x) + c_2 f_2 (x) +  cdots  + c_k f_k (x) + varepsilon, where f_1 (x),f_2 (x), cdots ,f_k (x) are the user basis functions f_i (x) evaluated at index values i = 1,2, ldots ,k,c_0 is the intercept, c_1 ,c_2 , cdots ,c_k are the coefficients associated with the basis functions, and is the random error associated with y. The coefficients c_0 ,c_1 , cdots ,c_k are determined by least squares.

Description

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).

See Also:
Example 1, Example 2

Constructor Summary
UserBasisRegression(RegressionBasis basis, int nBasis, boolean hasIntercept)
          Constructs a UserBasisRegression object
 
Method Summary
 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

UserBasisRegression

public UserBasisRegression(RegressionBasis basis,
                           int nBasis,
                           boolean hasIntercept)
Constructs a UserBasisRegression object

Parameters:
basis - a RegressionBasis basis function supplied by the user
nBasis - an int which specifies the number of basis functions
hasIntercept - a boolean which specifies whether or not the model has an intercept
Method Detail

getANOVA

public ANOVA getANOVA()
Get an analysis of variance table and related statistics.

Returns:
an ANOVA table and related statistics

getCoefficients

public double[] getCoefficients()
Returns the regression coefficients.

Returns:
A 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.
Throws:
SingularMatrixException - is thrown when the regression matrix is singular.

update

public void update(double x,
                   double y,
                   double w)
Adds a new observation and associated weight to the RegressionBasis object.

Parameters:
x - a double containing the independent (explanatory) variable.
y - a double containing the dependent (response) variable.
w - a double representing the weight

JMSLTM Numerical Library 6.0

Copyright © 1970-2009 Visual Numerics, Inc.
Built September 1 2009.