Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import matplotlib.pyplot as plt
- import numpy as np
- file = open("data.txt","r")
- X=[]
- Y=[]
- n=0
- solve=[]
- for line in file:
- n = n+1
- line = line.rstrip().split()
- X.append(float(line[0]))
- Y.append(float(line[1]))
- plt.scatter(X,Y,s=2,c="cyan")
- plt.grid("true")
- y_avg=sum(Y)/n
- sum_x = sum(X)
- sum_y = sum(Y)
- sum_xx = sum([x*x for x in X])
- sum_xxx = sum([x*x*x for x in X])
- sum_xxxx = sum([x*x*x*x for x in X])
- sum_xxxxx = sum([x*x*x*x*x for x in X])
- sum_xxxxxx = sum([x*x*x*x*x*x for x in X])
- sum_xy = sum([x*y for x,y in zip(X,Y)])
- sum_xxy = sum([x*x*y for x,y in zip(X,Y)])
- sum_xxxy = sum([x*x*x*y for x,y in zip(X,Y)])
- sum_xxxxy = sum([x*x*x*x*y for x,y in zip(X,Y)])
- st = sum([(y-y_avg)**2 for y in Y])
- def FOC():
- A = [[n,sum_x],[sum_x,sum_xx]]
- B = [[sum_y],[sum_xy]]
- solve = np.linalg.solve(A,B)
- Y1 = [float(solve[0]+x*solve[1]) for x in X]
- sr1 = sum([(y-y1)**2 for y,y1 in zip(Y,Y1)])
- r1 = ((st-sr1)/st)**(1/2)
- print("First order curve:\na0=",solve[0],", a1=",solve[1])
- print("Correlation coefficient of first order curve = ",r1)
- print("St=",st)
- print("Sr=",sr1)
- plt.plot(X,Y1)
- def SOC():
- A = [[n,sum_x,sum_xx],[sum_x,sum_xx,sum_xxx],[sum_xx,sum_xxx,sum_xxxx]]
- B = [[sum_y],[sum_xy],[sum_xxy]]
- solve = np.linalg.solve(A,B)
- Y2 = [float(solve[0]+x*solve[1]+x*x*solve[2]) for x in X]
- sr2 = sum([(y-y2)**2 for y,y2 in zip(Y,Y2)])
- r2 = ((st-sr2)/st)**(1/2)
- print("Second order curve:\na0=",solve[0],", a1=",solve[1],", a2=",solve[2])
- print("Correlation coefficient of second order curve = ",r2)
- print("St=",st)
- print("Sr=",sr2)
- plt.plot(X,Y2)
- def TOC():
- A = [[n,sum_x,sum_xx,sum_xxx],[sum_x,sum_xx,sum_xxx,sum_xxxx],[sum_xx,sum_xxx,sum_xxxx,sum_xxxxx],[sum_xxx,sum_xxxx,sum_xxxxx,sum_xxxxxx]]
- B = [[sum_y],[sum_xy],[sum_xxy],[sum_xxxy]]
- solve = np.linalg.solve(A,B)
- Y3 = [float(solve[0]+x*solve[1]+x*x*solve[2]+x*x*x*solve[3]) for x in X]
- sr3 = sum([(y-y3)**2 for y,y3 in zip(Y,Y3)])
- r3 = ((st-sr3)/st)**(1/2)
- print((st-sr3)/st)
- print("Third order curve:\na0=",solve[0],", a1=",solve[1],", a2=",solve[2],", a3=",solve[3])
- print("Correlation coefficient of third order curve = ",r3)
- print("St=",st)
- print("Sr=",sr3)
- plt.plot(X,Y3)
- FOC()
- SOC()
- TOC()
- plt.show
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement