【问题标题】:How to transform data into probabilities如何将数据转化为概率
【发布时间】:2020-05-12 14:14:17
【问题描述】:

我正在尝试创建一个简单的游戏,您可以在其中选择玩家 A、...、J,每个玩家的统计数据类别为 1、...、10,并且值是确定性的。数据如下:

players <- c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J")
stats <- c("Cat1", "Cat2", "Cat3", "Cat4", "Cat5", "Cat6", "Cat7", "Cat8", "Cat9", "Cat10")
values <- matrix(rnorm(100,mean=3,sd=1), 10, 10) #random sample for example

游戏由两个面对面的玩家进行,随机选择一个统计数据,较高的统计数据获胜。我曾尝试将 dplyr mutate 与 ecdf 函数一起使用来计算概率,但我遇到了 NA 强制错误。目的是转换每一列,以便每个玩家都有可能在该统计类别中获胜。然后我想运行一个模拟,看看哪些玩家最有可能获胜,然后我可以相应地调整统计数据。

【问题讨论】:

  • 矩阵values是什么意思?与playersstats 相关吗?最好提供一个小例子来描述所需的转换
  • 统计 A 可以是“攻击”或统计 B 可以是“防守”,如果玩家 A 的攻击值为 5,而玩家 B 的攻击值为 4,那么玩家 A 将获得胜利。统计数据将根据玩家的“风格”预先确定。

标签: r probability-theory


【解决方案1】:

这里有一个解决方案,它给出了竞争者在统计数据比较中胜出的概率,而不是另一个随机选择的玩家在给定统计数据中获胜的概率。如果您有一个像您提供的那样的统计数据矩阵,则此方法有效。结果是输赢。抛硬币打破平局。每个玩家只参加一次比赛(即,无论他们与随机选择的玩家进行比较是赢还是输,他们都不会再与其他玩家的锦标赛风格竞争)。

[由于不清楚玩家是列还是行,我假设玩家在值矩阵的行中,而统计数据在列中。如果玩家在列中,则只需稍微修改下面的代码]

players <- c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J")
stats <- c("Cat1", "Cat2", "Cat3", "Cat4", "Cat5", "Cat6", "Cat7", "Cat8", "Cat9", "Cat10")
values <- matrix(rnorm(100,mean=3,sd=1), 10, 10) #random sample for example
dimnames(values) <- list(players, stats)

apply(values, 2, function(x) {
  vapply(x, function(y) {
    wins <- sum(y > x)
    draws <- (sum(y == x) - 1)/2  # Subtract 1 because y can't compete with itself.
    win_prob <- (wins + draws) / (length(x) - 1)
  }, FUN.VALUE = numeric(1))
})

【讨论】:

    猜你喜欢
    • 2014-06-21
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 2019-09-17
    相关资源
    最近更新 更多