rv_discrete.expect(func=None, args=(), loc=0, lb=None, ub=None, conditional=False)[source]

Calculate expected value of a function with respect to the distribution for discrete distribution


fn : function (default: identity mapping)

Function for which sum is calculated. Takes only one argument.

args : tuple

argument (parameters) of the distribution

lb, ub : numbers, optional

lower and upper bound for integration, default is set to the support of the distribution, lb and ub are inclusive (ul<=k<=ub)

conditional : bool, optional

Default is False. If true then the expectation is corrected by the conditional probability of the integration interval. The return value is the expectation of the function, conditional on being in the given interval (k such that ul<=k<=ub).


expect : float

Expected value.


  • function is not vectorized
  • accuracy: uses self.moment_tol as stopping criterium for heavy tailed distribution e.g. zipf(4), accuracy for mean, variance in example is only 1e-5, increasing precision (moment_tol) makes zipf very slow
  • suppnmin=100 internal parameter for minimum number of points to evaluate could be added as keyword parameter, to evaluate functions with non-monotonic shapes, points include integers in (-suppnmin, suppnmin)
  • uses maxcount=1000 limits the number of points that are evaluated to break loop for infinite sums (a maximum of suppnmin+1000 positive plus suppnmin+1000 negative integers are evaluated)