diff options
| author | wukong <wukong@longaeva> | 2026-05-05 11:15:46 -0700 |
|---|---|---|
| committer | wukong <wukong@longaeva> | 2026-05-05 11:15:46 -0700 |
| commit | 6ff1fc477e92897177cb4cebdaa21fa41a41c0a4 (patch) | |
| tree | fbc67ce5e5071960758f1b508d22c851a1a40ab3 /lin_reg2.awk | |
| parent | b60f09401a15721f626bcb7c852f68b82fe39c1c (diff) | |
removed extra versions of diff and lin_reg;
Diffstat (limited to '')
| -rw-r--r-- | lin_reg2.awk | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/lin_reg2.awk b/lin_reg2.awk deleted file mode 100644 index d6097e3..0000000 --- a/lin_reg2.awk +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/awk -f - -### lin_reg2.awk -# simple linear regression between columns - - -BEGIN { - sign = "[+-]?" - decimal = "[0-9]+[.]?[0-9]*" - fraction = "[.][0-9]*" - exponent = "([Ee]" sign "[0-9]+)?" - number = "^" sign "(" decimal "|" fraction ")" exponent "$" -} - - -# column headers -NR == 1 { - for (n=1; n<=NF; n++) - ($n ~ number) ? header[n] = "col" n : header[n] = $n -} - - -# read input data -NF > 0 { - (NF > nf_max) ? nf_max = NF : nf_max = nf_max - - # columns - for (y=1; y<=nf_max; y++) { - if ($y == header[n]) - continue - - if ($y ~ number) { - - # mean - count[y] += 1 - sum[y] += $y - sum2[y] += $y*$y - delta0[y] = $y - mean[y] - mean[y] += delta0[y]/count[y] - delta1[y] = $y - mean[y] - sum_delta[y] += delta1[y] - sum_delta2[y] += delta0[y]*delta1[y] - - # x = row, y = col, trendline: y = A + Bx - for (x=1; x<=nf_max; x++) { - count[x,y] += 1 - sum_xy[x,y] += $x*$y - sum_delta_xy[x,y] += delta0[x]*delta1[y] - - # correlation - r_den[x,y] = sqrt(sum_delta2[x]*sum_delta2[y]) - (r_den[x,y]) ? r[x,y] = sum_delta_xy[x,y]/r_den[x,y] : r[x,y] = 1 - - ab_den[x,y] = (count[x,y]*sum2[x] - sum[x]*sum[x]) - if (ab_den[x,y]) { - a[x,y] = (sum[y]*sum2[x] - sum[x]*sum_xy[x,y])/ab_den[x,y] - b[x,y] = (count[x,y]*sum_xy[x,y] - sum[x]*sum[y])/ab_den[x,y] - } - else { - a[x,y] = 0 - b[x,y] = 1 - } - - # error estimate - err_den[x,y] = count[x,y]*(count[x,y] - 2) - if (count[x,y] > 2) { - err[x,y] = $y - (a[x,y] + b[x,y]*$x) - sum_err2[x,y] += err[x,y]*err[x,y] - } - b_err_den[x,y] = (count[x,y] - 2)*sum_delta2[x] - if (b_err_den[x,y]) - b_err[x,y] = sqrt(sum_err2[x,y]/b_err_den[x,y]) - a_err_den[x,y] = count[x,y]*b_err_den[x,y] - if (a_err_den[x,y]) - a_err[x,y] = sqrt(sum2[x]/count[x,y])*b_err[x,y] - } - } - else - continue - } -} - - -END { - for (y=1; y<=nf_max; y++) { - for (x=1; x<=nf_max; x++) { - if (x != y && r[x,y]) { - printf(OFMT OFS "(%s)" OFS " = (" OFMT " +/- " OFMT ")(%s)" OFS " + (" OFMT " +/- " OFMT ")" ORS, - 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]) - } - } - } -} - |
