W tym przypadku użyta została metoda najmniejszych kwadratów. Obrazowo mówiąc, tworzysz sobie proste, które leżą w chmurze punktów. Następnie dla każdej prostej wyznaczasz pionowe (wzdłuż osi OY) odległości między daną prostą a każdym z punktów. Odległości te sumujesz i wybierasz prostą, dla której ta suma jest najmniejsza. Innymi słowy otrzymujesz prostą, która jest optymalnie wyśrodkowana pomiędzy wszystkimi punktami.
Kod w Pythonie, który pozwala wyznaczyć współczynniki prostej y = a*x + b:
import numpy as np
x = np.array([1,3,5,7])
y = np.array([66,130,150,200])
A = np.vstack([x, np.ones(len(x))]).T
a, b = np.linalg.lstsq(A, y)[0]
print(a, b)
Na wyjściu dostajemy:
21.1 52.1
czyli tak, jak w Twoim przykładzie.