diff options
Diffstat (limited to '')
| -rw-r--r-- | lin_reg1.awk | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/lin_reg1.awk b/lin_reg1.awk index 9d9f257..ae59c77 100644 --- a/lin_reg1.awk +++ b/lin_reg1.awk @@ -22,28 +22,30 @@ NF > 0 { ### iterate over 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 - mean[y] = sum[y]/count[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] - ### difference from the mean - delta[y] = $y - mean[y] - sum_delta[y] += delta[y] - sum_delta2[y] += delta[y]*delta[y] - # x = row, y = col + # 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] += delta[x]*delta[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] = 0 + (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]) { @@ -65,9 +67,10 @@ END { for (y=1; y<=nf_max; y++) { for (x=1; x<=nf_max; x++) { if (x != y && r[x,y]) { - r2[x,y] = r[x,y]*r[x,y] printf(OFMT OFS "(%s)" OFS " = " OFMT "(%s)" OFS " + " OFMT ORS, - 10.0*log(r2[x,y])/log(10.0), header[y], b[x,y], header[x], a[x,y]) + 10.0*log(r[x,y]*r[x,y])/log(10.0), + header[y], b[x,y], + header[x], a[x,y]) } } } |
