Pythonで最小二乗法

大学の課題で最小二乗法について調べてこいという課題が出た。
そのレポートを書く際に、コーディングしたPythonコード

#!/usr/bin/env python
# coding: utf-8
# 最小二乗法によるデータの整理

import csv
import math

# 読み込むデータファイル
csvfile = 'data.csv'

n = 0
# 関数の傾き、y軸切片
a, b = 0.0, 0.0
sum_xy, sum_x, sum_y, sum_x2 = 0.0, 0.0, 0.0, 0.0

reader = csv.reader(file(csvfile, 'r'))
for row in reader:
    x, y = float(row[0]), float(row[1])
    sum_xy += x * y
    sum_x  += x
    sum_y  += y
    sum_x2 += math.pow(x, 2)
    n += 1

a = (n * sum_xy - sum_x * sum_y) / (n * sum_x2 - math.pow(sum_x, 2))
b = (sum_x2 * sum_y - sum_xy * sum_x) / (n * sum_x2 - math.pow(sum_x, 2))

print '傾き = ' , a
print 'y軸切片 = ' , b


最小二乗法を理解するのに手助けになり、とても参考になったサイト
http://www12.plala.or.jp/ksp/computPhys/least-square/index.html