/** * This calculates B1 and B0 for the linear regression frorm the passed-in * vectors of a set of n programs * * @version $Id: RegressionCalc.java,v 1.1 1998/10/14 17:58:40 tfm1584 Exp $ * * @author Tom M * * Revisisons: * $Log: RegressionCalc.java,v $ * Revision 1.1 1998/10/14 17:58:40 tfm1584 * Initial revision * * */ import java.util.Vector; class RegressionCalc { /** * the constructor */ public RegressionCalc() { } /** * This calculates B1 * * @param x the vector of x values * @param y the vector of y values * * @return the calculated value of B1 * */ public double calculateB1( Vector x, Vector y ) { Vector xdouble = new Vector(); Vector ydouble = new Vector(); MathClass math = new MathClass(); int n = x.size(); int sumXY = 0; int sumX2 = 0; double XAvg = math.calculateMean( x ); double YAvg = math.calculateMean( y ); for ( int i = 0; i < n; i++ ) { sumXY += ( (Double)x.elementAt(i) ).doubleValue() * ( (Double)y.elementAt(i) ).doubleValue(); sumX2 += ( (Double)x.elementAt(i) ).doubleValue() * ( (Double)x.elementAt(i) ).doubleValue(); } double result = ( sumXY - ( n * XAvg * YAvg ) ) / ( sumX2 - ( n * XAvg * XAvg ) ); return result; } /** * This calculates B0 * * @param x the vector of x values * @param y the vector of y values * * @return the calculated value of B0 * */ public double calculateB0( Vector x, Vector y, double B1 ) { MathClass math = new MathClass(); Vector xdouble = new Vector(); Vector ydouble = new Vector(); double XAvg = math.calculateMean( x ); double YAvg = math.calculateMean( y ); double result = YAvg - ( B1 * XAvg ); return result; } /** * This calculates the error sum of squares * * @param x the vector of x values * @param y the vector of y values * @param B0 the calculated value of B0 * @param B1 the calculated value of B1 * * @return the calculated value of the error sum of squares * */ public double calculateRSquared( Vector x, Vector y, double B0, double B1) { int n = x.size(); double r; double rSquared = 0; for ( int i = 0; i < n; i++ ) { r = ((Double)y.elementAt( i )).doubleValue() - (B0 + ( B1* ((Double)x.elementAt(i)).doubleValue()) ); rSquared += r*r; } return ( rSquared / ( n - 2 ) ); } }