pgmpy: как происходит маргинализация, не зная маргиналов? - PullRequest
0 голосов
/ 29 апреля 2020

в 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

Есть ли что-то, что я пропускаю?

...