我有这两个数组/矩阵,它们表示2个离散随机变量X和Y的联合分布。我以这种格式表示它们是因为我想使用numpy.cov
函数,而该格式似乎是{ {1}}要求。
https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.cov.html
cov
如何根据给定的X和Y联合分布来计算X(以及Y)的边际分布?我的意思是...有没有可以调用的库方法?
我想得到例如像这样:
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
]
我想避免自己对边际分布的计算进行编码。
我认为已经有一些Python库方法了。
这是什么,给定我的数据怎么称呼它?
答案 0 :(得分:2)
您可以使用margins:
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]]