Newer
Older
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