python - 如何构建隐含概率。 python中泊松分布的矩阵

标签 python pandas statistics poisson

我的数据框有两列,分别是 Team_A 和 Team_B 在一场比赛中进球的平均值。对于每一行,我想创建一个 3 x 3 矩阵,该矩阵使用泊松分布覆盖所有可能的得分线。 这是我数据的前几行,

d = {'Team_A':[2.0160, 1.3421, 2.4654, 3.0281], 'Team_B':[0.0653, 1.5641, 4.0241, 1.2375]}
df = pd.DataFrame(data=d)

因此,从第一行开始,A 队应该以得分 [2-0](四舍五入到最接近的整数) 赢得比赛。假设分数是独立的并且出现在一个区间内并使用泊松分布的公式,

P(k wins in interval) = ((lambda**k) * exp(-lambda))/factorial(k)

其中 k = [0,1,2,3]

Team A scores 0, 1, 2 and 3 goals with prob. [0.1332, 0.2685, 0.2707, 0.1819] respectively. 
And, Team B scores 0, 1, 2 and 3 goals with [0.5205, 0.3399, 0.1110, 0.0242] probabilities.

下表是通过上述概率的逐元素乘法构建的。

For example the implied prob. of a 2-0 Team A win = 0.2707 * 0.5205 = 0.140899

                        Team_A Goals                    0       1       2      3
    Team_B Goals     Poisson for no.of_goal/Team    0.1332  0.2685  0.2707  0.1819
      0                     0.5205                  0.0693  0.1398  0.1409  0.0947
      1                     0.3399                  0.0453  0.0913  0.0920  0.0618
      2                     0.1110                  0.0148  0.0298  0.0030  0.0202
      3                     0.0242                  0.0032  0.0065  0.0065  0.0044

问题

我不知道如何编写一个循环遍历每一行并创建一个 3 x 3 矩阵的 python 函数。

最佳答案

I'm lost in how to write a python function that loops through each row and create a 3 by 3 matrix.

我知道您已经处理了问题的统计部分(例如计算泊松分布的概率),对吗?

如果是这样,您可以使用 itertools product创建你的表。
假设 prob_aprob_b 是两个数组,分别包含 A 队和 B 队的概率。矩阵是这样构建的:

from itertools import product
import numpy as np

prod_table = np.array([(i*j) for i, j in product(prob_b, prob_a)])
prod_table.shape = (4, 4)

现在您有了一个包含所有所需值的 4x4 矩阵,您可以将其转换回 pandas 数据帧。
在此表中,A 队概率是列索引,B 队概率是行索引(应与您的示例匹配)。所以要获得一个 pandas 数据框,你可以这样做:

prob_df = pd.DataFrame(prod_table, index=prob_b, columns=prob_a)

这就是您正在寻找的表格。

关于python - 如何构建隐含概率。 python中泊松分布的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55006236/

相关文章:

algorithm - 动态规划 : Number of ways to get at least N bubble sort swaps?

python - Pandas 时间序列重新采样的问题

python - 如何使用Python并发发送10,000个HTTP请求

python从特定行位置的数据帧收集数据

python - 使用 NumPy 时如何根据数据类型创建数据子集?

python - 函数内多列的 For 循环替代方案(pandas)

python - 在 Pandas 的坐标行中只保留最大间隔

Python - 如何确定数据点是随机的还是聚集的?

Python 3 中忽略的 Python 单元测试预期失败

python - 如何在 Python 回归模型中合并和预测滞后时间序列变量