Dist_sum

class stats.Dist_sum(dists)

Bases: stats.Dist_qilum

Distribution for a sum of distributions.

Parameters

dists (array like) – array of scipy stats distributions or Dist_qilum

Examples

>>> import qilum.stats as qs
>>> import scipy.stats
>>> # exponential distributions left and right types
>>> exp_left  = qs.Dist_scale(scipy.stats.expon(),loc_x=-1, scale_x=-1, scale_y=2, name='Exp+')
>>> exp_right = qs.Dist_scale(scipy.stats.expon(),loc_x= 2, scale_x= 1, scale_y=3, name='Exp-')
>>> dist = qs.Dist_sum([exp_left, exp_right]);
../_images/Dist_sum.jpg

Methods Summary

F_tot()

Cumulative of the function f() on the whole valid range x

cdf(x)

Cumulative distribution function.

f(x)

function f(x)

name()

Name of the class

pdf(x)

Probability density function

ppf(q)

Percent point function (inverse of cdf) at q

rvs(size)

random numbers in ndarray of lenght size

rvs_xy(size)

random numbers rans in ndarray of lenght size and function(rans)

Methods Documentation

F_tot()

Cumulative of the function f() on the whole valid range x

Returns

dist.F_tot()*scale_y*|scale_x|; if dist.F_tot() not define set to 1

Return type

int

Examples

>>> import qilum.stats as qs
>>> import scipy.stats
>>> # exponential distributions left and right types
>>> exp_left  = qs.Dist_scale(scipy.stats.expon(),loc_x=-1, scale_x=-1, scale_y=2, name='Exp+')
>>> exp_right = qs.Dist_scale(scipy.stats.expon(),loc_x= 2, scale_x= 1, scale_y=3, name='Exp-')
>>> dist = qs.Dist_sum([exp_left, exp_right]);
>>> print(dist.F_tot())
5
cdf(x)

Cumulative distribution function.

Parameters

x (array_like of type(values)) –

Returns

Cumulative distribution function evaluated at x

Return type

ndarray

Examples

>>> import qilum.stats as qs
>>> import scipy.stats
>>> # exponential distributions left and right types
>>> exp_left  = qs.Dist_scale(scipy.stats.expon(),loc_x=-1, scale_x=-1, scale_y=2, name='Exp+')
>>> exp_right = qs.Dist_scale(scipy.stats.expon(),loc_x= 2, scale_x= 1, scale_y=3, name='Exp-')
>>> dist = qs.Dist_sum([exp_left, exp_right]);
>>> x = [-3,1,2,3]
>>> print('cdf(x)=',dist.cdf(x))
cdf(x)= [0.05413411 0.4        0.4        0.77927234]
f(x)

function f(x)

Parameters

x (array_like of type(values)) –

Returns

f(x)

Return type

ndarray

Examples

>>> import qilum.stats as qs
>>> import scipy.stats
>>> # exponential distributions left and right types
>>> exp_left  = qs.Dist_scale(scipy.stats.expon(),loc_x=-1, scale_x=-1, scale_y=2, name='Exp+')
>>> exp_right = qs.Dist_scale(scipy.stats.expon(),loc_x= 2, scale_x= 1, scale_y=3, name='Exp-')
>>> dist = qs.Dist_sum([exp_left, exp_right]);
>>> x = [-3,1,2,3]
>>> print('f(x)=',dist.f(x))
f(x)= [0.27067057 0.         3.         1.10363832]
name()

Name of the class

Returns

‘Dist_sum’

Return type

string

Examples

>>> import qilum.stats as qs
>>> import scipy.stats
>>> # exponential distributions left and right types
>>> exp_left  = qs.Dist_scale(scipy.stats.expon(),loc_x=-1, scale_x=-1, scale_y=2, name='Exp+')
>>> exp_right = qs.Dist_scale(scipy.stats.expon(),loc_x= 2, scale_x= 1, scale_y=3, name='Exp-')
>>> dist = qs.Dist_sum([exp_left, exp_right]);
>>> dist.name()
'Dist_sum'
pdf(x)

Probability density function

Parameters

x (array_like of type(values)) –

Returns

f(x)/F_tot()

Return type

ndarray

Examples

>>> import qilum.stats as qs
>>> import scipy.stats
>>> # exponential distributions left and right types
>>> exp_left  = qs.Dist_scale(scipy.stats.expon(),loc_x=-1, scale_x=-1, scale_y=2, name='Exp+')
>>> exp_right = qs.Dist_scale(scipy.stats.expon(),loc_x= 2, scale_x= 1, scale_y=3, name='Exp-')
>>> dist = qs.Dist_sum([exp_left, exp_right]);
>>> x = [-3,1,2,3]
>>> print('pdf(x)=',dist.pdf(x))
pdf(x)= [0.05413411 0.         0.6        0.22072766]
ppf(q)

Percent point function (inverse of cdf) at q

Parameters

q (array_like of double) – lower tail probability

Returns

quantile corresponding to the lower tail probability q

Return type

ndarray

Examples

>>> import qilum.stats as qs
>>> import scipy.stats
>>> # exponential distributions left and right types
>>> exp_left  = qs.Dist_scale(scipy.stats.expon(),loc_x=-1, scale_x=-1, scale_y=2, name='Exp+')
>>> exp_right = qs.Dist_scale(scipy.stats.expon(),loc_x= 2, scale_x= 1, scale_y=3, name='Exp-')
>>> dist = qs.Dist_sum([exp_left, exp_right]);
>>> q = [0, 0.3,0.5,0.7,1]
>>> print('ppf(q)=',dist.ppf(q))
NotImplementedError: Sum::ppf: not implemented
rvs(size)

random numbers in ndarray of lenght size

Parameters

size (int) – number of random number

Returns

random numbers

Return type

ndarray

Examples

>>> import qilum.stats as qs
>>> import scipy.stats
>>> # exponential distributions left and right types
>>> exp_left  = qs.Dist_scale(scipy.stats.expon(),loc_x=-1, scale_x=-1, scale_y=2, name='Exp+')
>>> exp_right = qs.Dist_scale(scipy.stats.expon(),loc_x= 2, scale_x= 1, scale_y=3, name='Exp-')
>>> dist = qs.Dist_sum([exp_left, exp_right]);
>>> print('rans=',dist.rvs(4))
rans= [-1.69435547 -1.25739917 -1.01561614  4.38379953]
rvs_xy(size)

random numbers rans in ndarray of lenght size and function(rans)

Parameters

size (int) – number of random number

Returns

  • ndarray – random numbers

  • ndarray – f(random numbers)

Examples

>>> import qilum.stats as qs
>>> import scipy.stats
>>> # exponential distributions left and right types
>>> exp_left  = qs.Dist_scale(scipy.stats.expon(),loc_x=-1, scale_x=-1, scale_y=2, name='Exp+')
>>> exp_right = qs.Dist_scale(scipy.stats.expon(),loc_x= 2, scale_x= 1, scale_y=3, name='Exp-')
>>> dist = qs.Dist_sum([exp_left, exp_right]);
>>> print('rans=',dist.rvs_xy(2))
rans= (array([-1.90014397, -3.38554518]), array([0.81302226, 0.18407758]))