In [40]:
import numpy as np, scipy as sp, seaborn as sb

true_a = -3
true_h = 9.25
true_k = 25000
true_sigma = 10

x_data = np.array([4, 5, 6, 7, 8, 9, 10, 11, 12]) 
observed_y = true_a * (x_data - true_h)**2 + true_k + np.random.normal(loc=0, scale=true_sigma, size=len(x_data))

In [46]:
backup_observed_y = observed_y

In [41]:
import matplotlib.pyplot as plt
%matplotlib inline

In [42]:
plt.figure(figsize=[8,8])
plt.xlabel('Hours Worked', size=14)
plt.ylabel('Net Revenue', size=14)
#plt.ylim([0,350])
#plt.xlim([0,12])
plt.title('Hours worked vs net revenue', size=16)
plt.scatter(x_data, observed_y);


$ y = a(x-h)^2 + k $


In [26]:
def normalize(log_p):
  shifted_p = np.exp(log_p - np.max(log_p))
  normalized_log_p = shifted_p/shifted_p.sum()
  return normalized_log_p

In [43]:
import itertools
import scipy.stats as ss

# Come up with a hypothesis for each parameter
a_hypotheses = np.array([-4,-3,-2,-1])
h_hypotheses = np.array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])
k_hypotheses = np.array([18000, 20000, 23000, 25000, 26000, 28000, 30000])
sigma_hypotheses = np.array([5, 10, 15, 20, 25])

# Create list of every possible combination of them.
hypotheses = list(itertools.product(a_hypotheses, h_hypotheses, k_hypotheses, sigma_hypotheses))

In [44]:
# Start with an uninformative prior
# Every hypothesis gets an equal footing
# We'll be working in log space as an optimization
# So that our numbers don't get so small that the computer 
# rounds them to zero.
hypothesis_likelihoods = np.log(np.array([1]*len(hypotheses)))

for i, hypotheses_tuple in enumerate(hypotheses):
  a_hypothesis, h_hypothesis, k_hypothesis, sigma_hypothesis = hypotheses_tuple
  for x_datum, y_datum in zip(x_data, observed_y):
    # For the given hypothetical value of each parameter
    # let's compute a prediction and the error
    predicted_y = a_hypothesis * (x_datum - h_hypothesis)**2 + k_hypothesis
    prediction_error = y_datum - predicted_y
    
    # On average, the error should be centered around zero
    # just like in a standard regression (aka normal residuals).
    y_probability = ss.norm.pdf(0, loc=prediction_error, scale=sigma_hypothesis)
    
    # Multiply probability density but
    # we're in log space so just add them
    hypothesis_likelihoods[i] += np.log(y_probability)
    
hypothesis_likelihoods = normalize(hypothesis_likelihoods)

#normalized_likelihoods = normalize(hypothesis_likelihoods)
evaluated_hypotheses = list(zip(hypotheses, hypothesis_likelihoods))


//anaconda/lib/python3.4/site-packages/ipykernel/__main__.py:18: RuntimeWarning: divide by zero encountered in log

In [47]:
evaluated_hypotheses


