diff options
| author | wukong <wukong@longaeva> | 2019-01-06 03:55:00 -0800 |
|---|---|---|
| committer | wukong <wukong@longaeva> | 2019-01-06 03:55:00 -0800 |
| commit | 6333d2e42921b99bf0af537649d47def0b3f4c32 (patch) | |
| tree | 01ed4ff8061c5a649adffb6044aa6d059fcf00dc /lin_reg.awk | |
| parent | dfa4142902f69fca35fe5885e67067ce2572d9e0 (diff) | |
updated lin_reg with additional particular solutions which now include, x and
y intercepts, y(mean(x)), weighted y(weighted_mean(x)), distance of weighted
mean solution from the mean
Diffstat (limited to 'lin_reg.awk')
| -rw-r--r-- | lin_reg.awk | 17 |
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])) } } } |
