Random Variables¶
aGrUM/pyAgrum is currently dedicated for discrete probability distributions.
There are 3 types of discrete random variables in aGrUM/pyAgrum: LabelizedVariable, DiscretizedVariable and RangeVariable. The 3 types are mainly provided in order to ease modelization. Derived from DiscreteVariable, they share a common API. They essentially differ by the means to create, name and access to their modalities.
Common API for Random Discrete Variables¶
-
class
pyAgrum.
DiscreteVariable
(*args, **kwargs)¶ DiscreteVariable is the base class for discrete random variables.
- DiscreteVariable(aName, aDesc=’‘) -> DiscreteVariable
- Parameters:
- aName (str) – the name of the variable
- aDesc (str) – the (optional) description of the variable
- DiscreteVariable(aDRV) -> DiscreteVariable
- Parameters:
- aDRV (pyAgrum.DiscreteVariable) – the pyAgrum.DiscreteVariable that will be copied
-
description
(Variable self)¶ Returns: the description of the variable Return type: str
-
domain
(DiscreteVariable self)¶ Returns: the domain of the variable Return type: str
-
domainSize
(DiscreteVariable self)¶ Returns: the number of modalities in the variable domain Return type: int
-
empty
(DiscreteVariable self)¶ Returns: True if the domain size < 2 Return type: bool
-
index
(DiscreteVariable self, str label)¶ Parameters: label (str) – a label Returns: the indice of the label Return type: int
-
label
(DiscreteVariable self, int i)¶ Parameters: i (int) – the index of the label we wish to return Returns: the indice-th label Return type: str Raises: gum.OutOfBound
– If the variable does not contain the label
-
labels
(DiscreteVariable self)¶ Returns: a tuple containing the labels Return type: tuple
-
name
(Variable self)¶ Returns: the name of the variable Return type: str
-
numerical
(DiscreteVariable self, int indice)¶ Parameters: indice (int) – an index Returns: the numerical representation of the indice-th value Return type: float
-
setDescription
(Variable self, str theValue)¶ set the description of the variable.
Parameters: theValue (str) – the new description of the variable
-
setName
(Variable self, str theValue)¶ sets the name of the variable.
Parameters: theValue (str) – the new description of the variable
-
toDiscretizedVar
(DiscreteVariable self)¶ Returns: the discretized variable Return type: pyAgrum.DiscretizedVariable Raises: gum.RuntimeError
– If the variable is not a DiscretizedVariable
-
toLabelizedVar
(DiscreteVariable self)¶ Returns: the labelized variable Return type: pyAgrum.LabelizedVariable Raises: gum.RuntimeError
– If the variable is not a LabelizedVariable
-
toRangeVar
(DiscreteVariable self)¶ Returns: the range variable Return type: pyAgrum.RangeVariable Raises: gum.RuntimeError
– If the variable is not a RangeVariable
-
toStringWithDescription
(DiscreteVariable self)¶ Returns: a description of the variable Return type: str
-
varType
(DiscreteVariable self)¶ returns the type of variable
Returns: the type of the variable, 0: DiscretizedVariable, 1: LabelizedVariable, 2: RangeVariable Return type: int
Concrete classes for Random Discrete Variables¶
LabelizedVariable¶
-
class
pyAgrum.
LabelizedVariable
(*args)¶ LabelizedVariable is a discrete random variable with a customizable sequence of labels.
- LabelizedVariable(aName, aDesc=’‘, nbrLabel=2) -> LabelizedVariable
- Parameters:
- aName (str) – the name of the variable
- aDesc (str) – the (optional) description of the variable
- nbrLabel (int) – the number of labels to create (2 by default)
- LabelizedVariable(aLDRV) -> LabelizedVariable
- Parameters:
- aLDRV (pyAgrum.LabelizedVariable) – The pyAgrum.LabelizedVariable that will be copied
Examples
>>> import pyAgrum as gum >>> >>> # creating a variable with 3 labels : '0', '1' and '2' >>> va=gum.LabelizedVariable('a','a labelized variable',3) >>> print(va) >>> ## a<0,1,2> >>> >>> va.addLabel('foo') >>> print(va) >>> ## a<0,1,2,foo> >>> >>> va.chgLabel(1,'bar') >>> print(va) >>> a<0,bar,2,foo> >>> >>> vb=gum.LabelizedVariable('b','b',0).addLabel('A').addLabel('B').addLabel('C') >>> print(vb) >>> ## b<A,B,C> >>> >>> vb.labels() >>> ## ('A', 'B', 'C') >>> >>> vb.isLabel('E') >>> ## False >>> >>> vb.label(2) >>> ## 'B'
-
addLabel
(*args)¶ Add a label with a new index (we assume that we will NEVER remove a label).
Parameters: aLabel (str) – the label to be added to the labelized variable Returns: the labelized variable Return type: pyAgrum.LabelizedVariable Raises: gum.DuplicateElement
– If the variable already contains the label
-
changeLabel
(LabelizedVariable self, int pos, str aLabel)¶ Change the label at the specified index
Parameters: - pos (int) – the index of the label to be changed
- aLabel (str) – the label to be added to the labelized variable
Raises: gum.DuplicatedElement
– If the variable already contains the new labelgum.OutOfBounds
– If the index is greater than the size of the variable
-
description
(Variable self)¶ Returns: the description of the variable Return type: str
-
domain
(LabelizedVariable self)¶ Returns: the domain of the variable as a string Return type: str
-
domainSize
(LabelizedVariable self)¶ Returns: the number of modalities in the variable domain Return type: int
-
empty
(DiscreteVariable self)¶ Returns: True if the domain size < 2 Return type: bool
-
eraseLabels
(LabelizedVariable self)¶ Erase all the labels from the variable.
-
index
(LabelizedVariable self, str label)¶ Parameters: label (str) – a label Returns: the indice of the label Return type: int
-
isLabel
(LabelizedVariable self, str aLabel)¶ Indicates whether the variable already has the label passed in argument
Parameters: aLabel (str) – the label to be tested Returns: True if the label already exists Return type: bool
-
label
(LabelizedVariable self, int i)¶ Parameters: i (int) – the index of the label we wish to return Returns: the indice-th label Return type: str Raises: gum.OutOfBound
– If the variable does not contain the label
-
labels
(DiscreteVariable self)¶ Returns: a tuple containing the labels Return type: tuple
-
name
(Variable self)¶ Returns: the name of the variable Return type: str
-
numerical
(LabelizedVariable self, int indice)¶ Parameters: indice (int) – an index Returns: the numerical representation of the indice-th value Return type: float
-
posLabel
(LabelizedVariable self, str label)¶
-
setDescription
(Variable self, str theValue)¶ set the description of the variable.
Parameters: theValue (str) – the new description of the variable
-
setName
(Variable self, str theValue)¶ sets the name of the variable.
Parameters: theValue (str) – the new description of the variable
-
toDiscretizedVar
(DiscreteVariable self)¶ Returns: the discretized variable Return type: pyAgrum.DiscretizedVariable Raises: gum.RuntimeError
– If the variable is not a DiscretizedVariable
-
toLabelizedVar
(DiscreteVariable self)¶ Returns: the labelized variable Return type: pyAgrum.LabelizedVariable Raises: gum.RuntimeError
– If the variable is not a LabelizedVariable
-
toRangeVar
(DiscreteVariable self)¶ Returns: the range variable Return type: pyAgrum.RangeVariable Raises: gum.RuntimeError
– If the variable is not a RangeVariable
-
toStringWithDescription
(DiscreteVariable self)¶ Returns: a description of the variable Return type: str
-
varType
(LabelizedVariable self)¶ returns the type of variable
Returns: the type of the variable, 0: DiscretizedVariable, 1: LabelizedVariable, 2: RangeVariable Return type: int
DiscretizedVariable¶
-
class
pyAgrum.
DiscretizedVariable
(*args)¶ DiscretizedVariable is a discrete random variable with a set of
ticks
defining intervalls.- DiscretizedVariable(aName, aDesc=’‘) -> DiscretizedVariable`
- Parameters:
- aName (str) – the name of the variable
- aDesc (str) – the (optional) description of the variable
- DiscretizedVariable(aDDRV) -> DiscretizedVariable
- Parameters:
- aDDRV (pyAgrum.DiscretizedVariable) – the pyAgrum.DiscretizedVariable that will be copied
Examples
>>> import pyAgrum as gum >>> >>> vX=gum.DiscretizedVariable('X','X has been discretized') >>> vX.addTick(1).addTick(2).addTick(3).addTick(3.1415) #doctest: +ELLIPSIS >>> ## <pyAgrum.DiscretizedVariable;...> >>> print(vX) >>> ## X<[1;2[,[2;3[,[3;3.1415]> >>> >>> vX.isTick(4) >>> ## False >>> >>> vX.labels() >>> ## ('[1;2[', '[2;3[', '[3;3.1415]') >>> >>> # where is the real value 2.5 ? >>> vX.index('2.5') >>> ## 1
-
addTick
(*args)¶ Parameters: aTick (double) – the Tick to be added Returns: the discretized variable Return type: pyAgrum.DiscretizedVariable Raises: gum.DefaultInLabel
– If the tick is already defined
-
description
(Variable self)¶ Returns: the description of the variable Return type: str
-
domain
(DiscretizedVariable self)¶ Returns: the domain of the variable as a string Return type: str
-
domainSize
(DiscretizedVariable self)¶ Returns: the number of modalities in the variable domain Return type: int
-
empty
(DiscreteVariable self)¶ Returns: True if the domain size < 2 Return type: bool
-
eraseTicks
(DiscretizedVariable self)¶ erase all the Ticks
-
index
(DiscretizedVariable self, str label)¶ Parameters: label (str) – a label Returns: the indice of the label Return type: int
-
isTick
(DiscretizedVariable self, double aTick)¶ Parameters: aTick (double) – the Tick to be tested Returns: True if the Tick already exists Return type: bool
-
label
(DiscretizedVariable self, int i)¶ Parameters: i (int) – the index of the label we wish to return Returns: the indice-th label Return type: str Raises: gum.OutOfBound
– If the variable does not contain the label
-
labels
(DiscreteVariable self)¶ Returns: a tuple containing the labels Return type: tuple
-
name
(Variable self)¶ Returns: the name of the variable Return type: str
-
numerical
(DiscretizedVariable self, int indice)¶ Parameters: indice (int) – an index Returns: the numerical representation of the indice-th value Return type: float
-
setDescription
(Variable self, str theValue)¶ set the description of the variable.
Parameters: theValue (str) – the new description of the variable
-
setName
(Variable self, str theValue)¶ sets the name of the variable.
Parameters: theValue (str) – the new description of the variable
-
tick
(DiscretizedVariable self, int i)¶ Indicate the index of the Tick
Parameters: i (int) – the index of the Tick Returns: aTick – the index-th Tick Return type: double Raises: gum.NotFound
– If the index is greater than the number of Ticks
-
ticks
(DiscretizedVariable self)¶ Returns: a tuple containing all the Ticks Return type: tuple
-
toDiscretizedVar
(DiscreteVariable self)¶ Returns: the discretized variable Return type: pyAgrum.DiscretizedVariable Raises: gum.RuntimeError
– If the variable is not a DiscretizedVariable
-
toLabelizedVar
(DiscreteVariable self)¶ Returns: the labelized variable Return type: pyAgrum.LabelizedVariable Raises: gum.RuntimeError
– If the variable is not a LabelizedVariable
-
toRangeVar
(DiscreteVariable self)¶ Returns: the range variable Return type: pyAgrum.RangeVariable Raises: gum.RuntimeError
– If the variable is not a RangeVariable
-
toStringWithDescription
(DiscreteVariable self)¶ Returns: a description of the variable Return type: str
-
varType
(DiscretizedVariable self)¶ returns the type of variable
Returns: the type of the variable, 0: DiscretizedVariable, 1: LabelizedVariable, 2: RangeVariable Return type: int
RangeVariable¶
-
class
pyAgrum.
RangeVariable
(*args)¶ RangeVariable represents a variable with a range of integers as domain.
- RangeVariable(aName, aDesc,minVal, maxVal) -> RangeVariable
- Parameters:
- aName (str) – the name of the variable
- aDesc (str) – the description of the variable
- minVal (int) – the minimal integer of the interval
- maxVal (int) – the maximal integer of the interval
- RangeVariable(aName, aDesc=’‘) -> RangeVariable
- Parameters:
- aName (str) – the name of the variable
- aDesc (str) – the description of the variable
By default
minVal=0
andmaxVal=1
- RangeVariable(aRV) -> RangeVariable
- Parameters:
- aDV (RangeVariable) – the pyAgrum.RangeVariable that will be copied
Examples
>>> import pyAgrum as gum >>> >>> vI=gum.gum.RangeVariable('I','I in [4,10]',4,10) >>> print(vI) >>> ## I[4-10] >>> >>> vX.maxVal() >>> ## 10 >>> >>> vX.belongs(1) >>> ## False >>> >>> # where is the value 5 ? >>> vX.index('5') >>> ## 1 >>> >>> vi.labels() >>> ## ('4', '5', '6', '7', '8', '9', '10')
-
belongs
(RangeVariable self, long val)¶ Parameters: val (long) – the value to be tested Returns: True if the value in parameters belongs to the variable’s interval. Return type: bool
-
description
(Variable self)¶ Returns: the description of the variable Return type: str
-
domain
(RangeVariable self)¶ Returns: the domain of the variable Return type: str
-
domainSize
(RangeVariable self)¶ Returns: the number of modalities in the variable domain Return type: int
-
empty
(DiscreteVariable self)¶ Returns: True if the domain size < 2 Return type: bool
-
index
(RangeVariable self, str arg2)¶ Parameters: arg2 (str) – a label Returns: the indice of the label Return type: int
-
label
(RangeVariable self, int indice)¶ Parameters: indice (int) – the index of the label we wish to return Returns: the indice-th label Return type: str Raises: gum.OutOfBound
– If the variable does not contain the label
-
labels
(DiscreteVariable self)¶ Returns: a tuple containing the labels Return type: tuple
-
maxVal
(RangeVariable self)¶ Returns: the upper bound of the variable. Return type: long
-
minVal
(RangeVariable self)¶ Returns: the lower bound of the variable Return type: long
-
name
(Variable self)¶ Returns: the name of the variable Return type: str
-
numerical
(RangeVariable self, int indice)¶ Parameters: indice (int) – an index Returns: the numerical representation of the indice-th value Return type: float
-
setDescription
(Variable self, str theValue)¶ set the description of the variable.
Parameters: theValue (str) – the new description of the variable
-
setMaxVal
(RangeVariable self, long maxVal)¶ Set a new value of the upper bound
Parameters: maxVal (long) – The new value of the upper bound Warning
An error should be raised if the value is lower than the lower bound.
-
setMinVal
(RangeVariable self, long minVal)¶ Set a new value of the lower bound
Parameters: minVal (long) – The new value of the lower bound Warning
An error should be raised if the value is higher than the upper bound.
-
setName
(Variable self, str theValue)¶ sets the name of the variable.
Parameters: theValue (str) – the new description of the variable
-
toDiscretizedVar
(DiscreteVariable self)¶ Returns: the discretized variable Return type: pyAgrum.DiscretizedVariable Raises: gum.RuntimeError
– If the variable is not a DiscretizedVariable
-
toLabelizedVar
(DiscreteVariable self)¶ Returns: the labelized variable Return type: pyAgrum.LabelizedVariable Raises: gum.RuntimeError
– If the variable is not a LabelizedVariable
-
toRangeVar
(DiscreteVariable self)¶ Returns: the range variable Return type: pyAgrum.RangeVariable Raises: gum.RuntimeError
– If the variable is not a RangeVariable
-
toStringWithDescription
(DiscreteVariable self)¶ Returns: a description of the variable Return type: str
-
varType
(RangeVariable self)¶ returns the type of variable
Returns: the type of the variable, 0: DiscretizedVariable, 1: LabelizedVariable, 2: RangeVariable Return type: int