LogLikelihoodGauss#

class pgmpy.structure_score.LogLikelihoodGauss(data, state_names=None)[source]#

Bases: BaseStructureScore

Log-likelihood structure score for Gaussian Bayesian networks.

This score evaluates a continuous Bayesian network structure by fitting a Gaussian GLM for each local family and returning the fitted log-likelihood. The local score is computed as:

\[X_i = \beta_0 + \beta^\top \Pi_i + \varepsilon_i, \qquad \varepsilon_i \sim \mathcal{N}(0, \sigma_i^2),\]

and returns

\[\ell(X_i, \Pi_i) = \log p(x_i \mid \hat{\beta}_0, \hat{\beta}, \hat{\sigma}_i^2, \Pi_i).\]

If parents is empty, the fitted model reduces to \(X_i = \beta_0 + \varepsilon_i\).

Parameters:
datapandas.DataFrame

DataFrame where each column represents a continuous variable.

state_namesdict, optional

Accepted for API consistency but not typically used for Gaussian networks.

Raises:
ValueError

If the model cannot be fitted because the data contains incompatible or non-numeric variables.

Examples

>>> import numpy as np
>>> import pandas as pd
>>> from pgmpy.structure_score import LogLikelihoodGauss
>>> rng = np.random.default_rng(0)
>>> data = pd.DataFrame(
...     {
...         "A": rng.normal(size=100),
...         "B": rng.normal(size=100),
...         "C": rng.normal(size=100),
...     }
... )
>>> score = LogLikelihoodGauss(data)
>>> round(score.local_score("B", ("A", "C")), 3)
np.float64(-137.16)