37 lines
1001 B
Python
37 lines
1001 B
Python
|
#https://gist.github.com/cartr/6513044
|
||
|
# Define the data
|
||
|
|
||
|
# A linear regression line has an equation of the form Y = a + bX, where X is the explanatory variable and Y is the dependent variable. The slope of the line is b, and a is the intercept (the value of y when x = 0).
|
||
|
|
||
|
|
||
|
data = set()
|
||
|
count = int(input("Enter the number of data points: "))
|
||
|
for i in range(count):
|
||
|
x=float(input("X"+str(i+1)+": "))
|
||
|
y=float(input("Y"+str(i+1)+": "))
|
||
|
data.add((x,y))
|
||
|
|
||
|
# Find the average x and y
|
||
|
avgx = 0.0
|
||
|
avgy = 0.0
|
||
|
for i in data:
|
||
|
avgx += i[0]/len(data)
|
||
|
avgy += i[1]/len(data)
|
||
|
|
||
|
# Find the sums
|
||
|
totalxx = 0
|
||
|
totalxy = 0
|
||
|
|
||
|
for i in data:
|
||
|
totalxx += (i[0]-avgx)**2
|
||
|
totalxy += (i[0]-avgx)*(i[1]-avgy)
|
||
|
|
||
|
# Slope/intercept form
|
||
|
m = totalxy/totalxx
|
||
|
b = avgy-m*avgx
|
||
|
|
||
|
print("Best fit line:")
|
||
|
print("y = "+str(m)+"x + "+str(b))
|
||
|
|
||
|
x = float(input("Enter a value to calculate: "))
|
||
|
print("y = "+str(m*x+b))
|