# fitting a curve to a straight line

 0 How can I use sage to fit some points like x = [1, 3, 4...] y = [1.2, 4.5, 3.6, ...] to a straight line using method of least squares And make a plot of the points and the line? asked Sep 24 '11 ebs 139 ● 3 ● 10 ● 19

 2 Searching in google for "sage least squares" gives three examples as the three top hits. Here is another example: http://sage.cs.drake.edu/home/pub/52/ You can also use scipy to do it: http://docs.scipy.org/doc/scipy/reference/tutorial/optimize.html#least-square-fitting-leastsq posted Sep 24 '11 Jason Grout 3305 ● 7 ● 28 ● 74 Or R, naturally.kcrisman (Sep 25 '11)
 3 In my opinion the easiest way to do the fit is to use the find_fit function, which is standard in SAGE. For example: sage: x = [1, 3, 4] sage: y = [1.2, 4.5, 3.6] sage: var('a,b,t') sage: model(t)=a*t+b sage: data=zip(x,y) sage: fit=find_fit(data,model,solution_dict=True) # Dictionary is optional but handy sage: model.subs(fit) # Show the model t |--> 0.92142857142840007*t + 0.64285714285636364 sage: plot(model.subs(fit),(t,0,5))+points(data,size=20,color='red') # Nice plot  When you have a huge number of points and you want just a polynomial fit, I found that it is (numerically) better to use the polyfit function from numpy: sage: import numpy as np sage: a,b=np.polyfit(x,y,1) sage: a,b (0.92142857142857137, 0.64285714285714401)  posted Sep 27 '11 Joaquim Puig 171 ● 5 ● 9
 1 I didn't find any reference to linear regression in the SAGE reference manual. That means you have to use Maxima directly. Fortunately that's not so difficult. It's easier if you present the data as a list of pairs (x,y). Try this in a SAGE notebook cell: maxima.load("stats") x=maxima.simple_linear_regression([[0,1],[1,2],[2,4]],conf_level=0.95) x  You are presented a whole bunch of statistics about the regression. From there on I guess you can manage on your own. Good luck. posted Sep 25 '11 Dirk Danckaert 165 ● 1 ● 9
 1 I have a feeling that the answer to this ask.sagemath question may also be helpful. It mentions the built-in find_fit method. posted Sep 25 '11 kcrisman 7427 ● 17 ● 76 ● 166

[hide preview]