class myStats {
double standardDeviation (double[] array) {
double[] arr = new double[array.length];
double av = average(array);
for (int i = 0; i < array.length; i++) {
arr[i] = (array[i] - av) * (array[i] - av);
}
double d = 0;
for (int i = 0; i < array.length; i++) {
d = d + arr[i];
}
return Math.sqrt(d / (arr.length - 1));
}
double correlation (double[] array1, double[] array2) {
double[] arr = new double[array1.length];
double av1 = average(array1);
double av2 = average(array2);
for (int i = 0; i < array1.length; i++) {
arr[i] = (array1[i] - av1) * (array2[i] - av2);
}
double d = 0;
for (int i = 0; i < array1.length; i++) {
d = d + arr[i];
}
double sd1 = standardDeviation(array1);
double sd2 = standardDeviation(array2);
return (d / (sd1 * sd2)) / (array1.length - 1);
}
double slope (double[] array1, double[] array2) {
double[] arr = new double[array1.length];
double av1 = average(array1);
double av2 = average(array2);
for (int i = 0; i < array1.length; i++) {
arr[i] = (array1[i] - av1) * (array2[i] - av2);
}
double d = 0;
for (int i = 0; i < array1.length; i++) {
d = d + arr[i];
}
double sd1 = standardDeviation(array1);
double sd2 = standardDeviation(array2);
return (sd1 / sd2) * correlation(array1,array2);
}
double yIntercept(double array1[], double array2[]) {
double d = 0;
double sl = slope(array1, array2);
double yAvg = average(array1);
double xAvg = average(array2);
d = yAvg - (sl * xAvg);
return d;
}
double average(double array[]) {
double d = 0;
double total = 0;
for (int i = 0; i < array.length; i++) {
total = total + array[i];
}
d = total / array.length;
return d;
}
double lineFit(double array1[], double array2[]) {
double yAvg = average(array1);
double sl = slope(array1, array2);
double yi = yIntercept(array1, array2);
double d1 = 0;
double squaredResidual = 0;
double squaredYVariance = 0;
for (int i = 0; i < array1.length; i++) {
squaredYVariance = squaredYVariance + ((array1[i] - yAvg) * (array1[i] - yAvg));
d1 = ((array2[i] * sl) + yi);
squaredResidual = squaredResidual + ((array1[i] - d1) * (array1[i] - d1));
}
return 1 - (squaredResidual / squaredYVariance);
}
}
class runMyStats {
public static void main(String args[]) {
double[] i2 = {5,10,20,8,4,6,12,15};
double[] i = {27,46,73,40,30,28,46,59};
//double[] i2 = {3,6,9,12};
//double[] i = {15,30,45,60};
myStats m = new myStats();
System.out.println("AVG = " + m.average(i));
System.out.println("STDEV = " + m.standardDeviation(i));
System.out.println("Correlation = " + m.correlation(i,i2));
System.out.println("Slope = " + m.slope(i,i2));
System.out.println("YIntercept = " + m.yIntercept(i,i2));
System.out.println("lineFit = " + m.lineFit(i,i2));
}
}
Sunday, October 14, 2007
Below is a simple set of classes for performing your own statistical analysis. As noted, they are simple (no multiple regressions analysis, etc.)
Subscribe to:
Post Comments (Atom)
1 comment:
Sorry for my bad english. Thank you so much for your good post. Your post helped me in my college assignment, If you can provide me more details please email me.
Post a Comment