Spaces:
Sleeping
Sleeping
from sympy.core.basic import Basic | |
from sympy.stats.joint_rv import ProductPSpace | |
from sympy.stats.rv import ProductDomain, _symbol_converter, Distribution | |
class StochasticPSpace(ProductPSpace): | |
""" | |
Represents probability space of stochastic processes | |
and their random variables. Contains mechanics to do | |
computations for queries of stochastic processes. | |
Explanation | |
=========== | |
Initialized by symbol, the specific process and | |
distribution(optional) if the random indexed symbols | |
of the process follows any specific distribution, like, | |
in Bernoulli Process, each random indexed symbol follows | |
Bernoulli distribution. For processes with memory, this | |
parameter should not be passed. | |
""" | |
def __new__(cls, sym, process, distribution=None): | |
sym = _symbol_converter(sym) | |
from sympy.stats.stochastic_process_types import StochasticProcess | |
if not isinstance(process, StochasticProcess): | |
raise TypeError("`process` must be an instance of StochasticProcess.") | |
if distribution is None: | |
distribution = Distribution() | |
return Basic.__new__(cls, sym, process, distribution) | |
def process(self): | |
""" | |
The associated stochastic process. | |
""" | |
return self.args[1] | |
def domain(self): | |
return ProductDomain(self.process.index_set, | |
self.process.state_space) | |
def symbol(self): | |
return self.args[0] | |
def distribution(self): | |
return self.args[2] | |
def probability(self, condition, given_condition=None, evaluate=True, **kwargs): | |
""" | |
Transfers the task of handling queries to the specific stochastic | |
process because every process has their own logic of handling such | |
queries. | |
""" | |
return self.process.probability(condition, given_condition, evaluate, **kwargs) | |
def compute_expectation(self, expr, condition=None, evaluate=True, **kwargs): | |
""" | |
Transfers the task of handling queries to the specific stochastic | |
process because every process has their own logic of handling such | |
queries. | |
""" | |
return self.process.expectation(expr, condition, evaluate, **kwargs) | |