/************************************************************************* * Compilation: javac -classpath jama.jar:. MultipleLinearRegression.java * Execution: java -classpath jama.jar:. MultipleLinearRegression * Dependencies: jama.jar * * Compute least squares solution to X beta = y using Jama library (which * uses LU if matrix is square or QR decomposition otherwise). * Assumes X has full column rank. * * http://math.nist.gov/javanumerics/jama/ * http://math.nist.gov/javanumerics/jama/Jama-1.0.1.jar * *************************************************************************/ import Jama.Matrix; public class MultipleLinearRegression { public static void main(String[] args) { // generate random n-by-p matrix int n = Integer.parseInt(args[0]); int p = Integer.parseInt(args[1]); Matrix X = Matrix.random(n, p); Matrix y = Matrix.random(n, 1); // solve least squares problem using Jama Matrix beta = X.solve(y); Matrix residuals = X.times(beta).minus(y); // print results System.out.println("X = "); X.print(9, 4); System.out.println("y = "); y.print(9, 4); System.out.println("beta = "); beta.print(9, 4); System.out.println("X beta - y = "); residuals.print(9, 4); // error variance double s2 = residuals.norm2() / (n - p - 1); System.out.println("error variance = " + s2); } }