#! /bin/bash File=$1 Method=$2 # find the avgestimate and avgactual AvgEstimate=$(gawk -v Method=$Method 'BEGIN{FS=OFS=","}{if ($2==Method){print $0}}' $File | gawk 'BEGIN{FS=OFS=","}{sum+=$3}END{print sum/NR}') AvgActual=$(gawk -v Method=$Method 'BEGIN{FS=OFS=","}{if ($2==Method){print $0}}' $File | gawk 'BEGIN{FS=OFS=","}{sum+=$4}END{print sum/NR}') gawk -v Method=$Method 'BEGIN{FS=OFS=","}{if ($2==Method){print $0}}' $File | gawk -v Method=$Method -v AvgEstimate=$AvgEstimate -v AvgActual=$AvgActual 'BEGIN{FS=OFS=","} { Re = ($3-$4)/$4 mre[NR] = Re < 0 ? -1* Re : Re; EstimatedEffort=$3 ActualEffort=$4 Corr_Se+=((EstimatedEffort-AvgEstimate)*(EstimatedEffort-AvgEstimate)); Corr_Sa+=((ActualEffort-AvgActual)*(ActualEffort-AvgActual)); Corr_Sea+=((EstimatedEffort-AvgEstimate)*(ActualEffort-AvgActual)); } END { sum=0; for (i=1;i<=NR;i++) {sum+=mre[i]} mmre=100*(sum/NR) pred30=0 for (i=1;i<=NR;i++) {if (mre[i]<=0.3){pred30++;}} pred30=100*(pred30/NR) Corr_Se=Corr_Se/(NR-1); Corr_Sa=Corr_Sa/(NR-1); Corr_Sea=Corr_Sea/(NR-1); Corr=(Corr_Sea/sqrt(Corr_Se*Corr_Sa)); n = asort(mre) i = int (n/2) med_mre = 100*mre[i] printf("%s,%.2f,%.2f,%.1f,%.3f\n",Method, mmre, med_mre, pred30, Corr); }'