我希望从CRAN中探索 GameTheory
包,但我很感激帮助将我的数据(以独特组合和结果的数据框的形式)转换为所需的联盟对象 . 我相信这是所有联盟 Value 观的有序列表(https://cran.r-project.org/web/packages/GameTheory/vignettes/GameTheory.pdf) .
我的真实数据有n~30个“玩家”,独特的组合=大(比如1000个独特的组合),我有1和0个标识符来描述这些组合 . 该数据稀疏地填充,因为我没有所有组合的数据,但是假设未描述的组合具有零值 . 我打算让一个特定的“玩家”出现在所有组合中,并充当基线 .
举个例子,这是我开始的数据框:
require(GameTheory)
games <- read.csv('C:\\Users\\me\\Desktop\\SampleGames.csv', header = TRUE, row.names = 1)
games
n1 n2 n3 n4 Stakes Wins Success_Rate
1 1 1 0 0 800 60 7.50%
2 1 0 1 0 850 45 5.29%
3 1 0 0 1 150000 10 0.01%
4 1 1 1 0 300 25 8.33%
5 1 1 0 1 1800 65 3.61%
6 1 0 1 1 1900 55 2.89%
7 1 1 1 1 700 40 5.71%
8 1 0 0 0 3000000 10 0.00333%
其中n1是我的通用播放器,在这种情况下,我已经描述了所有组合 .
为了单独从玩家{1}计算我的“基数”联盟 Value ,我希望执行计算:0.00333%(成功率)所有赌注,即0.00333%(800 850 150000 300 1800 1900 700 3000000)= 105
然后,我将为{2},{3}和{4}设置零值,因为它们在此示例中从不“单独”播放 .
为了计算我的第一对联盟 Value ,我希望进行计算:7.5%(800 300 1800 700)0.00333%(850 150000 1900 3000000)= 375
这是通过他们所参加的赌注来计算玩家{1,2}基本赢率(7.5%),加上玩家{1}基本赢率(0.00333%),因为他在该玩家{2}中所具有的组合没有 - 即独家集合 .
对于其他独特组合重复该逻辑 . 例如,第4行将是{1,2,3}的组合,因此计算结果为:7.5%(800 1800)5.29%(850 1900)8.33%(300 700)0.00333%(3000000 150000)= 529描述性地为将{1,2}的成功率设置为{3}中不显示的组合,{1,3}显示{2}不显示,{1,2}}显示的成功率,以及基础播放器{1}通过示例,其中{2}和{3}都不出现 .
因此,我的预期结果应该如此:
c(105,0,0,0, 375,304,110,0,0,0, 529,283,246,0, 400)
其中前四个数字是单人组合{1} {2} {3}和{4},接下来的六个数字是两个玩家组合{1,2} {1,3} {1,4}(和null case {2,3} {2,4} {3,4}不存在),接下来的四个是三个玩家组合{1,2,3} {1,2,4} {1, 3,4}和空案例{2,3,4},最后是完整的组合集{1,2,3,4} .
然后我将其输入到包的 DefineGame
函数中以创建我的联盟对象 .
感谢任何帮助:我试图尽可能具有描述性 . 我真的不知道从哪里开始生成必要的集合并设置排除 .