[task] plot routine for quantile distance quotients

This commit is contained in:
sebastianp 2016-07-28 13:42:50 +02:00
parent 1ed83d786d
commit 19ced8b8c5
2 changed files with 33 additions and 16 deletions

View File

@ -405,25 +405,44 @@ class PDFstatistics(object):
def histplot(self ,array , bins = 100, label=None): def histplot(self, array, label=None):
# baustelle # baustelle
binlist = []
if array[-1] == '5':
bfactor = 0.001
badd = 0
elif array[-1] == '1':
bfactor = 0.003
badd = 0
else:
bfactor = 0.006
badd = 0.4
for i in range(100):
binlist.append(badd+bfactor*i)
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
plt.hist(self.axis, self.data()) plt.hist(eval('self.'+array),bins = binlist)
plt.xlabel('x') plt.xlabel('Values')
plt.ylabel('f(x)') plt.ylabel('Frequency')
plt.autoscale(axis='x', tight=True) #plt.autoscale(axis='x', tight=True)
if self: title_str = 'Quantile distance quotient distribution'
title_str = 'Probability density function '
if label: if label:
title_str += label title_str += ' (' + label + ')'
title_str.strip()
else:
title_str = 'Function not suitable as probability density function'
plt.title(title_str) plt.title(title_str)
plt.show() plt.show()
def getTheta(self,number):
if number == 0:
return self.theta015
elif number == 1:
return self.theta1
elif number == 2:
return self.theta2
def getPDFDict(self, month, evt): def getPDFDict(self, month, evt):
self.pdfdict = PDFDictionary.from_quakeml(os.path.join(self.directory,month,evt)) self.pdfdict = PDFDictionary.from_quakeml(os.path.join(self.directory,month,evt))

View File

@ -326,7 +326,7 @@ class ProbabilityDensityFunction(object):
raise ValueError('value out of bounds: {0}'.format(value)) raise ValueError('value out of bounds: {0}'.format(value))
return self.prob_limits((value, self.axis[-1])) return self.prob_limits((value, self.axis[-1]))
def prob_limits(self, limits, oversampling=1.): def prob_limits(self, limits, oversampling=10.):
sampling = self.incr / oversampling sampling = self.incr / oversampling
lim = np.arange(limits[0], limits[1], sampling) lim = np.arange(limits[0], limits[1], sampling)
data = self.data(lim) data = self.data(lim)
@ -353,7 +353,6 @@ class ProbabilityDensityFunction(object):
r = self.axis[-1] r = self.axis[-1]
m = (r + l) / 2 m = (r + l) / 2
diff = prob_value - self.prob_lt_val(m) diff = prob_value - self.prob_lt_val(m)
while abs(diff) > eps and ((r - l) > self.incr): while abs(diff) > eps and ((r - l) > self.incr):
if diff > 0: if diff > 0:
l = m l = m
@ -366,12 +365,11 @@ class ProbabilityDensityFunction(object):
def quantile_distance(self, prob_value): def quantile_distance(self, prob_value):
ql = self.quantile(prob_value) ql = self.quantile(prob_value)
qu = self.quantile(1 - prob_value) qu = self.quantile(1 - prob_value)
return qu - ql return qu - ql
def qtile_dist_quot(self,x): def qtile_dist_quot(self,x):
if x < 0 or x > 0.5: if x <= 0 or x >= 0.5:
raise ValueError('Value out of range.') raise ValueError('Value out of range.')
return self.quantile_distance(0.5-x)/self.quantile_distance(x) return self.quantile_distance(0.5-x)/self.quantile_distance(x)