我用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%。
答案 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
我猜你想要这个。