Mercurial Hosting > traffic-intelligence
changeset 86:f03ec4697a09
corrected discrete distribution
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Tue, 19 Apr 2011 02:01:09 -0400 |
parents | 7f1e54234f96 |
children | f234154207d4 |
files | python/utils.py |
diffstat | 1 files changed, 8 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/python/utils.py Mon Apr 18 19:31:53 2011 -0400 +++ b/python/utils.py Tue Apr 19 02:01:09 2011 -0400 @@ -31,17 +31,17 @@ class EmpiricalDiscreteDistribution(EmpiricalDistribution): '''Class to represent a sample of a distribution for a discrete random variable ''' + from numpy.core.fromnumeric import sum + def __init__(self, categories, counts): self.categories = categories self.counts = counts def mean(self): - from numpy.core.fromnumeric import sum result = [float(x*y) for x,y in zip(self.categories, self.counts)] return sum(result)/self.nSamples() def var(self, mean = None): - from numpy.core.fromnumeric import sum if not mean: m = self.mean() else: @@ -50,6 +50,12 @@ squares = [float((x-m)*(x-m)*y) for x,y in zip(self.categories, self.counts)] return sum(squares)/(self.nSamples()-1) + def referenceCounts(self, probability): + '''probability is a function that returns the probability of the random variable for the category values''' + refProba = [probability(c) for c in self.categories] + refProba[-1] = 1-sum(refProba[:-1]) + refCounts = [r*self.nSamples() for r in refProba] + return refCounts, refProba class EmpiricalContinuousDistribution(EmpiricalDistribution): '''Class to represent a sample of a distribution for a continuous random variable