diff options
Diffstat (limited to '')
| -rw-r--r-- | lin_reg.awk | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/lin_reg.awk b/lin_reg.awk index 56114a2..0e51266 100644 --- a/lin_reg.awk +++ b/lin_reg.awk @@ -4,7 +4,7 @@ # simple linear regression between columns BEGIN { - OFMT = "%.18g" + OFMT = "%.9g" sign = "[+-]?" decimal = "[0-9]+[.]?[0-9]*" fraction = "[.][0-9]*" @@ -23,6 +23,8 @@ NF > 0 { ### iterate over columns for (y=1; y<=nf_max; y++) { + if ($y == header[n]) + continue if ($y ~ number) { ### mean @@ -42,10 +44,10 @@ NF > 0 { for (x=1; x<=nf_max; x++) { count[x,y] += 1 sum_xy[x,y] += $x*$y - sum_delta_xy[x,y] += delta[x]*delta[y] + sum_delta_xy[x,y] += delta0[x]*delta1[y] # covariance - #(count[x,y] > 1) ? cov[x,y] = sum_delta_xy[x,y]/(count[x,y] - 1) : cov[x,y] = "" + (count[x,y] > 1) ? cov[x,y] = sum_delta_xy[x,y]/(count[x,y] - 1) : cov[x,y] = "" # correlation r_den[x,y] = sqrt(sum_delta2[x]*sum_delta2[y]) @@ -84,7 +86,7 @@ END { for (y=1; y<=nf_max; y++) { for (x=1; x<=nf_max; x++) { if (x != y && r[x,y]) { - printf("%.9g "OFS" (%s) "OFS" = (%.9g +/- %.9g)(%s) "OFS" + (%.9g +/- %.9g)%s", + printf(OFMT OFS "(%s)" OFS " = (" OFMT " +/- " OFMT ")(%s)" OFS " + (" OFMT " +/- "OFMT ")%s", 10.0*log(r[x,y]*r[x,y])/log(10.0), header[y], b[x,y], b_err[x,y], header[x], a[x,y], a_err[x,y], ORS) } |
