Temperature of the Rhine at Lobith
Yearly averages of the water temperature of the Rhine at Lobith.
Author: Do Kester
We need to import some classes
In[1]:
import numpy as numpy
from astropy.io import ascii
import matplotlib.pyplot as plt
from BayesicFitting import PolynomialModel
from BayesicFitting import Fitter
from BayesicFitting import formatter as fmt
Read the data. Subtract 1900 to get ``nicer'' data during the fit.
In[2]:
tbl = ascii.read( "data/temp-rijn.txt" )
jr = tbl['Jaar'].data
te = tbl['gemiddelde'].data
jr -= 1900
Make a model: a Polynomial of order 2
In[3]:
mdl = PolynomialModel( 2 )
print( mdl )
Out[3]:
Polynomial: f( x:p ) = p_0 + p_1 * x + p_2 * x^2
Select a fitter.
In[5]:
ftr = Fitter( jr, mdl )
par = ftr.fit( te )
print( "params :", fmt( par ) )
print( "stdevs :", fmt( ftr.stdevs ) )
Out[5]:
params : [ 10.410 0.028 0.000]
stdevs : [ 0.230 0.008 0.000]
In[6]:
#plt.plot( jr + 1900, te, 'k. ' )
xx = numpy.linspace( 0, 120, 121, dtype=float )
yfit = mdl( xx )
yerr = ftr.monteCarloError( xdata=xx )
fig, ax = plt.subplots()
ax.plot(xx+1900, yfit, 'r-')
ax.fill_between( xx+1900, yfit - yerr, yfit + yerr, color='b' )
ax.plot(jr+1900, te, 'k.')
plt.xlabel( "Year")
plt.ylabel( "Temperature")
plt.title( "Water of the Rhine" )
plt.show()
Out[6]: