summaryrefslogtreecommitdiff
path: root/cov.awk
diff options
context:
space:
mode:
authorwukong <wukong@longaeva>2019-04-13 13:04:26 -0700
committerwukong <wukong@longaeva>2019-04-13 13:04:26 -0700
commit0e225c6d140a5a4986d0771aefb8a8edbe5d435d (patch)
tree78d197f2e6c972e9483c95ee1154bee2b76d15c4 /cov.awk
parent187ab8368c39a3fd459d5715c91a71104413299a (diff)
optimized covariance script;
added 'nan' output to diff; added ':' output delimiter to lin_reg and quad_reg; fixed broken r^2 calc in quad_reg;
Diffstat (limited to 'cov.awk')
-rw-r--r--cov.awk12
1 files changed, 7 insertions, 5 deletions
diff --git a/cov.awk b/cov.awk
index 56734e4..c06a447 100644
--- a/cov.awk
+++ b/cov.awk
@@ -4,6 +4,7 @@
# online covariance algorithm
BEGIN {
+ OFS = FS
sign = "[+-]?"
decimal = "[0-9]+[.]?[0-9]*"
fraction = "[.][0-9]*"
@@ -22,16 +23,17 @@ NF > 0 {
### columns
for (y=1; y<=nf_max; y++) {
- if ($y == header[y])
- continue
### rows
for (x=1; x<=nf_max; x++) {
+ if ($x !~ number || $x == header[x])
+ continue
count[x,y]++
dx[x,y] = $x - meanx[x,y]
+ dy[x,y] = $y - meany[x,y]
meanx[x,y] += dx[x,y]/count[x,y]
- meany[x,y] += ($y - meany[x,y])/count[x,y]
- C[x,y] += dx[x,y]*($y - meany[x,y])
- cov_pop[x,y] = C[x,y]/count[x,y]
+ meany[x,y] += dy[x,y]/count[x,y]
+ C[x,y] += dx[x,y]*dy[x,y]
+ # cov_pop[x,y] = C[x,y]/count[x,y]
(count[x,y] > 1) ? cov_samp[x,y] = C[x,y]/(count[x,y] - 1) : cov_samp[x,y] = ""
}
}