Created
July 28, 2019 17:24
-
-
Save azarnyx/ac032d98d28466d6036e8a9b6c14a02e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
bnds = tuple([(0, None)]*(num_sides2*num_sides1)) | |
# remember number of probabilities | |
lookup_map = {} | |
for ni, piqj in enumerate(itertools.product(sides1, sides2)): | |
lookup_map[ni] = piqj | |
# common guesses | |
guess_common = np.ones(len(lookup_map))/len(lookup_map) | |
# common constrain on sum to 1 | |
ccons0 = ({'type': 'eq', 'fun': lambda p: np.sum(p) - 1.}) | |
# constrains on mean | |
def cons20_joint(params): | |
s = 0 | |
for ni, (pij) in enumerate(params): | |
s += pij*lookup_map[ni][0] # conditions for p | |
return s | |
def cons21_joint(params): | |
s = 0 | |
for ni, (pij) in enumerate(params): | |
s += pij*lookup_map[ni][1] # conditions for q | |
return s | |
ccons20 = ({'type': 'eq', 'fun': lambda x: cons20_joint(x)-mean1}) | |
ccons21 = ({'type': 'eq', 'fun': lambda x: cons21_joint(x)-mean2}) | |
sol_common = minimize(sum_form, | |
guess_common, | |
bounds=bnds, | |
constraints=[ccons0, | |
ccons20, | |
ccons21], | |
options={'maxiter':10001}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment