In [1]:
%matplotlib inline
from pylab import*
import numpy as np
In [2]:
from cvfit import fitting
from cvfit.fitting import SingleFitSession
from cvfit.fitting import MultipleFitSession
from cvfit.fitting import simplex
from cvfit import data
from cvfit.errors import residuals
from cvfit.errors import SSD
from cvfit.errors import SSDlik
In [3]:
dataset = data.XYDataSet()
X = [2.5, 5.0, 10.0, 20.0, 40.0]
Y = [5.576, 7.282, 12.521, 16.138, 23.219]
S = None #[1.2003]*5
dataset.from_columns(X, Y, S)
print(dataset)
In [11]:
from cvfit.equations import Hill
eq = Hill('Langmuir')
#fs = SingleFitSession(dataset, eq)
eq.propose_guesses(dataset)
eq.guess = np.array([0.0, 31.0, 15.0, 1.0])
eq.pars = eq.guess.copy()
In [12]:
coeffs, Smin = simplex(SSD, eq.theta, eq, dataset.X, dataset.Y, dataset.W)
eq.theta = coeffs
kfit = len(np.nonzero(np.invert(eq.fixed))[0])
ndf = dataset.size() - kfit
var = Smin / ndf
Sres = sqrt(var)
Lmax = -SSDlik(eq.theta, eq, dataset)
In [13]:
print('Number of point fitted = {0:d}'.format(dataset.size()))
print('\nNumber of parameters estimated = {0:d}'.format(kfit))
print('\nDegrees of freedom = {0:d}'.format(ndf))
print('\nResidual error SD = {0:.3f} (variance = {1:.3f})'.format(Sres, var))
print('\nMinimum SSD = {0:.3f}; \nMax log-likelihood = {1:.3f}'.format(Smin, Lmax))
In [ ]:
In [5]:
fs.fit()
fs.calculate_errors()
print(fs.string_estimates())
print(fs.string_liklimits())
In [ ]: