我在计算和的多项式分布。把它想象成选举:假设有11名选民和3名候选人,候选人A被选中的概率为0.5,B为0.3,C为0.2,我感兴趣的是计算A获胜的概率。
所以我考虑了A在多数票下获胜的所有可能情况(得票最多的选项获胜),计算它们发生的概率,然后将所有这些值相加。
当我试图计算A获胜的每一个场景的多项分布时,我的问题就来了。
我有一个数据框,里面有A获胜的所有可能结果,理想情况下,我需要一个新的列,其中显示每种结果发生的概率,类似于这样:
V1 V2 V3 dmultinom(x = c(5, 3, 3), prob = options)
1 5 2 4 0.06237
2 5 3 3 0.06237
3 5 4 2 0.06237
4 6 0 5 0.06237
5 6 1 4 0.06237
6 6 2 3 0.06237
7 6 3 2 0.06237
8 6 4 1 0.06237
9 6 5 0 0.06237
10 7 0 4 0.06237
11 7 1 3 0.06237
12 7 2 2 0.06237
13 7 3 1 0.06237
14 7 4 0 0.06237
15 8 0 3 0.06237
16 8 1 2 0.06237
17 8 2 1 0.06237
18 8 3 0 0.06237
19 9 0 2 0.06237
20 9 1 1 0.06237
21 9 2 0 0.06237
22 10 0 1 0.06237
23 10 1 0 0.06237
24 11 0 0 0.06237
当然,要有正确的价值观。
我尝试使用$
访问行的值,但没有成功,我还尝试使用dsplyr
创建一个新列,将行的值作为向量,但也没有成功。
2条答案
按热度按时间nwnhqdif1#
下面是
data.table
的一个选项eeq64g8w2#
这不是最好的解决方案,但可以用一个for循环来完成。
首先,创建空列:
接下来,迭代 Dataframe ,将多项式与来自V1、V2和V3的输入相加