Skip to content
Snippets Groups Projects
conditional_probability_update.py 798 B
Newer Older
Tilboon Elberier's avatar
Tilboon Elberier committed
from numpy import ndarray
import numpy as np

class ConditionalProbabilityUpdate:
    def __init__(self, λs):
        # Estimator likelihood simulators initialization
        self.λs = λs

        # model probabilities initialization
        self.model_probabilities = np.ones(len(self.λs)) / len(self.λs)


    def update(self, pdvs: ndarray) -> ndarray:
        """
        Update the model probabilities using Bayes' theorem.
        """
        # Calculate the marginal likelihood of z (the normalization factor):
        norm_factor = np.sum(pdvs * self.model_probabilities)

        # Update the model probabilities (posterior probabilities) using Bayes' theorem:
        self.model_probabilities = (pdvs * self.model_probabilities) / norm_factor

        return self.model_probabilities