如何构造隐含prob。python中泊松分布的矩阵

如何构造隐含prob。python中泊松分布的矩阵,python,pandas,statistics,poisson,Python,Pandas,Statistics,Poisson,我的数据框有两列,分别是A队和B队在比赛中得分的平均值。对于每一行,我想创建一个3乘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](四舍五入到最接近的整数)赢得比赛。假设分数是独立的,且出现在一个区间

我的数据框有两列,分别是A队和B队在比赛中得分的平均值。对于每一行,我想创建一个3乘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
问题


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

我将使用numpy进行简单的线性代数运算(例如,乘以小矩阵)

如果已经有了所需形状的数据帧,则可以随时将其转换为numpy.ndarray

如果不是,您将要创建一个零数组,然后在正确的位置插入正确的元素

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

我知道你已经处理了问题的统计部分(比如根据泊松分布计算概率),对吗

如果是这样,您可以使用创建表。
假设
prob_a
prob_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矩阵,其中包含您需要的所有值,您可以将其转换回数据帧。
在此表中,团队A的概率是列索引,团队B的概率是行索引(应该与您的示例相匹配)。因此,要获得熊猫数据帧,您可以执行以下操作:

prob_df = pd.DataFrame(prod_table, index=prob_b, columns=prob_a)
这就是你要找的桌子