将估计概率之和定为1

时间:2019-04-30 12:31:12

标签: r probability

我用ANN估算篮球的获胜概率。因此,在给定对决中,两支球队都有获胜的概率,从逻辑上讲,这应该是100%。 不幸的是,一场对决的概率总和在95%到105%之间。 现在,我正在使用Excel来解决此问题,并将概率除以两个概率的总和,以始终得到100%的总和。 我想在R中执行此操作,但不知道如何进行,因为任何两个概率对的概率之和永远都不相同。 任何帮助表示赞赏!

两个对决的示例:

Example A:
0.7177853
0.3038550
sum = 102.2

Example B:
0.4401672
0.5872775
sum = 102.7

对于示例A,计算完成后应分别转换为70.3%和29.7%。

1 个答案:

答案 0 :(得分:0)

x <- c(0.7177853, 0.3038550)


recalc <- function(x, y) {
  values <- sum(x, y)
  mult <- 1 / values
  newx <- x * mult
  newy <- y * mult
  return(c(newx, newy))
}

recalc(0.7177853, 0.3038550)

[1] 0.7025812 0.2974188

如果您的数据存储在数据框中,我们可以Vectorize函数:

df <- data.frame(
  x = c(0.7177853, 0.7677853, 0.5177853),
  y = c(0.3038550, 0.438550, 0.7038550)
)

newfunc <- Vectorize(recalc)
newfunc(x = df$x, y = df$y)

          [,1]      [,2]      [,3]
[1,] 0.7025812 0.6364609 0.4238443
[2,] 0.2974188 0.3635391 0.5761557

我猜你想要这个。