Как получить указанную c вероятность определенного значения в распределении? - PullRequest
0 голосов
/ 26 февраля 2020

Я новичок в PyMC3, я начал три недели go, чтобы ознакомиться с ним, и в настоящее время я занимаюсь обучением, поэтому у меня есть одно сомнение в моей программе. Извините, если это глупый вопрос.

У меня есть эта модель:

with pm.Model() as clientes:

  name_clients = pm.Bound(pm.Geometric, upper=100)('nombres_clientes', p=0.02685)
  age_clients = pm.TruncatedNormal('edad.clientes', mu=34, sigma=24, lower=0.0, 
                                   upper=101.0)

Как вы можете видеть, оба распределения ограничены между диапазонами (name_clients между 1 и 100, и age_clients между 0 и 101).

Мой вопрос о том, как я могу узнать вероятность (между 0 и 1), например, что name_clients равен 67? И какова условная вероятность, если у меня age_clients = 21 и name_clients = 34?

Я искал много тем и обзоров, но у меня нет четкого представления об этом. Если вы можете мне помочь, я буду очень признателен:)

1 Ответ

0 голосов
/ 26 февраля 2020

Вы всегда можете оценить вероятности как ожидание:

Pr[X ∈ A] = E[?_{A}(X)],

, где

?_{A}(x) = (x ∈ A) ? 1 : 0

- это функция индикатора множества, вероятность которого вы хотите.

Так вам просто нужно сделать выборку из совместного распределения, сопоставить эту функцию индикатора с цепочкой и получить среднее значение. Если искомая вероятность является условной, вставьте условные значения в виде наблюдаемых значений в модель (насколько я помню, в PYMC3 вы делаете это с помощью ключевого аргумента observed).

Другой способ будет работать непосредственно с log-pdf модели, см. здесь , но для этого требуется обработка внутренних частей PPL, с которыми вы имеете дело.

...