LogLikelihoodGauss#
- class pgmpy.structure_score.LogLikelihoodGauss(data, state_names=None)[source]#
Bases:
BaseStructureScoreLog-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)