Source code for mixem.distribution.geometric

# coding=utf-8
import numpy as np

from mixem.distribution.distribution import Distribution


[docs]class GeometricDistribution(Distribution): """Geometric distribution with parameter (p).""" def __init__(self, p): self.p = p def log_density(self, data): assert(len(data.shape) == 1), "Expect 1D data!" return np.log(1 - self.p) * (data - 1) + np.log(self.p) def estimate_parameters(self, data, weights): assert(len(data.shape) == 1), "Expect 1D data!" self.p = np.sum(weights) / np.sum(data * weights) def __repr__(self): return "Geom[p={p:.4g}]".format(p=self.p)