Example: Regression with User-supplied Basis Functions

In this example, we fit the function 1 + sin(x) + 7 * sin(3x) with no error introduced. The function is evaluated at 90 equally spaced points on the interval [0, 6]. Four basis functions are used, sin(kx) for k = 1,...,4 with no intercept.

import com.imsl.stat.*;
import com.imsl.math.*;

public class UserBasisRegressionEx1 {

    public static void main(String args[]) {
        class Basis1 implements RegressionBasis {

            public double basis(int index, double x) {
                return Math.sin((index + 1) * x);
            }
        }

        UserBasisRegression ubr
                = new UserBasisRegression(new Basis1(), 4, false);

        for (int k = 0; k < 90; k++) {
            double x = 6.0 * k / 89.0;
            double y = 1.0 + Math.sin(x) + 7.0 * Math.sin(3.0 * x);
            ubr.update(x, y, 1.0);
        }
        double[] coef = ubr.getCoefficients();
        new PrintMatrix("The regression coefficients are:").print(coef);
    }
}

Output

The regression coefficients are:
     0    
0  1.01   
1  0.02   
2  7.029  
3  0.037  

Link to Java source.