#!/usr/bin/awk BEGIN { sum = 0; n = 0; min=-1 max=-1 } { nums[n++] = $1; sum += $1; if (min==-1 || min>$1) { min=$1 } if (max==-1 || max<$1) { max=$1 } } END { mean = sum/n; for (num in nums) { dev = nums[num] - mean; if (dev > 0) { avg_dev += dev; } else { avg_dev -= dev; } vari += dev^2; skew += dev^3; kurt += dev^4; } avg_dev /= n; vari /= (n - 1); std_dev = sqrt(vari); if (vari > 0) { skew /= (n * vari * std_dev); kurt = kurt/(n * vari * vari) - 3.0; } nums[n] = nums[0]; heapsort(n, nums); mid = int(n/2)+1; median = (n % 2) ? nums[mid] : (nums[mid] + nums[mid-1])/2; #printf("n: %d\n", n); #printf("median: %f\n", median); #printf("mean: %f\n", mean); #printf("average_deviation: %f\n", avg_dev); #printf("standard_deviation: %f\n", std_dev); #printf("variance: %f\n", vari); #printf("skew: %f\n", skew); #printf("kurtosis: %f\n", kurt); printf("\t%f\t%f\t%d", mean, std_dev,n); # printf("#n\tmedian\tmean\taverage_deviation\tstandard_deviation\tvariance\tskew\tkurtosis\tmin\tmax\n"); # printf("%d\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%d\t%d\n", n, median, mean, avg_dev, std_dev, vari, skew, kurt, min, max); } function heapsort (n, ra) { l = int(0.5+n/2) + 1 ir = n; for (;;) { if (l > 1) { rra = ra[--l]; } else { rra = ra[ir]; ra[ir] = ra[1]; if (--ir == 1) { ra[1] = rra; return; } } i = l; j = l * 2; while (j <= ir) { if (j < ir && ra[j] < ra[j+1]) { ++j; } if (rra < ra[j]) { ra[i] = ra[j]; j += (i = j); } else { j = ir + 1; } } ra[i] = rra; } }