def sampleData(mus,variances,N): nCats = len(mus) catWins = mn(N,np.repeat(1./nCats,nCats)) out = [] for cat in range(nCats): mu = mus[cat] sd = np.sqrt(variances[cat]) d_is = list(NORM.rvs(loc=mu,scale=sd,size=catWins[cat])) out = out + d_is return np.array(out).reshape((len(out),1))
def mutual(size, mean, cov, sample_no=100, ci=(0.025, 0.975)): # type: (int, np.ndarray, np.ndarray, int, Tuple[float, float]) -> Tuple[float, Tuple[float, float]] np.random.seed(12345) ent = [ ee.mutual_info(*(x.reshape(-1, 1) for x in mn(mean, cov, size).T[0:2, :])) for _ in range(sample_no) ] ent = np.sort(ent) return np.mean(ent), (ent[int(ci[0] * sample_no)], ent[int(ci[1] * sample_no)])
def produce_sample_data(N1,N2,N3): Means = np.array([[-10,-3],[0,0],[10,10]]) Vars = np.array([[[1,0.5],[0.5,0.7]],[[2,-2.4],[-2.4,1]]]) return np.vstack([mn(Means[0],Vars[0],N1),mn(Means[1],Vars[1],N2),mn(Means[2],Vars[1],N3)])
Identity=np.identity(Dim) Sigma=np.zeros((Dim,Dim)) for i in range(Dim): Sigma[i,i]=g[0] for j in range(i): m=i-j Sigma[i,j]=g[m] Sigma[j,i]=g[m] L=cholesky(Sigma) print Sigma PointNum=3000 X=mn(Zero,Sigma,PointNum).T S= np.dot( mn(Zero,Identity,PointNum), L ).T plt.title('Bivariate Gaussian Distributions') plt.plot(X[0],X[1],'bo',markersize=5.0,label='N(0,Sigma)') plt.plot(S[0],S[1],'ro',markersize=5.0,label='LS with (S~N(0,I))' ) plt.axis('equal') plt.legend() plt.show() ''' #Get the cholesky decomposition