Example #1
0
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
Example #2
0
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
Example #3
0
    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
Example #4
0
    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
Example #5
0
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
Example #6
0
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
Example #7
0
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))
Example #8
0
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
Example #9
0
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
Example #10
0
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))