Out[47]:
[((-4, 0, 18000, 5), 0.0),
 ((-4, 0, 18000, 10), 0.0),
 ((-4, 0, 18000, 15), 0.0),
 ((-4, 0, 18000, 20), 0.0),
 ((-4, 0, 18000, 25), 0.0),
 ((-4, 0, 20000, 5), 0.0),
 ((-4, 0, 20000, 10), 0.0),
 ((-4, 0, 20000, 15), 0.0),
 ((-4, 0, 20000, 20), 0.0),
 ((-4, 0, 20000, 25), 0.0),
 ((-4, 0, 23000, 5), 0.0),
 ((-4, 0, 23000, 10), 0.0),
 ((-4, 0, 23000, 15), 0.0),
 ((-4, 0, 23000, 20), 0.0),
 ((-4, 0, 23000, 25), 0.0),
 ((-4, 0, 25000, 5), 0.0),
 ((-4, 0, 25000, 10), 0.0),
 ((-4, 0, 25000, 15), 0.0),
 ((-4, 0, 25000, 20), 0.0),
 ((-4, 0, 25000, 25), 1.264849060802196e-317),
 ((-4, 0, 26000, 5), 0.0),
 ((-4, 0, 26000, 10), 0.0),
 ((-4, 0, 26000, 15), 0.0),
 ((-4, 0, 26000, 20), 0.0),
 ((-4, 0, 26000, 25), 0.0),
 ((-4, 1, 18000, 5), 0.0),
 ((-4, 1, 18000, 10), 0.0),
 ((-4, 1, 18000, 15), 0.0),
 ((-4, 1, 18000, 20), 0.0),
 ((-4, 1, 18000, 25), 0.0),
 ((-4, 1, 20000, 5), 0.0),
 ((-4, 1, 20000, 10), 0.0),
 ((-4, 1, 20000, 15), 0.0),
 ((-4, 1, 20000, 20), 0.0),
 ((-4, 1, 20000, 25), 0.0),
 ((-4, 1, 23000, 5), 0.0),
 ((-4, 1, 23000, 10), 0.0),
 ((-4, 1, 23000, 15), 0.0),
 ((-4, 1, 23000, 20), 0.0),
 ((-4, 1, 23000, 25), 0.0),
 ((-4, 1, 25000, 5), 0.0),
 ((-4, 1, 25000, 10), 0.0),
 ((-4, 1, 25000, 15), 0.0),
 ((-4, 1, 25000, 20), 4.9406564584124654e-324),
 ((-4, 1, 25000, 25), 4.4661910643010153e-209),
 ((-4, 1, 26000, 5), 0.0),
 ((-4, 1, 26000, 10), 0.0),
 ((-4, 1, 26000, 15), 0.0),
 ((-4, 1, 26000, 20), 0.0),
 ((-4, 1, 26000, 25), 0.0),
 ((-4, 2, 18000, 5), 0.0),
 ((-4, 2, 18000, 10), 0.0),
 ((-4, 2, 18000, 15), 0.0),
 ((-4, 2, 18000, 20), 0.0),
 ((-4, 2, 18000, 25), 0.0),
 ((-4, 2, 20000, 5), 0.0),
 ((-4, 2, 20000, 10), 0.0),
 ((-4, 2, 20000, 15), 0.0),
 ((-4, 2, 20000, 20), 0.0),
 ((-4, 2, 20000, 25), 0.0),
 ((-4, 2, 23000, 5), 0.0),
 ((-4, 2, 23000, 10), 0.0),
 ((-4, 2, 23000, 15), 0.0),
 ((-4, 2, 23000, 20), 0.0),
 ((-4, 2, 23000, 25), 0.0),
 ((-4, 2, 25000, 5), 0.0),
 ((-4, 2, 25000, 10), 0.0),
 ((-4, 2, 25000, 15), 0.0),
 ((-4, 2, 25000, 20), 2.5947296901760089e-205),
 ((-4, 2, 25000, 25), 6.0832713239818281e-133),
 ((-4, 2, 26000, 5), 0.0),
 ((-4, 2, 26000, 10), 0.0),
 ((-4, 2, 26000, 15), 0.0),
 ((-4, 2, 26000, 20), 0.0),
 ((-4, 2, 26000, 25), 0.0),
 ((-4, 3, 18000, 5), 0.0),
 ((-4, 3, 18000, 10), 0.0),
 ((-4, 3, 18000, 15), 0.0),
 ((-4, 3, 18000, 20), 0.0),
 ((-4, 3, 18000, 25), 0.0),
 ((-4, 3, 20000, 5), 0.0),
 ((-4, 3, 20000, 10), 0.0),
 ((-4, 3, 20000, 15), 0.0),
 ((-4, 3, 20000, 20), 0.0),
 ((-4, 3, 20000, 25), 0.0),
 ((-4, 3, 23000, 5), 0.0),
 ((-4, 3, 23000, 10), 0.0),
 ((-4, 3, 23000, 15), 0.0),
 ((-4, 3, 23000, 20), 0.0),
 ((-4, 3, 23000, 25), 0.0),
 ((-4, 3, 25000, 5), 0.0),
 ((-4, 3, 25000, 10), 0.0),
 ((-4, 3, 25000, 15), 2.6604854820176314e-219),
 ((-4, 3, 25000, 20), 8.3630417352861904e-125),
 ((-4, 3, 25000, 25), 2.0390663541235187e-81),
 ((-4, 3, 26000, 5), 0.0),
 ((-4, 3, 26000, 10), 0.0),
 ((-4, 3, 26000, 15), 0.0),
 ((-4, 3, 26000, 20), 0.0),
 ((-4, 3, 26000, 25), 0.0),
 ((-4, 4, 18000, 5), 0.0),
 ((-4, 4, 18000, 10), 0.0),
 ((-4, 4, 18000, 15), 0.0),
 ((-4, 4, 18000, 20), 0.0),
 ((-4, 4, 18000, 25), 0.0),
 ((-4, 4, 20000, 5), 0.0),
 ((-4, 4, 20000, 10), 0.0),
 ((-4, 4, 20000, 15), 0.0),
 ((-4, 4, 20000, 20), 0.0),
 ((-4, 4, 20000, 25), 0.0),
 ((-4, 4, 23000, 5), 0.0),
 ((-4, 4, 23000, 10), 0.0),
 ((-4, 4, 23000, 15), 0.0),
 ((-4, 4, 23000, 20), 0.0),
 ((-4, 4, 23000, 25), 0.0),
 ((-4, 4, 25000, 5), 0.0),
 ((-4, 4, 25000, 10), 2.0289259335881571e-281),
 ((-4, 4, 25000, 15), 3.4459225694164999e-126),
 ((-4, 4, 25000, 20), 1.98636069712513e-72),
 ((-4, 4, 25000, 25), 6.7588906812023623e-48),
 ((-4, 4, 26000, 5), 0.0),
 ((-4, 4, 26000, 10), 0.0),
 ((-4, 4, 26000, 15), 0.0),
 ((-4, 4, 26000, 20), 0.0),
 ((-4, 4, 26000, 25), 0.0),
 ((-4, 5, 18000, 5), 0.0),
 ((-4, 5, 18000, 10), 0.0),
 ((-4, 5, 18000, 15), 0.0),
 ((-4, 5, 18000, 20), 0.0),
 ((-4, 5, 18000, 25), 0.0),
 ((-4, 5, 20000, 5), 0.0),
 ((-4, 5, 20000, 10), 0.0),
 ((-4, 5, 20000, 15), 0.0),
 ((-4, 5, 20000, 20), 0.0),
 ((-4, 5, 20000, 25), 0.0),
 ((-4, 5, 23000, 5), 0.0),
 ((-4, 5, 23000, 10), 0.0),
 ((-4, 5, 23000, 15), 0.0),
 ((-4, 5, 23000, 20), 0.0),
 ((-4, 5, 23000, 25), 0.0),
 ((-4, 5, 25000, 5), 0.0),
 ((-4, 5, 25000, 10), 1.1232264711993632e-150),
 ((-4, 5, 25000, 15), 4.4197215468837202e-68),
 ((-4, 5, 25000, 20), 9.635148170697381e-40),
 ((-4, 5, 25000, 25), 5.6077365714333122e-27),
 ((-4, 5, 26000, 5), 0.0),
 ((-4, 5, 26000, 10), 0.0),
 ((-4, 5, 26000, 15), 0.0),
 ((-4, 5, 26000, 20), 0.0),
 ((-4, 5, 26000, 25), 0.0),
 ((-4, 6, 18000, 5), 0.0),
 ((-4, 6, 18000, 10), 0.0),
 ((-4, 6, 18000, 15), 0.0),
 ((-4, 6, 18000, 20), 0.0),
 ((-4, 6, 18000, 25), 0.0),
 ((-4, 6, 20000, 5), 0.0),
 ((-4, 6, 20000, 10), 0.0),
 ((-4, 6, 20000, 15), 0.0),
 ((-4, 6, 20000, 20), 0.0),
 ((-4, 6, 20000, 25), 0.0),
 ((-4, 6, 23000, 5), 0.0),
 ((-4, 6, 23000, 10), 0.0),
 ((-4, 6, 23000, 15), 0.0),
 ((-4, 6, 23000, 20), 0.0),
 ((-4, 6, 23000, 25), 0.0),
 ((-4, 6, 25000, 5), 1.5421326817266631e-289),
 ((-4, 6, 25000, 10), 1.9962938608359053e-72),
 ((-4, 6, 25000, 15), 2.6488950340869901e-33),
 ((-4, 6, 25000, 20), 3.5180149686915914e-20),
 ((-4, 6, 25000, 25), 1.8567299662099475e-14),
 ((-4, 6, 26000, 5), 0.0),
 ((-4, 6, 26000, 10), 0.0),
 ((-4, 6, 26000, 15), 0.0),
 ((-4, 6, 26000, 20), 0.0),
 ((-4, 6, 26000, 25), 0.0),
 ((-4, 7, 18000, 5), 0.0),
 ((-4, 7, 18000, 10), 0.0),
 ((-4, 7, 18000, 15), 0.0),
 ((-4, 7, 18000, 20), 0.0),
 ((-4, 7, 18000, 25), 0.0),
 ((-4, 7, 20000, 5), 0.0),
 ((-4, 7, 20000, 10), 0.0),
 ((-4, 7, 20000, 15), 0.0),
 ((-4, 7, 20000, 20), 0.0),
 ((-4, 7, 20000, 25), 0.0),
 ((-4, 7, 23000, 5), 0.0),
 ((-4, 7, 23000, 10), 0.0),
 ((-4, 7, 23000, 15), 0.0),
 ((-4, 7, 23000, 20), 0.0),
 ((-4, 7, 23000, 25), 0.0),
 ((-4, 7, 25000, 5), 1.8174429915052824e-111),
 ((-4, 7, 25000, 10), 6.5774754409466259e-28),
 ((-4, 7, 25000, 15), 1.6172199446472745e-13),
 ((-4, 7, 25000, 20), 4.7397602451934762e-09),
 ((-4, 7, 25000, 25), 2.4637821751820169e-07),
 ((-4, 7, 26000, 5), 0.0),
 ((-4, 7, 26000, 10), 0.0),
 ((-4, 7, 26000, 15), 0.0),
 ((-4, 7, 26000, 20), 0.0),
 ((-4, 7, 26000, 25), 0.0),
 ((-4, 8, 18000, 5), 0.0),
 ((-4, 8, 18000, 10), 0.0),
 ((-4, 8, 18000, 15), 0.0),
 ((-4, 8, 18000, 20), 0.0),
 ((-4, 8, 18000, 25), 0.0),
 ((-4, 8, 20000, 5), 0.0),
 ((-4, 8, 20000, 10), 0.0),
 ((-4, 8, 20000, 15), 0.0),
 ((-4, 8, 20000, 20), 0.0),
 ((-4, 8, 20000, 25), 0.0),
 ((-4, 8, 23000, 5), 0.0),
 ((-4, 8, 23000, 10), 0.0),
 ((-4, 8, 23000, 15), 0.0),
 ((-4, 8, 23000, 20), 0.0),
 ((-4, 8, 23000, 25), 0.0),
 ((-4, 8, 25000, 5), 2.6962628496574443e-23),
 ((-4, 8, 25000, 10), 7.2591303152141685e-06),
 ((-4, 8, 25000, 15), 0.0010129321573162358),
 ((-4, 8, 25000, 20), 0.0015362528918549377),
 ((-4, 8, 25000, 25), 0.00082880882387645252),
 ((-4, 8, 26000, 5), 0.0),
 ((-4, 8, 26000, 10), 0.0),
 ((-4, 8, 26000, 15), 0.0),
 ((-4, 8, 26000, 20), 0.0),
 ((-4, 8, 26000, 25), 0.0),
 ((-4, 9, 18000, 5), 0.0),
 ((-4, 9, 18000, 10), 0.0),
 ((-4, 9, 18000, 15), 0.0),
 ((-4, 9, 18000, 20), 0.0),
 ((-4, 9, 18000, 25), 0.0),
 ((-4, 9, 20000, 5), 0.0),
 ((-4, 9, 20000, 10), 0.0),
 ((-4, 9, 20000, 15), 0.0),
 ((-4, 9, 20000, 20), 0.0),
 ((-4, 9, 20000, 25), 0.0),
 ((-4, 9, 23000, 5), 0.0),
 ((-4, 9, 23000, 10), 0.0),
 ((-4, 9, 23000, 15), 0.0),
 ((-4, 9, 23000, 20), 0.0),
 ((-4, 9, 23000, 25), 0.0),
 ((-4, 9, 25000, 5), 5.1433174246527028e-10),
 ((-4, 9, 25000, 10), 0.015170673719204384),
 ((-4, 9, 25000, 15), 0.030282335723622749),
 ((-4, 9, 25000, 20), 0.010387063393412957),
 ((-4, 9, 25000, 25), 0.00281626559822396),
 ((-4, 9, 26000, 5), 0.0),
 ((-4, 9, 26000, 10), 0.0),
 ((-4, 9, 26000, 15), 0.0),
 ((-4, 9, 26000, 20), 0.0),
 ((-4, 9, 26000, 25), 0.0),
 ((-4, 10, 18000, 5), 0.0),
 ((-4, 10, 18000, 10), 0.0),
 ((-4, 10, 18000, 15), 0.0),
 ((-4, 10, 18000, 20), 0.0),
 ((-4, 10, 18000, 25), 0.0),
 ((-4, 10, 20000, 5), 0.0),
 ((-4, 10, 20000, 10), 0.0),
 ((-4, 10, 20000, 15), 0.0),
 ((-4, 10, 20000, 20), 0.0),
 ((-4, 10, 20000, 25), 0.0),
 ((-4, 10, 23000, 5), 0.0),
 ((-4, 10, 23000, 10), 0.0),
 ((-4, 10, 23000, 15), 0.0),
 ((-4, 10, 23000, 20), 0.0),
 ((-4, 10, 23000, 25), 0.0),
 ((-4, 10, 25000, 5), 1.2350564356688672e-86),
 ((-4, 10, 25000, 10), 1.0619785299447678e-21),
 ((-4, 10, 25000, 15), 9.2876386807613721e-11),
 ((-4, 10, 25000, 20), 1.6895478630133386e-07),
 ((-4, 10, 25000, 25), 2.426003086867785e-06),
 ((-4, 10, 26000, 5), 0.0),
 ((-4, 10, 26000, 10), 0.0),
 ((-4, 10, 26000, 15), 0.0),
 ((-4, 10, 26000, 20), 0.0),
 ((-4, 10, 26000, 25), 0.0),
 ((-4, 11, 18000, 5), 0.0),
 ((-4, 11, 18000, 10), 0.0),
 ((-4, 11, 18000, 15), 0.0),
 ((-4, 11, 18000, 20), 0.0),
 ((-4, 11, 18000, 25), 0.0),
 ((-4, 11, 20000, 5), 0.0),
 ((-4, 11, 20000, 10), 0.0),
 ((-4, 11, 20000, 15), 0.0),
 ((-4, 11, 20000, 20), 0.0),
 ((-4, 11, 20000, 25), 0.0),
 ((-4, 11, 23000, 5), 0.0),
 ((-4, 11, 23000, 10), 0.0),
 ((-4, 11, 23000, 15), 0.0),
 ((-4, 11, 23000, 20), 0.0),
 ((-4, 11, 23000, 25), 0.0),
 ((-4, 11, 25000, 5), 3.5030050963962744e-298),
 ((-4, 11, 25000, 10), 1.3781745577486304e-74),
 ((-4, 11, 25000, 15), 2.9017216648674989e-34),
 ((-4, 11, 25000, 20), 1.014069270091433e-20),
 ((-4, 11, 25000, 25), 8.3753218985000641e-15),
 ((-4, 11, 26000, 5), 0.0),
 ((-4, 11, 26000, 10), 0.0),
 ((-4, 11, 26000, 15), 0.0),
 ((-4, 11, 26000, 20), 0.0),
 ((-4, 11, 26000, 25), 0.0),
 ((-4, 12, 18000, 5), 0.0),
 ((-4, 12, 18000, 10), 0.0),
 ((-4, 12, 18000, 15), 0.0),
 ((-4, 12, 18000, 20), 0.0),
 ((-4, 12, 18000, 25), 0.0),
 ((-4, 12, 20000, 5), 0.0),
 ((-4, 12, 20000, 10), 0.0),
 ((-4, 12, 20000, 15), 0.0),
 ((-4, 12, 20000, 20), 0.0),
 ((-4, 12, 20000, 25), 0.0),
 ((-4, 12, 23000, 5), 0.0),
 ((-4, 12, 23000, 10), 0.0),
 ((-4, 12, 23000, 15), 0.0),
 ((-4, 12, 23000, 20), 0.0),
 ((-4, 12, 23000, 25), 0.0),
 ((-4, 12, 25000, 5), 0.0),
 ((-4, 12, 25000, 10), 5.7418087699751527e-180),
 ((-4, 12, 25000, 15), 4.236299333527635e-81),
 ((-4, 12, 25000, 20), 4.5814583870799569e-47),
 ((-4, 12, 25000, 25), 1.1538799502653357e-31),
 ((-4, 12, 26000, 5), 0.0),
 ((-4, 12, 26000, 10), 0.0),
 ((-4, 12, 26000, 15), 0.0),
 ((-4, 12, 26000, 20), 0.0),
 ((-4, 12, 26000, 25), 0.0),
 ((-4, 13, 18000, 5), 0.0),
 ((-4, 13, 18000, 10), 0.0),
 ((-4, 13, 18000, 15), 0.0),
 ((-4, 13, 18000, 20), 0.0),
 ((-4, 13, 18000, 25), 0.0),
 ((-4, 13, 20000, 5), 0.0),
 ((-4, 13, 20000, 10), 0.0),
 ((-4, 13, 20000, 15), 0.0),
 ((-4, 13, 20000, 20), 0.0),
 ((-4, 13, 20000, 25), 0.0),
 ((-4, 13, 23000, 5), 0.0),
 ((-4, 13, 23000, 10), 0.0),
 ((-4, 13, 23000, 15), 0.0),
 ((-4, 13, 23000, 20), 0.0),
 ((-4, 13, 23000, 25), 0.0),
 ((-4, 13, 25000, 5), 0.0),
 ((-4, 13, 25000, 10), 0.0),
 ((-4, 13, 25000, 15), 6.1243823959290113e-163),
 ((-4, 13, 25000, 20), 4.2271368214979775e-93),
 ((-4, 13, 25000, 25), 3.9791275883910206e-61),
 ((-4, 13, 26000, 5), 0.0),
 ((-4, 13, 26000, 10), 0.0),
 ((-4, 13, 26000, 15), 0.0),
 ((-4, 13, 26000, 20), 0.0),
 ((-4, 13, 26000, 25), 0.0),
 ((-4, 14, 18000, 5), 0.0),
 ((-4, 14, 18000, 10), 0.0),
 ((-4, 14, 18000, 15), 0.0),
 ((-4, 14, 18000, 20), 0.0),
 ((-4, 14, 18000, 25), 0.0),
 ((-4, 14, 20000, 5), 0.0),
 ((-4, 14, 20000, 10), 0.0),
 ((-4, 14, 20000, 15), 0.0),
 ((-4, 14, 20000, 20), 0.0),
 ((-4, 14, 20000, 25), 0.0),
 ((-4, 14, 23000, 5), 0.0),
 ((-4, 14, 23000, 10), 0.0),
 ((-4, 14, 23000, 15), 0.0),
 ((-4, 14, 23000, 20), 0.0),
 ((-4, 14, 23000, 25), 0.0),
 ((-4, 14, 25000, 5), 0.0),
 ((-4, 14, 25000, 10), 0.0),
 ((-4, 14, 25000, 15), 8.5835202857043013e-295),
 ((-4, 14, 25000, 20), 2.8741575475173579e-167),
 ((-4, 14, 25000, 25), 1.3569535907620415e-108),
 ((-4, 14, 26000, 5), 0.0),
 ((-4, 14, 26000, 10), 0.0),
 ((-4, 14, 26000, 15), 0.0),
 ((-4, 14, 26000, 20), 0.0),
 ((-4, 14, 26000, 25), 0.0),
 ((-4, 15, 18000, 5), 0.0),
 ((-4, 15, 18000, 10), 0.0),
 ((-4, 15, 18000, 15), 0.0),
 ((-4, 15, 18000, 20), 0.0),
 ((-4, 15, 18000, 25), 0.0),
 ((-4, 15, 20000, 5), 0.0),
 ((-4, 15, 20000, 10), 0.0),
 ((-4, 15, 20000, 15), 0.0),
 ((-4, 15, 20000, 20), 0.0),
 ((-4, 15, 20000, 25), 0.0),
 ((-4, 15, 23000, 5), 0.0),
 ((-4, 15, 23000, 10), 0.0),
 ((-4, 15, 23000, 15), 0.0),
 ((-4, 15, 23000, 20), 0.0),
 ((-4, 15, 23000, 25), 0.0),
 ((-4, 15, 25000, 5), 0.0),
 ((-4, 15, 25000, 10), 0.0),
 ((-4, 15, 25000, 15), 0.0),
 ((-4, 15, 25000, 20), 6.911298526336955e-280),
 ((-4, 15, 25000, 25), 1.1387710213459335e-180),
 ((-4, 15, 26000, 5), 0.0),
 ((-4, 15, 26000, 10), 0.0),
 ((-4, 15, 26000, 15), 0.0),
 ((-4, 15, 26000, 20), 0.0),
 ((-4, 15, 26000, 25), 0.0),
 ((-3, 0, 18000, 5), 0.0),
 ((-3, 0, 18000, 10), 0.0),
 ((-3, 0, 18000, 15), 0.0),
 ((-3, 0, 18000, 20), 0.0),
 ((-3, 0, 18000, 25), 0.0),
 ((-3, 0, 20000, 5), 0.0),
 ((-3, 0, 20000, 10), 0.0),
 ((-3, 0, 20000, 15), 0.0),
 ((-3, 0, 20000, 20), 0.0),
 ((-3, 0, 20000, 25), 0.0),
 ((-3, 0, 23000, 5), 0.0),
 ((-3, 0, 23000, 10), 0.0),
 ((-3, 0, 23000, 15), 0.0),
 ((-3, 0, 23000, 20), 0.0),
 ((-3, 0, 23000, 25), 0.0),
 ((-3, 0, 25000, 5), 0.0),
 ((-3, 0, 25000, 10), 0.0),
 ((-3, 0, 25000, 15), 0.0),
 ((-3, 0, 25000, 20), 1.0267391749378173e-273),
 ((-3, 0, 25000, 25), 1.0149688518247103e-176),
 ((-3, 0, 26000, 5), 0.0),
 ((-3, 0, 26000, 10), 0.0),
 ((-3, 0, 26000, 15), 0.0),
 ((-3, 0, 26000, 20), 0.0),
 ((-3, 0, 26000, 25), 0.0),
 ((-3, 1, 18000, 5), 0.0),
 ((-3, 1, 18000, 10), 0.0),
 ((-3, 1, 18000, 15), 0.0),
 ((-3, 1, 18000, 20), 0.0),
 ((-3, 1, 18000, 25), 0.0),
 ((-3, 1, 20000, 5), 0.0),
 ((-3, 1, 20000, 10), 0.0),
 ((-3, 1, 20000, 15), 0.0),
 ((-3, 1, 20000, 20), 0.0),
 ((-3, 1, 20000, 25), 0.0),
 ((-3, 1, 23000, 5), 0.0),
 ((-3, 1, 23000, 10), 0.0),
 ((-3, 1, 23000, 15), 0.0),
 ((-3, 1, 23000, 20), 0.0),
 ((-3, 1, 23000, 25), 0.0),
 ((-3, 1, 25000, 5), 0.0),
 ((-3, 1, 25000, 10), 0.0),
 ((-3, 1, 25000, 15), 1.080363466448137e-317),
 ((-3, 1, 25000, 20), 3.7775205882128601e-180),
 ((-3, 1, 25000, 25), 7.7362519851257402e-117),
 ((-3, 1, 26000, 5), 0.0),
 ((-3, 1, 26000, 10), 0.0),
 ((-3, 1, 26000, 15), 0.0),
 ((-3, 1, 26000, 20), 0.0),
 ((-3, 1, 26000, 25), 0.0),
 ((-3, 2, 18000, 5), 0.0),
 ((-3, 2, 18000, 10), 0.0),
 ((-3, 2, 18000, 15), 0.0),
 ((-3, 2, 18000, 20), 0.0),
 ((-3, 2, 18000, 25), 0.0),
 ((-3, 2, 20000, 5), 0.0),
 ((-3, 2, 20000, 10), 0.0),
 ((-3, 2, 20000, 15), 0.0),
 ((-3, 2, 20000, 20), 0.0),
 ((-3, 2, 20000, 25), 0.0),
 ((-3, 2, 23000, 5), 0.0),
 ((-3, 2, 23000, 10), 0.0),
 ((-3, 2, 23000, 15), 0.0),
 ((-3, 2, 23000, 20), 0.0),
 ((-3, 2, 23000, 25), 0.0),
 ((-3, 2, 25000, 5), 0.0),
 ((-3, 2, 25000, 10), 0.0),
 ((-3, 2, 25000, 15), 2.0080492798179559e-201),
 ((-3, 2, 25000, 20), 9.5199428853232921e-115),
 ((-3, 2, 25000, 25), 5.5647314311743715e-75),
 ((-3, 2, 26000, 5), 0.0),
 ((-3, 2, 26000, 10), 0.0),
 ((-3, 2, 26000, 15), 0.0),
 ((-3, 2, 26000, 20), 0.0),
 ((-3, 2, 26000, 25), 0.0),
 ((-3, 3, 18000, 5), 0.0),
 ((-3, 3, 18000, 10), 0.0),
 ((-3, 3, 18000, 15), 0.0),
 ((-3, 3, 18000, 20), 0.0),
 ((-3, 3, 18000, 25), 0.0),
 ((-3, 3, 20000, 5), 0.0),
 ((-3, 3, 20000, 10), 0.0),
 ((-3, 3, 20000, 15), 0.0),
 ((-3, 3, 20000, 20), 0.0),
 ((-3, 3, 20000, 25), 0.0),
 ((-3, 3, 23000, 5), 0.0),
 ((-3, 3, 23000, 10), 0.0),
 ((-3, 3, 23000, 15), 0.0),
 ((-3, 3, 23000, 20), 0.0),
 ((-3, 3, 23000, 25), 0.0),
 ((-3, 3, 25000, 5), 0.0),
 ((-3, 3, 25000, 10), 2.6105359055434902e-274),
 ((-3, 3, 25000, 15), 4.9781394733284625e-123),
 ((-3, 3, 25000, 20), 1.1896630773158205e-70),
 ((-3, 3, 25000, 25), 9.2766159786210948e-47),
 ((-3, 3, 26000, 5), 0.0),
 ((-3, 3, 26000, 10), 0.0),
 ((-3, 3, 26000, 15), 0.0),
 ((-3, 3, 26000, 20), 0.0),
 ((-3, 3, 26000, 25), 0.0),
 ((-3, 4, 18000, 5), 0.0),
 ((-3, 4, 18000, 10), 0.0),
 ((-3, 4, 18000, 15), 0.0),
 ((-3, 4, 18000, 20), 0.0),
 ((-3, 4, 18000, 25), 0.0),
 ((-3, 4, 20000, 5), 0.0),
 ((-3, 4, 20000, 10), 0.0),
 ((-3, 4, 20000, 15), 0.0),
 ((-3, 4, 20000, 20), 0.0),
 ((-3, 4, 20000, 25), 0.0),
 ((-3, 4, 23000, 5), 0.0),
 ((-3, 4, 23000, 10), 0.0),
 ((-3, 4, 23000, 15), 0.0),
 ((-3, 4, 23000, 20), 0.0),
 ((-3, 4, 23000, 25), 0.0),
 ((-3, 4, 25000, 5), 0.0),
 ((-3, 4, 25000, 10), 6.3492113308214268e-160),
 ((-3, 4, 25000, 15), 3.429927083917493e-72),
 ((-3, 4, 25000, 20), 4.6980919328027756e-42),
 ((-3, 4, 25000, 25), 1.8584376553410868e-28),
 ((-3, 4, 26000, 5), 0.0),
 ((-3, 4, 26000, 10), 0.0),
 ((-3, 4, 26000, 15), 0.0),
 ((-3, 4, 26000, 20), 0.0),
 ((-3, 4, 26000, 25), 0.0),
 ((-3, 5, 18000, 5), 0.0),
 ((-3, 5, 18000, 10), 0.0),
 ((-3, 5, 18000, 15), 0.0),
 ((-3, 5, 18000, 20), 0.0),
 ((-3, 5, 18000, 25), 0.0),
 ((-3, 5, 20000, 5), 0.0),
 ((-3, 5, 20000, 10), 0.0),
 ((-3, 5, 20000, 15), 0.0),
 ((-3, 5, 20000, 20), 0.0),
 ((-3, 5, 20000, 25), 0.0),
 ((-3, 5, 23000, 5), 0.0),
 ((-3, 5, 23000, 10), 0.0),
 ((-3, 5, 23000, 15), 0.0),
 ((-3, 5, 23000, 20), 0.0),
 ((-3, 5, 23000, 25), 0.0),
 ((-3, 5, 25000, 5), 0.0),
 ((-3, 5, 25000, 10), 1.5260968088476337e-88),
 ((-3, 5, 25000, 15), 1.8201726198847206e-40),
 ((-3, 5, 25000, 20), 3.2895545018233904e-24),
 ((-3, 5, 25000, 25), 4.8987577633173952e-17),
 ((-3, 5, 26000, 5), 0.0),
 ((-3, 5, 26000, 10), 0.0),
 ((-3, 5, 26000, 15), 0.0),
 ((-3, 5, 26000, 20), 0.0),
 ((-3, 5, 26000, 25), 0.0),
 ((-3, 6, 18000, 5), 0.0),
 ((-3, 6, 18000, 10), 0.0),
 ((-3, 6, 18000, 15), 0.0),
 ((-3, 6, 18000, 20), 0.0),
 ((-3, 6, 18000, 25), 0.0),
 ((-3, 6, 20000, 5), 0.0),
 ((-3, 6, 20000, 10), 0.0),
 ((-3, 6, 20000, 15), 0.0),
 ((-3, 6, 20000, 20), 0.0),
 ((-3, 6, 20000, 25), 0.0),
 ((-3, 6, 23000, 5), 0.0),
 ((-3, 6, 23000, 10), 0.0),
 ((-3, 6, 23000, 15), 0.0),
 ((-3, 6, 23000, 20), 0.0),
 ((-3, 6, 23000, 25), 0.0),
 ((-3, 6, 25000, 5), 2.1051510182361969e-181),
 ((-3, 6, 25000, 10), 2.1578181912339597e-45),
 ((-3, 6, 25000, 15), 2.7420962529682273e-21),
 ((-3, 6, 25000, 20), 2.0171828990223652e-13),
 ((-3, 6, 25000, 25), 3.9278528311571124e-10),
 ((-3, 6, 26000, 5), 0.0),
 ((-3, 6, 26000, 10), 0.0),
 ((-3, 6, 26000, 15), 0.0),
 ((-3, 6, 26000, 20), 0.0),
 ((-3, 6, 26000, 25), 0.0),
 ((-3, 7, 18000, 5), 0.0),
 ((-3, 7, 18000, 10), 0.0),
 ((-3, 7, 18000, 15), 0.0),
 ((-3, 7, 18000, 20), 0.0),
 ((-3, 7, 18000, 25), 0.0),
 ((-3, 7, 20000, 5), 0.0),
 ((-3, 7, 20000, 10), 0.0),
 ((-3, 7, 20000, 15), 0.0),
 ((-3, 7, 20000, 20), 0.0),
 ((-3, 7, 20000, 25), 0.0),
 ((-3, 7, 23000, 5), 0.0),
 ((-3, 7, 23000, 10), 0.0),
 ((-3, 7, 23000, 15), 0.0),
 ((-3, 7, 23000, 20), 0.0),
 ((-3, 7, 23000, 25), 0.0),
 ((-3, 7, 25000, 5), 1.6470994331141939e-79),
 ((-3, 7, 25000, 10), 6.4176198857856041e-20),
 ((-3, 7, 25000, 15), 5.7487794388322369e-10),
 ((-3, 7, 25000, 20), 4.7106958307277127e-07),
 ((-3, 7, 25000, 25), 4.6761956085970155e-06),
 ((-3, 7, 26000, 5), 0.0),
 ((-3, 7, 26000, 10), 0.0),
 ((-3, 7, 26000, 15), 0.0),
 ((-3, 7, 26000, 20), 0.0),
 ((-3, 7, 26000, 25), 0.0),
 ((-3, 8, 18000, 5), 0.0),
 ((-3, 8, 18000, 10), 0.0),
 ((-3, 8, 18000, 15), 0.0),
 ((-3, 8, 18000, 20), 0.0),
 ((-3, 8, 18000, 25), 0.0),
 ((-3, 8, 20000, 5), 0.0),
 ((-3, 8, 20000, 10), 0.0),
 ((-3, 8, 20000, 15), 0.0),
 ((-3, 8, 20000, 20), 0.0),
 ((-3, 8, 20000, 25), 0.0),
 ((-3, 8, 23000, 5), 0.0),
 ((-3, 8, 23000, 10), 0.0),
 ((-3, 8, 23000, 15), 0.0),
 ((-3, 8, 23000, 20), 0.0),
 ((-3, 8, 23000, 25), 0.0),
 ((-3, 8, 25000, 5), 5.3692801126331425e-23),
 ((-3, 8, 25000, 10), 8.6232911851468109e-06),
 ((-3, 8, 25000, 15), 0.0010935022315214592),
 ((-3, 8, 25000, 20), 0.0016038355218079216),
 ((-3, 8, 25000, 25), 0.00085196257885328502),
 ((-3, 8, 26000, 5), 0.0),
 ((-3, 8, 26000, 10), 0.0),
 ((-3, 8, 26000, 15), 0.0),
 ((-3, 8, 26000, 20), 0.0),
 ((-3, 8, 26000, 25), 0.0),
 ((-3, 9, 18000, 5), 0.0),
 ((-3, 9, 18000, 10), 0.0),
 ((-3, 9, 18000, 15), 0.0),
 ((-3, 9, 18000, 20), 0.0),
 ((-3, 9, 18000, 25), 0.0),
 ((-3, 9, 20000, 5), 0.0),
 ((-3, 9, 20000, 10), 0.0),
 ((-3, 9, 20000, 15), 0.0),
 ((-3, 9, 20000, 20), 0.0),
 ((-3, 9, 20000, 25), 0.0),
 ((-3, 9, 23000, 5), 0.0),
 ((-3, 9, 23000, 10), 0.0),
 ((-3, 9, 23000, 15), 0.0),
 ((-3, 9, 23000, 20), 0.0),
 ((-3, 9, 23000, 25), 0.0),
 ((-3, 9, 25000, 5), 0.0020209553380417704),
 ((-3, 9, 25000, 10), 0.67543446120472606),
 ((-3, 9, 25000, 15), 0.1636405224832784),
 ((-3, 9, 25000, 20), 0.026831031486742127),
 ((-3, 9, 25000, 25), 0.0051694715036085474),
 ((-3, 9, 26000, 5), 0.0),
 ((-3, 9, 26000, 10), 0.0),
 ((-3, 9, 26000, 15), 0.0),
 ((-3, 9, 26000, 20), 0.0),
 ((-3, 9, 26000, 25), 0.0),
 ((-3, 10, 18000, 5), 0.0),
 ((-3, 10, 18000, 10), 0.0),
 ((-3, 10, 18000, 15), 0.0),
 ((-3, 10, 18000, 20), 0.0),
 ((-3, 10, 18000, 25), 0.0),
 ((-3, 10, 20000, 5), 0.0),
 ((-3, 10, 20000, 10), 0.0),
 ((-3, 10, 20000, 15), 0.0),
 ((-3, 10, 20000, 20), 0.0),
 ((-3, 10, 20000, 25), 0.0),
 ((-3, 10, 23000, 5), 0.0),
 ((-3, 10, 23000, 10), 0.0),
 ((-3, 10, 23000, 15), 0.0),
 ((-3, 10, 23000, 20), 0.0),
 ((-3, 10, 23000, 25), 0.0),
 ((-3, 10, 25000, 5), 3.1692540425702155e-29),
 ((-3, 10, 25000, 10), 2.3901948106530312e-07),
 ((-3, 10, 25000, 15), 0.00022218417189371945),
 ((-3, 10, 25000, 20), 0.00065440994401060883),
 ((-3, 10, 25000, 25), 0.00048002312413195585),
 ((-3, 10, 26000, 5), 0.0),
 ((-3, 10, 26000, 10), 0.0),
 ((-3, 10, 26000, 15), 0.0),
 ((-3, 10, 26000, 20), 0.0),
 ((-3, 10, 26000, 25), 0.0),
 ((-3, 11, 18000, 5), 0.0),
 ((-3, 11, 18000, 10), 0.0),
 ((-3, 11, 18000, 15), 0.0),
 ((-3, 11, 18000, 20), 0.0),
 ((-3, 11, 18000, 25), 0.0),
 ((-3, 11, 20000, 5), 0.0),
 ((-3, 11, 20000, 10), 0.0),
 ((-3, 11, 20000, 15), 0.0),
 ((-3, 11, 20000, 20), 0.0),
 ((-3, 11, 20000, 25), 0.0),
 ((-3, 11, 23000, 5), 0.0),
 ((-3, 11, 23000, 10), 0.0),
 ((-3, 11, 23000, 15), 0.0),
 ((-3, 11, 23000, 20), 0.0),
 ((-3, 11, 23000, 25), 0.0),
 ((-3, 11, 25000, 5), 9.7288809239218025e-126),
 ((-3, 11, 25000, 10), 1.7791385005058235e-31),
 ((-3, 11, 25000, 15), 4.1981524943447044e-15),
 ((-3, 11, 25000, 20), 6.0784661800113569e-10),
 ((-3, 11, 25000, 25), 6.6182991341221133e-08),
 ((-3, 11, 26000, 5), 0.0),
 ((-3, 11, 26000, 10), 0.0),
 ((-3, 11, 26000, 15), 0.0),
 ((-3, 11, 26000, 20), 0.0),
 ((-3, 11, 26000, 25), 0.0),
 ((-3, 12, 18000, 5), 0.0),
 ((-3, 12, 18000, 10), 0.0),
 ((-3, 12, 18000, 15), 0.0),
 ((-3, 12, 18000, 20), 0.0),
 ((-3, 12, 18000, 25), 0.0),
 ((-3, 12, 20000, 5), 0.0),
 ((-3, 12, 20000, 10), 0.0),
 ((-3, 12, 20000, 15), 0.0),
 ((-3, 12, 20000, 20), 0.0),
 ((-3, 12, 20000, 25), 0.0),
 ((-3, 12, 23000, 5), 0.0),
 ((-3, 12, 23000, 10), 0.0),
 ((-3, 12, 23000, 15), 0.0),
 ((-3, 12, 23000, 20), 0.0),
 ((-3, 12, 23000, 25), 0.0),
 ((-3, 12, 25000, 5), 0.0),
 ((-3, 12, 25000, 10), 7.7903448167171132e-84),
 ((-3, 12, 25000, 15), 2.2518825276077742e-38),
 ((-3, 12, 25000, 20), 4.9445951143840747e-23),
 ((-3, 12, 25000, 25), 2.7756320921110116e-16),
 ((-3, 12, 26000, 5), 0.0),
 ((-3, 12, 26000, 10), 0.0),
 ((-3, 12, 26000, 15), 0.0),
 ((-3, 12, 26000, 20), 0.0),
 ((-3, 12, 26000, 25), 0.0),
 ((-3, 13, 18000, 5), 0.0),
 ((-3, 13, 18000, 10), 0.0),
 ((-3, 13, 18000, 15), 0.0),
 ((-3, 13, 18000, 20), 0.0),
 ((-3, 13, 18000, 25), 0.0),
 ((-3, 13, 20000, 5), 0.0),
 ((-3, 13, 20000, 10), 0.0),
 ((-3, 13, 20000, 15), 0.0),
 ((-3, 13, 20000, 20), 0.0),
 ((-3, 13, 20000, 25), 0.0),
 ((-3, 13, 23000, 5), 0.0),
 ((-3, 13, 23000, 10), 0.0),
 ((-3, 13, 23000, 15), 0.0),
 ((-3, 13, 23000, 20), 0.0),
 ((-3, 13, 23000, 25), 0.0),
 ((-3, 13, 25000, 5), 0.0),
 ((-3, 13, 25000, 10), 3.3711322766024776e-179),
 ((-3, 13, 25000, 15), 9.3034304374420312e-81),
 ((-3, 13, 25000, 20), 7.1315759811461969e-47),
 ((-3, 13, 25000, 25), 1.5316409116080251e-31),
 ((-3, 13, 26000, 5), 0.0),
 ((-3, 13, 26000, 10), 0.0),
 ((-3, 13, 26000, 15), 0.0),
 ((-3, 13, 26000, 20), 0.0),
 ((-3, 13, 26000, 25), 0.0),
 ((-3, 14, 18000, 5), 0.0),
 ((-3, 14, 18000, 10), 0.0),
 ((-3, 14, 18000, 15), 0.0),
 ((-3, 14, 18000, 20), 0.0),
 ((-3, 14, 18000, 25), 0.0),
 ((-3, 14, 20000, 5), 0.0),
 ((-3, 14, 20000, 10), 0.0),
 ((-3, 14, 20000, 15), 0.0),
 ((-3, 14, 20000, 20), 0.0),
 ((-3, 14, 20000, 25), 0.0),
 ((-3, 14, 23000, 5), 0.0),
 ((-3, 14, 23000, 10), 0.0),
 ((-3, 14, 23000, 15), 0.0),
 ((-3, 14, 23000, 20), 0.0),
 ((-3, 14, 23000, 25), 0.0),
 ((-3, 14, 25000, 5), 0.0),
 ((-3, 14, 25000, 10), 0.0),
 ((-3, 14, 25000, 15), 1.0682321195662864e-150),
 ((-3, 14, 25000, 20), 3.250485100672051e-86),
 ((-3, 14, 25000, 25), 1.0156990927799639e-56),
 ((-3, 14, 26000, 5), 0.0),
 ((-3, 14, 26000, 10), 0.0),
 ((-3, 14, 26000, 15), 0.0),
 ((-3, 14, 26000, 20), 0.0),
 ((-3, 14, 26000, 25), 0.0),
 ((-3, 15, 18000, 5), 0.0),
 ((-3, 15, 18000, 10), 0.0),
 ((-3, 15, 18000, 15), 0.0),
 ((-3, 15, 18000, 20), 0.0),
 ((-3, 15, 18000, 25), 0.0),
 ((-3, 15, 20000, 5), 0.0),
 ((-3, 15, 20000, 10), 0.0),
 ((-3, 15, 20000, 15), 0.0),
 ((-3, 15, 20000, 20), 0.0),
 ((-3, 15, 20000, 25), 0.0),
 ((-3, 15, 23000, 5), 0.0),
 ((-3, 15, 23000, 10), 0.0),
 ((-3, 15, 23000, 15), 0.0),
 ((-3, 15, 23000, 20), 0.0),
 ((-3, 15, 23000, 25), 0.0),
 ((-3, 15, 25000, 5), 0.0),
 ((-3, 15, 25000, 10), 0.0),
 ((-3, 15, 25000, 15), 1.6359739860676676e-258),
 ((-3, 15, 25000, 20), 7.3463731324587538e-147),
 ((-3, 15, 25000, 25), 1.5610073165985037e-95),
 ((-3, 15, 26000, 5), 0.0),
 ((-3, 15, 26000, 10), 0.0),
 ((-3, 15, 26000, 15), 0.0),
 ((-3, 15, 26000, 20), 0.0),
 ((-3, 15, 26000, 25), 0.0),
 ((-2, 0, 18000, 5), 0.0),
 ((-2, 0, 18000, 10), 0.0),
 ((-2, 0, 18000, 15), 0.0),
 ((-2, 0, 18000, 20), 0.0),
 ((-2, 0, 18000, 25), 0.0),
 ((-2, 0, 20000, 5), 0.0),
 ((-2, 0, 20000, 10), 0.0),
 ((-2, 0, 20000, 15), 0.0),
 ((-2, 0, 20000, 20), 0.0),
 ((-2, 0, 20000, 25), 0.0),
 ((-2, 0, 23000, 5), 0.0),
 ((-2, 0, 23000, 10), 0.0),
 ((-2, 0, 23000, 15), 0.0),
 ((-2, 0, 23000, 20), 0.0),
 ((-2, 0, 23000, 25), 0.0),
 ((-2, 0, 25000, 5), 0.0),
 ((-2, 0, 25000, 10), 0.0),
 ((-2, 0, 25000, 15), 1.2661112608796213e-209),
 ((-2, 0, 25000, 20), 2.3225452778252949e-119),
 ((-2, 0, 25000, 25), 6.2134858074477005e-78),
 ((-2, 0, 26000, 5), 0.0),
 ((-2, 0, 26000, 10), 0.0),
 ((-2, 0, 26000, 15), 0.0),
 ((-2, 0, 26000, 20), 0.0),
 ((-2, 0, 26000, 25), 0.0),
 ((-2, 1, 18000, 5), 0.0),
 ((-2, 1, 18000, 10), 0.0),
 ((-2, 1, 18000, 15), 0.0),
 ((-2, 1, 18000, 20), 0.0),
 ((-2, 1, 18000, 25), 0.0),
 ((-2, 1, 20000, 5), 0.0),
 ((-2, 1, 20000, 10), 0.0),
 ((-2, 1, 20000, 15), 0.0),
 ((-2, 1, 20000, 20), 0.0),
 ((-2, 1, 20000, 25), 0.0),
 ((-2, 1, 23000, 5), 0.0),
 ((-2, 1, 23000, 10), 0.0),
 ((-2, 1, 23000, 15), 0.0),
 ((-2, 1, 23000, 20), 0.0),
 ((-2, 1, 23000, 25), 0.0),
 ((-2, 1, 25000, 5), 0.0),
 ((-2, 1, 25000, 10), 2.4211580767701999e-309),
 ((-2, 1, 25000, 15), 1.3396004075583634e-138),
 ((-2, 1, 25000, 20), 2.0760956167757816e-79),
 ((-2, 1, 25000, 25), 2.3022714848946914e-52),
 ((-2, 1, 26000, 5), 0.0),
 ((-2, 1, 26000, 10), 0.0),
 ((-2, 1, 26000, 15), 0.0),
 ((-2, 1, 26000, 20), 0.0),
 ((-2, 1, 26000, 25), 0.0),
 ((-2, 2, 18000, 5), 0.0),
 ((-2, 2, 18000, 10), 0.0),
 ((-2, 2, 18000, 15), 0.0),
 ((-2, 2, 18000, 20), 0.0),
 ((-2, 2, 18000, 25), 0.0),
 ((-2, 2, 20000, 5), 0.0),
 ((-2, 2, 20000, 10), 0.0),
 ((-2, 2, 20000, 15), 0.0),
 ((-2, 2, 20000, 20), 0.0),
 ((-2, 2, 20000, 25), 0.0),
 ((-2, 2, 23000, 5), 0.0),
 ((-2, 2, 23000, 10), 0.0),
 ((-2, 2, 23000, 15), 0.0),
 ((-2, 2, 23000, 20), 0.0),
 ((-2, 2, 23000, 25), 0.0),
 ((-2, 2, 25000, 5), 0.0),
 ((-2, 2, 25000, 10), 1.87181033667852e-198),
 ((-2, 2, 25000, 15), 2.5741681565896078e-89),
 ((-2, 2, 25000, 20), 1.0947300147307449e-51),
 ((-2, 2, 25000, 25), 1.2713780988259792e-34),
 ((-2, 2, 26000, 5), 0.0),
 ((-2, 2, 26000, 10), 0.0),
 ((-2, 2, 26000, 15), 0.0),
 ((-2, 2, 26000, 20), 0.0),
 ((-2, 2, 26000, 25), 0.0),
 ((-2, 3, 18000, 5), 0.0),
 ((-2, 3, 18000, 10), 0.0),
 ((-2, 3, 18000, 15), 0.0),
 ((-2, 3, 18000, 20), 0.0),
 ((-2, 3, 18000, 25), 0.0),
 ((-2, 3, 20000, 5), 0.0),
 ((-2, 3, 20000, 10), 0.0),
 ((-2, 3, 20000, 15), 0.0),
 ((-2, 3, 20000, 20), 0.0),
 ((-2, 3, 20000, 25), 0.0),
 ((-2, 3, 23000, 5), 0.0),
 ((-2, 3, 23000, 10), 0.0),
 ((-2, 3, 23000, 15), 0.0),
 ((-2, 3, 23000, 20), 0.0),
 ((-2, 3, 23000, 25), 0.0),
 ((-2, 3, 25000, 5), 0.0),
 ((-2, 3, 25000, 10), 2.7453368271377022e-124),
 ((-2, 3, 25000, 15), 2.3629358614275961e-56),
 ((-2, 3, 25000, 20), 3.8096973355525068e-33),
 ((-2, 3, 25000, 25), 9.3516476032757314e-23),
 ((-2, 3, 26000, 5), 0.0),
 ((-2, 3, 26000, 10), 0.0),
 ((-2, 3, 26000, 15), 0.0),
 ((-2, 3, 26000, 20), 0.0),
 ((-2, 3, 26000, 25), 0.0),
 ((-2, 4, 18000, 5), 0.0),
 ((-2, 4, 18000, 10), 0.0),
 ((-2, 4, 18000, 15), 0.0),
 ((-2, 4, 18000, 20), 0.0),
 ((-2, 4, 18000, 25), 0.0),
 ((-2, 4, 20000, 5), 0.0),
 ((-2, 4, 20000, 10), 0.0),
 ((-2, 4, 20000, 15), 0.0),
 ((-2, 4, 20000, 20), 0.0),
 ((-2, 4, 20000, 25), 0.0),
 ((-2, 4, 23000, 5), 0.0),
 ((-2, 4, 23000, 10), 0.0),
 ((-2, 4, 23000, 15), 0.0),
 ((-2, 4, 23000, 20), 0.0),
 ((-2, 4, 23000, 25), 0.0),
 ((-2, 4, 25000, 5), 6.2326039971444621e-306),
 ((-2, 4, 25000, 10), 1.5917007444207714e-76),
 ((-2, 4, 25000, 15), 3.9954901050892248e-35),
 ((-2, 4, 25000, 20), 3.3243513653873629e-21),
 ((-2, 4, 25000, 25), 4.1021417025279368e-15),
 ((-2, 4, 26000, 5), 0.0),
 ((-2, 4, 26000, 10), 0.0),
 ((-2, 4, 26000, 15), 0.0),
 ((-2, 4, 26000, 20), 0.0),
 ((-2, 4, 26000, 25), 0.0),
 ((-2, 5, 18000, 5), 0.0),
 ((-2, 5, 18000, 10), 0.0),
 ((-2, 5, 18000, 15), 0.0),
 ((-2, 5, 18000, 20), 0.0),
 ((-2, 5, 18000, 25), 0.0),
 ((-2, 5, 20000, 5), 0.0),
 ((-2, 5, 20000, 10), 0.0),
 ((-2, 5, 20000, 15), 0.0),
 ((-2, 5, 20000, 20), 0.0),
 ((-2, 5, 20000, 25), 0.0),
 ((-2, 5, 23000, 5), 0.0),
 ((-2, 5, 23000, 10), 0.0),
 ((-2, 5, 23000, 15), 0.0),
 ((-2, 5, 23000, 20), 0.0),
 ((-2, 5, 23000, 25), 0.0),
 ((-2, 5, 25000, 5), 1.0143773322561181e-186),
 ((-2, 5, 25000, 10), 1.0109831559617404e-46),
 ((-2, 5, 25000, 15), 7.0355104950622174e-22),
 ((-2, 5, 25000, 20), 9.3848545285028044e-14),
 ((-2, 5, 25000, 25), 2.4069765459038471e-10),
 ((-2, 5, 26000, 5), 0.0),
 ((-2, 5, 26000, 10), 0.0),
 ((-2, 5, 26000, 15), 0.0),
 ((-2, 5, 26000, 20), 0.0),
 ((-2, 5, 26000, 25), 0.0),
 ((-2, 6, 18000, 5), 0.0),
 ((-2, 6, 18000, 10), 0.0),
 ((-2, 6, 18000, 15), 0.0),
 ((-2, 6, 18000, 20), 0.0),
 ((-2, 6, 18000, 25), 0.0),
 ((-2, 6, 20000, 5), 0.0),
 ((-2, 6, 20000, 10), 0.0),
 ((-2, 6, 20000, 15), 0.0),
 ((-2, 6, 20000, 20), 0.0),
 ((-2, 6, 20000, 25), 0.0),
 ((-2, 6, 23000, 5), 0.0),
 ((-2, 6, 23000, 10), 0.0),
 ((-2, 6, 23000, 15), 0.0),
 ((-2, 6, 23000, 20), 0.0),
 ((-2, 6, 23000, 25), 0.0),
 ((-2, 6, 25000, 5), 4.3886067929718768e-113),
 ((-2, 6, 25000, 10), 2.5928399146023295e-28),
 ((-2, 6, 25000, 15), 1.0692703371728588e-13),
 ((-2, 6, 25000, 20), 3.7556532757893046e-09),
 ((-2, 6, 25000, 25), 2.1228384433698212e-07),
 ((-2, 6, 26000, 5), 0.0),
 ((-2, 6, 26000, 10), 0.0),
 ((-2, 6, 26000, 15), 0.0),
 ((-2, 6, 26000, 20), 0.0),
 ((-2, 6, 26000, 25), 0.0),
 ((-2, 7, 18000, 5), 0.0),
 ((-2, 7, 18000, 10), 0.0),
 ((-2, 7, 18000, 15), 0.0),
 ((-2, 7, 18000, 20), 0.0),
 ((-2, 7, 18000, 25), 0.0),
 ((-2, 7, 20000, 5), 0.0),
 ((-2, 7, 20000, 10), 0.0),
 ((-2, 7, 20000, 15), 0.0),
 ((-2, 7, 20000, 20), 0.0),
 ((-2, 7, 20000, 25), 0.0),
 ((-2, 7, 23000, 5), 0.0),
 ((-2, 7, 23000, 10), 0.0),
 ((-2, 7, 23000, 15), 0.0),
 ((-2, 7, 23000, 20), 0.0),
 ((-2, 7, 23000, 25), 0.0),
 ((-2, 7, 25000, 5), 2.9145570319401076e-66),
 ((-2, 7, 25000, 10), 1.3162463364938033e-16),
 ((-2, 7, 25000, 15), 1.7043519599247199e-08),
 ((-2, 7, 25000, 20), 3.1701211458196271e-06),
 ((-2, 7, 25000, 25), 1.5841882191620302e-05),
 ((-2, 7, 26000, 5), 0.0),
 ((-2, 7, 26000, 10), 0.0),
 ((-2, 7, 26000, 15), 0.0),
 ((-2, 7, 26000, 20), 0.0),
 ((-2, 7, 26000, 25), 0.0),
 ...]

