mrhee

05-25-2009, 04:57 PM

I'm having problems with the LinearRegression.CaseStatistics class. If I try to call getPredictedResponse() or getResidual(), the returned values don't make sense. As far as I can tell, it just seems to return the intercept term and ignore the explanatory variables.

Here's a slightly modified example that demonstates.

import com.imsl.math.PrintMatrix;

import com.imsl.math.PrintMatrixFormat;

import com.imsl.stat.LinearRegression;

import java.util.Arrays;

public class LinearRegressionEx2

{

public static void main(String args[])

{

LinearRegression r = new LinearRegression(2, true);

double y[] = {3, 4, 5, 7, 7, 8, 9};

double x[][] = {{1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}, {0, 6}, {1, 7}};

double[] coefs = new double[3];

double[][] results = new double[7][8];

double[] confint = new double[2];

r.update(x, y);

coefs = r.getCoefficients();

for (int k = 0; k < 7; k++) {

LinearRegression.CaseStatistics cs = r.getCaseStatistics(x[k], y[k]);

confint = cs.getConfidenceInterval();

results[k][0] = cs.getObservedResponse();

results[k][1] = cs.getPredictedResponse();

results[k][2] = cs.getResidual();

results[k][3] = cs.getJackknifeResidual();

results[k][4] = cs.getCooksDistance();

results[k][5] = cs.getDFFITS();

results[k][6] = confint[0];

results[k][7] = confint[1];

}

PrintMatrix p = new PrintMatrix("Selected Case Statistics");

PrintMatrixFormat mf = new PrintMatrixFormat();

String labels[] = {

"Observed", "Predicted", "Residual", "Jackknife Residual.", "Cook's D", "DFFITS",

"[Conf. Interval", "on the Mean]"};

mf.setColumnLabels(labels);

p.print(mf, results);

System.out.println("Coefficient estimates: " + Arrays.toString(coefs));

}

}

Here's a slightly modified example that demonstates.

import com.imsl.math.PrintMatrix;

import com.imsl.math.PrintMatrixFormat;

import com.imsl.stat.LinearRegression;

import java.util.Arrays;

public class LinearRegressionEx2

{

public static void main(String args[])

{

LinearRegression r = new LinearRegression(2, true);

double y[] = {3, 4, 5, 7, 7, 8, 9};

double x[][] = {{1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}, {0, 6}, {1, 7}};

double[] coefs = new double[3];

double[][] results = new double[7][8];

double[] confint = new double[2];

r.update(x, y);

coefs = r.getCoefficients();

for (int k = 0; k < 7; k++) {

LinearRegression.CaseStatistics cs = r.getCaseStatistics(x[k], y[k]);

confint = cs.getConfidenceInterval();

results[k][0] = cs.getObservedResponse();

results[k][1] = cs.getPredictedResponse();

results[k][2] = cs.getResidual();

results[k][3] = cs.getJackknifeResidual();

results[k][4] = cs.getCooksDistance();

results[k][5] = cs.getDFFITS();

results[k][6] = confint[0];

results[k][7] = confint[1];

}

PrintMatrix p = new PrintMatrix("Selected Case Statistics");

PrintMatrixFormat mf = new PrintMatrixFormat();

String labels[] = {

"Observed", "Predicted", "Residual", "Jackknife Residual.", "Cook's D", "DFFITS",

"[Conf. Interval", "on the Mean]"};

mf.setColumnLabels(labels);

p.print(mf, results);

System.out.println("Coefficient estimates: " + Arrays.toString(coefs));

}

}