'''
Created on 05 ago 2017

@author: davide
'''

'''
    Perform linear regression on all Anscome data sets
    Shows that slope and in tercept are the same
'''

import numpy as np
import matplotlib.pyplot as plt

def define_x_y():
    x = [[ 10.,   8.,  13.,   9.,  11.,  14.,   6.,   4.,  12.,   7.,   5.],
         [ 10.,   8.,  13.,   9.,  11.,  14.,   6.,   4.,  12.,   7.,   5.],
         [ 10.,   8.,  13.,   9.,  11.,  14.,   6.,   4.,  12.,   7.,   5.],
         [  8.,   8.,   8.,   8.,   8.,   8.,   8.,  19.,   8.,   8.,   8.]]
    
    y = [[ 8.04,   6.95,   7.58,   8.81,   8.33,   9.96,   7.24,   4.26, 10.84,   4.82,   5.68],
         [ 9.14,   8.14,   8.74,   8.77,   9.26,   8.1,    6.13,   3.1 ,  9.13,   7.26,   4.74],
         [ 7.46,   6.77,  12.74,   7.11,   7.81,   8.84,   6.08,   5.39,  8.15,   6.42,   5.73],
         [ 6.58,   5.76,   7.71,   8.84,   8.47,   7.04,   5.25,  12.5,  5.56,   7.91,   6.89]]
    
    return x, y

anscombe_x, anscombe_y = define_x_y()

for x, y in zip(anscombe_x, anscombe_y):
    print(x)
    print(y)
    a, b = np.polyfit(x, y, 1)
    print('slope:', a, 'intercept:', b)
    _ = plt.plot(x, y, marker = '.', linestyle = 'none')
    plt.margins(0.02)
    x_fit = np.array([min(x), max(x)])
    y_fit = a*x_fit + b
    _ = plt.plot(x_fit, y_fit)
    
    plt.show()