minA=min(A)
ranA=max(A)-min(A)
minB=min(B)
ranB=max(B)-min(B)
hist_A=matrix(RDF,int(samples/10)+1,1)
hist_B=matrix(RDF,int(samples/10)+1,1)
for i in range(int(samples/10)+1):
hist_A[i]=0
hist_B[i]=0
for i in range(samples):
idxA=int((A[i]-minA)*int(samples/10)/ranA)
idxB=int((B[i]-minB)*int(samples/10)/ranB)
hist_A[idxA]=hist_A[idxA,0]+1
hist_B[idxB]=hist_B[idxB,0]+1
A_2D=matrix(RDF,samples,2)
B_2D=matrix(RDF,samples,2)
for i in range(samples):
idxA=int((A[i]-minA)*int(samples/10)/ranA)
idxB=int((B[i]-minB)*int(samples/10)/ranB)
A_2D[i,0]=A[i,0]
A_2D[i,1]=hist_A[idxA,0]
B_2D[i,0]=B[i,0]
B_2D[i,1]=hist_B[idxB,0]
var('sigma mu alpha x')
model(x) = alpha * (1/sqrt(2*pi*sigma**2))*exp(-(x-mu)**2/(2*sigma**2))
show("Let's model their likelihood distribution with Gaussian pdf")
A_model = find_fit(A_2D, model, initial_guess=[1,0,1], solution_dict = True)
pretty_print("Estimated Gaussian pdf of A:", " ", mu, " =", " ", A_model[mu], ",", " ", sigma, " =", " ", A_model[sigma])
B_model = find_fit(B_2D, model, initial_guess=[1,0,1], solution_dict = True)
pretty_print("Estimated Gaussian pdf of B:", " ", mu, " =", " ", B_model[mu], ",", " ", sigma, " =", " ", B_model[sigma])
gaussx=np.arange(-15, 15, 0.1);
gaussAy=A_model[alpha]*2 * GaussPDF(gaussx, A_model[mu],A_model[sigma])
gaussBy=B_model[alpha]*2 * GaussPDF(gaussx, B_model[mu],B_model[sigma])
pA=plt.hist(A.transpose(), bins=50, range=(-15.,15.), color='r', alpha=0.1)
pB=plt.hist(B.transpose(), bins=50, range=(-15.,15.), color='b', alpha=0.1)
plt.plot(gaussx,gaussAy, color='r')
plt.plot(gaussx,gaussBy, color='b')
plt.legend(('A','B'))
plt.title('Likelihood distribution by Gaussian PDF fitting')
plt.savefig('fitting.png')
plt.close()