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 [ ]: