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

问题描述 投票:3回答:2

我的数据框有两列,平均值为Team_A,Team_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队应该赢得与score [2-0] (rounded to nearest integer)的比赛。假设分数是独立的并且发生在一个区间中并使用泊松分布公式,

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乘3矩阵的python函数。

python pandas statistics poisson
2个回答
1
投票

我迷失了如何编写一个循环遍历每一行并创建一个3乘3矩阵的python函数。

我知道你已经处理了问题的统计部分(比如计算Poisson分布的概率),我是对的吗?

如果是这样,你可以使用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数据帧。 在此表中,Team A概率是列索引,Team B概率是行索引(应该与您的示例匹配)。所以要获得一个pandas数据帧,你可以这样做:

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

这是你要找的桌子。


0
投票

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

如果您已经拥有所需形状的数据框,则可以将其轻松转换为numpy.ndarray。

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_numpy.html#pandas.DataFrame.to_numpy

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

© www.soinside.com 2019 - 2024. All rights reserved.