In [45]:
max(evaluated_hypotheses, key=lambda x: x[-1])


Out[45]:
((-3, 9, 25000, 10), 0.67543446120472606)

In [58]:
import pymc3 as pm

with pm.Model() as model:
    _a = pm.Uniform('a', lower=-10, upper=0)
    _h = pm.Uniform('h', lower=4, upper=12)
    _k = pm.Uniform('k', lower=18000, upper=30000)
    _sigma = pm.Uniform('sigma', lower=5, upper=25)

    predicted_y = _a * (x_data - _h)**2 + _k
    prediction_error = observed_y - predicted_y
    
    y_probability = pm.Normal('y_probability', mu=0, observed=prediction_error, sd=_sigma)
    
    start = pm.find_MAP() # Find starting value by optimization
    step = pm.NUTS(scaling=start) # Instantiate MCMC sampling algorithm
    trace = pm.sample(25000, step, start=start)


100%|██████████| 25000/25000 [00:37<00:00, 665.95it/s]

In [59]:
pm.traceplot(trace[1000:]);



In [68]:
mle = {}

for var_name in ['a','h','k','sigma']:
    var_mass, var_bins = np.histogram(trace[var_name], bins=np.arange(-50000,50000, 0.1), density=True)
    var_averaged_bins = 0.5*(var_bins[1:] + var_bins[:-1])
    bin_index = np.argmax(var_mass)
    mle[var_name] = var_averaged_bins[bin_index]

print(mle);


{'h': 8.8499992722754541, 'k': 25003.849998908547, 'a': -3.6500007275426469, 'sigma': 11.149999272241985}

In [ ]: