def describe_moment_polynomial(syms, moments_x, moment_y, alpha, b): """ Computes the moment polynomial for E[x^alpha, y^b] """ D = len(syms) expr = -moment_y coeffs = sp.ntheory.multinomial_coefficients(D, b) for beta in partitions(D, b): expr += coeffs[beta] * monomial(syms, beta) * moments_x[tuple_add(alpha, beta)] return expr
def describe_moment_polynomial(syms, moments_x, moment_y, alpha, b): """ Computes the moment polynomial for E[x^alpha, y^b] """ D = len(syms) expr = -moment_y coeffs = sp.ntheory.multinomial_coefficients(D, b) for beta in partitions(D, b): expr += coeffs[beta] * monomial(syms, beta) * moments_x[tuple_add( alpha, beta)] return expr
def observed_monomials(self, maxdeg): """ return scipy moment monomials """ D = self.d deg_x, deg_b = maxdeg alphas = list(dominated_elements((deg_x for _ in xrange(D)))) alphabs = [(alpha, b) for alpha in alphas for b in xrange(1,deg_b+1)] x = [sympify("x%d"%i) for i in xrange(D)] y = sympify("y") terms = map(sympify, [monomial(x, alpha) * y**b for (alpha,b) in alphabs]) return terms
def observed_monomials(self, maxdeg): """ return scipy moment monomials """ D = self.d deg_x, deg_b = maxdeg alphas = list(dominated_elements((deg_x for _ in xrange(D)))) alphabs = [(alpha, b) for alpha in alphas for b in xrange(1, deg_b + 1)] x = [sympify("x%d" % i) for i in xrange(D)] y = sympify("y") terms = map(sympify, [monomial(x, alpha) * y**b for (alpha, b) in alphabs]) return terms
def compute_expected_moments_y(ys, xs, alphabs): moments = {(alpha, b): 0. for alpha, b in alphabs} for alpha, b in alphabs: moments[(alpha, b)] = float((monomial(xs.T, alpha) * ys**b).mean()) return moments
def compute_expected_moments(xs, alphas): moments = {alpha: 0. for alpha in alphas} for alpha in alphas: m = monomial(xs.T, alpha) moments[alpha] = m if isinstance(m, float) else float(m.mean()) return moments
def evaluate_mixture(ws, pis, beta): r""" Compute E_\pi[w^beta] """ return sum(pi * monomial(w, beta) for w, pi in zip(ws.T, pis))
def compute_expected_moments_y(ys, xs, alphabs): moments = {(alpha, b) : 0. for alpha, b in alphabs} for alpha, b in alphabs: moments[(alpha,b)] = float((monomial(xs.T, alpha) * ys**b).mean()) return moments
def compute_expected_moments(xs, alphas): moments = {alpha : 0. for alpha in alphas} for alpha in alphas: m = monomial(xs.T, alpha) moments[alpha] = m if isinstance(m,float) else float(m.mean()) return moments