Рассчитать маржинальное распределение из совместного распределения в Python - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть эти два массива / матрицы, которые представляют совместное распределение 2-х дискретных случайных величин X и Y. Я представлял их в этом формате, потому что я хотел использовать функцию numpy.cov, и это, кажется, формат covтребует.

https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.cov.html

joint_distibution_X_Y = [

    [0.01, 0.02, 0.03, 0.04, 
     0.01, 0.02, 0.03, 0.04, 
     0.01, 0.02, 0.03, 0.04, 
     0.01, 0.02, 0.03, 0.04],

    [0.002, 0.002, 0.002, 0.002, 
     0.004, 0.004, 0.004, 0.004, 
     0.006, 0.006, 0.006, 0.006, 
     0.008, 0.008, 0.008, 0.008],

]

join_probability_X_Y = [
                0.01, 0.02, 0.04, 0.04, 
                0.03, 0.24, 0.15, 0.06,
                0.04, 0.10, 0.08, 0.08,
                0.02, 0.04, 0.03, 0.02
            ]

Как рассчитать предельное распределение X (а также Y) из заданного совместного распределения X и Y?Я имею в виду ... есть ли какой-нибудь библиотечный метод, который я могу вызвать?

Я хочу получить в результате, например, что-то вроде:

 X_values = [0.002, 0.004, 0.006, 0.008]
 X_weights = [0.110, 0.480, 0.300, 0.110]  

Я хочу избежать кодирования вычисления маржинального распределения самостоятельно.
Я предполагаю, что уже есть некоторый метод библиотеки Pythonдля этого.
Что это такое и как я могу назвать это, если у меня есть данные?

1 Ответ

0 голосов
/ 27 декабря 2018

Вы можете использовать поля :

import numpy as np
from scipy.stats.contingency import margins

join_probability_X_Y = np.array([
                [0.01, 0.02, 0.04, 0.04],
                [0.03, 0.24, 0.15, 0.06],
                [0.04, 0.10, 0.08, 0.08],
                [0.02, 0.04, 0.03, 0.02]
            ])


x, y = margins(join_probability_X_Y)

print(x.T)

Выход

[[0.11 0.48 0.3  0.11]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...