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
ticksdefining 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=0andmaxVal=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