У меня есть фрейм данных с пациентами и их посещениями, а наличие заболевания в их левом и/или правом глазу помечено значениями {0,1} (0 = отсутствует и 1 = присутствует). Набор данных выглядит следующим образом:
Patient R L
P_1 0 1
P_1 1 1
P_1 0 1
P_1 0 1
P_1 0 1
P_2 1 1
P_2 0 1
P_2 0 1
P_2 1 1
P_3 0 0
P_3 1 1
P_3 0 0
P_3 0 1
P_3 1 1
P_3 0 1
and so on.....
Как я могу вычислить, например, условную вероятность P(R=1 | L=1) с помощью операций grouby и shift элегантным способом?
IIUC:
df.groupby('L').R.mean()
дает
L
0 0.000000
1 0.384615
Name: R, dtype: float64
Итак, ответ: P(R=1|L=1) = 0.384
и P(R=1|L=0) = 0
.
Или, если мы хотим получить вероятность и для пациентов:
df.groupby(['Patient','L']).R.mean()
дает:
Patient L
P_1 1 0.2
P_2 1 0.5
P_3 0 0.0
1 0.5
Name: R, dtype: float64
так, например, P(R=1|Patent=P_3, L=1) = 0.5
.
P(R=0|L=1) = 1 - P(R=1|L=1)
, так что еще одно вычитание. И P(R=0|R=1)
???
P(R=0|R=1) с точки зрения условной вероятности для того же глаза?
Я думаю, что P(R=1|L=1) не является правильным расчетом для нахождения условного выражения, потому что, когда визиты одного пациента заканчиваются и начинаются визиты следующего пациента, учитывается переход события между разными пациенты
Спасибо за ответ. И я думаю, что то же самое для P(L=1 | R = 1) и P(L = 1 | R = 0) . Как насчет P(R=0 | L=1) и P(R=0 | L=0) или для одного и того же глаза, т.е. P(R=0 | R=1)?