{"id":27,"date":"2009-04-15T14:57:01","date_gmt":"2009-04-15T19:57:01","guid":{"rendered":"http:\/\/appcrawler.com\/wordpress\/?p=27"},"modified":"2013-12-27T09:33:06","modified_gmt":"2013-12-27T14:33:06","slug":"statistical-functions-with-java","status":"publish","type":"post","link":"http:\/\/appcrawler.com\/wordpress\/2009\/04\/15\/statistical-functions-with-java\/","title":{"rendered":"Statistical functions with java"},"content":{"rendered":"<p>Below is a simple set of classes for performing your own statistical analysis. As noted, they are simple (no multiple regression analysis, etc.)<\/p>\n<pre lang=\"java\" line=\"1\">\r\nclass myStats {\r\n  double standardDeviation (double[] array) {\r\n    double[] arr = new double[array.length];\r\n    double av = average(array);\r\n    for (int i = 0; i < array.length; i++) {\r\n      arr[i] = (array[i] - av) * (array[i] - av);\r\n    }\r\n    double d = 0;\r\n    for (int i = 0; i < array.length; i++) {\r\n      d = d + arr[i];\r\n    }\r\n    return Math.sqrt(d \/ (arr.length - 1));\r\n  }\r\n\r\n  double correlation (double[] array1, double[] array2) {\r\n    double[] arr = new double[array1.length];\r\n    double av1 = average(array1);\r\n    double av2 = average(array2);\r\n    for (int i = 0; i < array1.length; i++) {\r\n      arr[i] = (array1[i] - av1) * (array2[i] - av2);\r\n    }\r\n    double d = 0;\r\n    for (int i = 0; i < array1.length; i++) {\r\n      d = d + arr[i];\r\n    }\r\n    double sd1 = standardDeviation(array1);\r\n    double sd2 = standardDeviation(array2);\r\n    return (d \/ (sd1 * sd2)) \/ (array1.length - 1);\r\n  }\r\n\r\n  double slope (double[] array1, double[] array2) {\r\n    double[] arr = new double[array1.length];\r\n    double av1 = average(array1);\r\n    double av2 = average(array2);\r\n    for (int i = 0; i < array1.length; i++) {\r\n      arr[i] = (array1[i] - av1) * (array2[i] - av2);\r\n    }\r\n    double d = 0;\r\n    for (int i = 0; i < array1.length; i++) {\r\n      d = d + arr[i];\r\n    }\r\n    double sd1 = standardDeviation(array1);\r\n    double sd2 = standardDeviation(array2);\r\n    return (sd1 \/ sd2) * correlation(array1,array2);\r\n  }\r\n\r\n  double yIntercept(double array1[], double array2[]) {\r\n    double d = 0;\r\n    double sl = slope(array1, array2);\r\n    double yAvg = average(array1);\r\n    double xAvg = average(array2);\r\n    d = yAvg - (sl * xAvg);\r\n    return d;\r\n  }\r\n\r\n  double average(double array[]) {\r\n    double d = 0;\r\n    double total = 0;\r\n    for (int i = 0; i < array.length; i++) {\r\n      total = total + array[i];\r\n    }\r\n    d = total \/ array.length;\r\n    return d;\r\n  }\r\n\r\n  double lineFit(double array1[], double array2[]) {\r\n    double yAvg = average(array1);\r\n    double sl = slope(array1, array2);\r\n    double yi  = yIntercept(array1, array2);\r\n    double d1 = 0;\r\n    double squaredResidual = 0;\r\n    double squaredYVariance = 0;\r\n    for (int i = 0; i < array1.length; i++) {\r\n      squaredYVariance = squaredYVariance + ((array1[i] - yAvg) * (array1[i] - yAvg));\r\n      d1 = ((array2[i] * sl) + yi);\r\n      squaredResidual = squaredResidual + ((array1[i] - d1) * (array1[i] - d1));\r\n    }\r\n    return 1 - (squaredResidual \/ squaredYVariance);\r\n  }\r\n}\r\n\r\nclass runMyStats {\r\n  public static void main(String args[]) {\r\n    double[] i2 = {5,10,20,8,4,6,12,15};\r\n    double[] i = {27,46,73,40,30,28,46,59};\r\n    \/\/double[] i2 = {3,6,9,12};\r\n    \/\/double[] i = {15,30,45,60};\r\n    myStats m = new myStats();\r\n    System.out.println(\"AVG = \" + m.average(i));\r\n    System.out.println(\"STDEV = \" + m.standardDeviation(i));\r\n    System.out.println(\"Correlation = \" + m.correlation(i,i2));\r\n    System.out.println(\"Slope = \" + m.slope(i,i2));\r\n    System.out.println(\"YIntercept = \" + m.yIntercept(i,i2));\r\n    System.out.println(\"lineFit = \" + m.lineFit(i,i2));\r\n  }\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Below is a simple set of classes for performing your own statistical analysis. As noted, they are simple (no multiple regression analysis, etc.) class myStats { double standardDeviation (double[] array) { double[] arr = new double[array.length]; double av = average(array);&hellip;<\/p>\n<p class=\"more-link-p\"><a class=\"more-link\" href=\"http:\/\/appcrawler.com\/wordpress\/2009\/04\/15\/statistical-functions-with-java\/\">Read more &rarr;<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"footnotes":""},"categories":[24,25,4],"tags":[],"_links":{"self":[{"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/posts\/27"}],"collection":[{"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/comments?post=27"}],"version-history":[{"count":9,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/posts\/27\/revisions"}],"predecessor-version":[{"id":3386,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/posts\/27\/revisions\/3386"}],"wp:attachment":[{"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/media?parent=27"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/categories?post=27"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/tags?post=27"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}