In [1]:
%run basics
%matplotlib
import scipy.odr
import statsmodels.api as sm
In [2]:
def linear_function(B,x):
"""
Purpose:
Linear function for use with orthogonal distance regression.
Usage:
linear = scipy.odr.Model(qcutils.linear_function)
where B is a list of slope and offset values
x is an array of x values
"""
return B[0]*x + B[1]
In [3]:
x = numpy.arange(0,1000)+500*numpy.random.rand(1000)
y = numpy.arange(0,1000)+500*numpy.random.rand(1000)
In [4]:
fig=plt.figure()
plt.plot(x,y,'b.')
plt.show()
In [5]:
linear = scipy.odr.Model(linear_function)
mydata = scipy.odr.Data(x,y)
myodr = scipy.odr.ODR(mydata,linear,beta0=[1,0])
myoutput = myodr.run()
myoutput.pprint()
In [6]:
resols = sm.OLS(y,sm.add_constant(x,prepend=False)).fit()
print resols
In [7]:
print resols.params[0],resols.params[1]
In [11]:
myoutput.beta
Out[11]:
In [ ]: