    001    package calhoun.analysis.crf.statistics;
    002
    003    import java.util.Arrays;
    004
    005    import calhoun.util.Assert;
    006
    007    public class BasicStats {
    008
    009            public static double meanDoubleArray( double[] x) {
    010                    Assert.a(x.length>=1);
    011                    double sum = 0;
    012                    for (int j=0; j<x.length; j++) { sum+= x[j]; }
    013                    return (sum/x.length);
    014            }
    015
    016            public static double medianDoubleArray(double[] x) {
    017                    Assert.a(x.length > 0);
    018                    double[] y = x;
    019                    Arrays.sort(y);
    020                    return (y[y.length/2]);
    021            }
    022
    023            public static double sumDoubleArray( double[] x) {
    024                    double ret = 0.00;
    025                    for (int j=0; j<x.length; j++) {
    026                            ret += x[j];
    027                    }
    028                    return ret;
    029            }
    030
    031            public static double L1Distance(double[] x, double[] y) {
    032                    Assert.a(x.length == y.length);
    033                    double ret = 0.00;
    034                    for (int j=0; j<x.length; j++) {
    035                            ret += Math.abs(x[j]-y[j]);
    036                    }
    037                    return ret;
    038            }
    039
    040            public static int argmax(double[] y) {
    041                    Assert.a(y.length>0);
    042                    double val = y[0];
    043                    int ret = 0;
    044                    for (int j=1; j<y.length; j++) {
    045                            if (y[j]>val)  {
    046                                    ret = j;
    047                                    val = y[j];
    048                            }
    049                    }
    050                    return ret;
    051            }
    052
    053            public static double max(double[] y) {
    054                    Assert.a(y.length>0);
    055                    double ret = y[0];
    056                    for (int j=1; j<y.length; j++) {
    057                            if (y[j]>ret)  {
    058                                    ret = y[j];
    059                            }
    060                    }
    061                    return ret;
    062            }
    063
    064    }