diff options
Diffstat (limited to 'lin_reg1.awk')
| -rwxr-xr-x[-rw-r--r--] | lin_reg1.awk | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/lin_reg1.awk b/lin_reg1.awk index cd3db8e..2d21c29 100644..100755 --- a/lin_reg1.awk +++ b/lin_reg1.awk @@ -1,7 +1,7 @@ #!/usr/bin/awk -f ### lin_reg1.awk -# simple linear regression between individual text columns +# simple linear regression between columns BEGIN { OFS = "%.9g" @@ -15,16 +15,16 @@ BEGIN { NR == 1 { header_nf = NF for (n=1; n<=NF; n++) { - ($n !~ number) ? header[n] = $n : header[n] = sprintf("col_%g", n) + ($n !~ number) ? header[n] = $n : header[n] = "col" n } } NF != 0 { - if (NF > max_nf) - max_nf = NF + if (NF > nf_max) + nf_max = NF ### iterate over columns - for (y=1; y<= NF; y++) { + for (y=1; y<=nf_max; y++) { if ($y ~ number) { ### mean @@ -39,7 +39,7 @@ NF != 0 { sum_delta2[y] += delta[y]*delta[y] # x = row, y = col - for (x=1; x<=max_nf; x++) { + 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] @@ -64,11 +64,11 @@ NF != 0 { } END { - for (y=1; y<=max_nf; y++) { - for (x=1; x<=max_nf; x++) { + 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("\n %f \t (%s) \t = %g(%s) \t + %g", + printf("\n %.9g \t (%s) \t = %.9g(%s) \t + %.9g", 10.0*log(r2[x,y])/log(10), header[y], b[x,y], header[x], a[x,y]) } } |
