/******************************************************************************* * Name: Kevin Wayne * Login: wayne * Precept: P00 * * Compilation: javac Tstat.java * Execution: java Tstat < input.txt * Dependencies: StdIn.java StdOut.java * * Reads an integer N and N paired sample from standard input; * writes the t-statistic of the paired samples to standard output. * ******************************************************************************/ public class Tstat { // return the mean of the array x[] public static double mean(double[] x) { int N = x.length; double sum = 0.0; for (int i = 0; i < N; i++) { sum += x[i]; } return sum / N; } // return the sample variance of the array x[] public static double variance(double[] x) { int N = x.length; double mu = mean(x); double sum = 0.0; for (int i = 0; i < N; i++) { double delta = x[i] - mu; sum += delta * delta; } return sum / (N-1); } public static double tstat(double[] x, double[] y) { int n1 = x.length; int n2 = y.length; if (n1 != n2) throw new RuntimeException("array sizes must be equal"); int N = n1; // compute means double mu1 = mean(x); double mu2 = mean(y); // compute variances double var1 = variance(x); double var2 = variance(y); // compute t-statistic return (mu1 - mu2) / Math.sqrt(var1/N + var2/N); } public static void main(String[] args) { // read data from standard input int N = StdIn.readInt(); double[] x = new double[N]; double[] y = new double[N]; for (int i = 0; i < N; i++) { x[i] = StdIn.readDouble(); y[i] = StdIn.readDouble(); } // compute t-statistic double t = tstat(x, y); StdOut.println(t); } }