в pgmpy мы можем определить условное распределение:
cpd_G = TabularCPD(variable='G', variable_card=2, values=[[0.5, 0.8, 0.75, 0.45],
[0.5, 0.2, 0.25, 0.55]],
evidence=['I', 'D'], evidence_card=[2, 2])
и затем маргинализировать переменную доказательства (например, D):
print(cpd_G.marginalize(variables=['D'], inplace=False))
+------+------+------+
| I | I(0) | I(1) |
+------+------+------+
| G(0) | 0.65 | 0.6 |
+------+------+------+
| G(1) | 0.35 | 0.4 |
+------+------+------+
Это недопустимо. Единственный способ выполнить эту маргинализацию - это знать предельную вероятность p (D | I). Тогда
p (G | I) = integra_over_D (P (G | D, I) * p (D | I)
В нашем случае мы не определили p (D | I), но пакет, кажется, считает, что p (D = 0 | I) = 0,5, p (D = 1 | I) = 0,5
Есть ли что-то, что я пропускаю?