summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lin_reg.awk17
1 files changed, 13 insertions, 4 deletions
diff --git a/lin_reg.awk b/lin_reg.awk
index 28f94a7..7e71804 100644
--- a/lin_reg.awk
+++ b/lin_reg.awk
@@ -74,6 +74,12 @@ NF > 0 {
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]
+
+ # weighted mean, from HP-20S manual
+ xw[x,y] = sum_xy[x,y]/sum[y]
+ yw[x,y] = b[x,y]*xw[x,y] + a[x,y]
+ xw_dist[x,y] = (xw[x,y] - mean[x])
+ yw_dist[x,y] = b[x,y]*(xw[x,y] - mean[x])
}
}
else
@@ -85,12 +91,15 @@ 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 ") \t [" OFMT "," OFMT "] \t [" OFMT "," OFMT "]" ORS,
+ printf(OFMT OFS "(%s)" OFS " = (" OFMT " +/- " OFMT ")(%s)" OFS " + (" OFMT " +/- " OFMT ")",
(r[x,y]*r[x,y]),
header[y], b[x,y], b_err[x,y],
- header[x], a[x,y], a_err[x,y],
- mean[x], b[x,y]*(mean[x]) + a[x,y],
- sum_xy[x,y]/sum[y], b[x,y]*(sum_xy[x,y]/sum[y]) + a[x,y])
+ header[x], a[x,y], a_err[x,y])
+ printf(" [" OFMT "," OFMT "][" OFMT "," OFMT "] [" OFMT "," OFMT "]",
+ 0, a[x,y], (-1.0*a[x,y]/b[x,y]), 0,
+ mean[x], b[x,y]*(mean[x]) + a[x,y])
+ printf(" [" OFMT "," OFMT "]", xw[x,y], yw[x,y])
+ printf(" [" OFMT "]" ORS, sqrt(xw_dist[x,y]*xw_dist[x,y] + yw_dist[x,y]*yw_dist[x,y]))
}
}
}