diff options
Diffstat (limited to '')
| -rw-r--r-- | lin_reg.py | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/lin_reg.py b/lin_reg.py new file mode 100644 index 0000000..8fb88b2 --- /dev/null +++ b/lin_reg.py @@ -0,0 +1,50 @@ +#!/usr/bin/python +#/usr/local/bin/python2.7 + +import numpy as np + + +def main(): + + dataz = np.genfromtxt('example.csv', delimiter=',', names=True) + + y = dataz['attitude'] + x = dataz['correct'] + print 'x = {} {}'.format(x, np.mean(x)) + print 'y = {} {}'.format(y, np.mean(y)) + + delta_x = x - np.mean(x) + delta_y = y - np.mean(y) + delta_xy = delta_x*delta_y + delta2_x = delta_x**2 + delta2_y = delta_y**2 + #print 'delta_x = {} {}'.format(delta_x, np.sum(delta_x)) + #print 'delta_y = {} {}'.format(delta_y, np.sum(delta_y)) + #print 'delta_xy = {} {}'.format(delta_xy, np.sum(delta_xy)) + #print 'delta2_x = {} {}'.format(delta2_x, np.sum(delta2_x)) + #print 'delta2_y = {} {}'.format(delta2_y, np.sum(delta2_y)) + + sx = np.sqrt(np.sum(delta2_x)/(delta2_x.size - 1)) + sy = np.sqrt(np.sum(delta2_y)/(delta2_y.size - 1)) + r = np.sum(delta_xy)/np.sqrt(np.sum(delta2_x)*np.sum(delta2_y)) + #print 'sx = {}'.format(sx) + #print 'sy = {}'.format(sy) + print 'r = {}'.format(r) + print 'r^2 = {}'.format(r**2) + + b = r*(sy/sx) + a = np.mean(y) - b*np.mean(x) + print 'b = {}'.format(b) + print 'a = {}'.format(a) + + err = y - (a + b*x) + b_err = np.sqrt(np.sum(err**2.0)/((x.size - 2)*np.sum(delta2_x))) + a_err = np.sqrt(np.sum(x**2.0)*np.sum(err**2.0)/(x.size*(x.size - 2)*np.sum(delta2_x))) + print 'b_err = {}'.format(b_err) + print 'a_err = {}'.format(a_err) + + print ' (attitude) \t= {}(correct) + {}'.format(b, a) + + +if __name__ == '__main__': + main() |
