在R中查找概率



我必须找到AFC球队在之前赢得比赛的情况下赢得比赛的概率?

我的数据看起来像:

df <- " hometeam    awayteam    result  season
AFC      BFC          WH       S1
DFC      AFC          WA       S2
HFC      BFC          D       S2
MFC      AFC          WA       S1
BFC      AFC          L       S3
DFC      KFC          L       S2
AFC      DFC          WH       S3"
df <- read.table(text = df, header = TRUE)

p(AFC获胜|上一场比赛获胜(?

如何在基本R中找到WW的计数?

我想为WH-WA&WA-WH在一起(WH主场获胜,WA客场获胜(,所以这里我们看到2个例子(类似的WA-WA,WH-WH(。

如何找到每个的计数?

  1. 如何基本上在R中找到单个元素的计数

如果您想计算列结果,可以尝试:

table(df$results)
D L W 
1 3 2 
  1. P(AFC Wins| Previous game won)?

如果你想计算如上所述的条件概率,我建议使用贝叶斯置信网络,该网络会将你的数据编译为详细的概率,然后你可以向网络提出查询请求

library(bnlearn)
hc_bn_learning <- hc(df) #using hc learners
bbn <- bn.fit(hc_bn_learning, data = df)
cpquery(bbn, event = (result=="W"), evidence = (hometeam=="AFC"))
0.3525641
  1. 如果你想用基本R计算组合概率

我想操作表是一种直接的方法:(例如,将WA和WH概率组合起来(

sum(table(df$result)[which(names(table(df$result)) %in% c("WA","WH"))]) / 
sum(table(df$result))
0.5714286
  1. 如果你想按行计算计数和概率,给定一个所需的元素"WH";到"0"的目标元素;WA">

我定义了一个自定义函数来实现这一点,因此将更容易应用于更大的上下文

row_wise_pattern_count <- function(df, col_search, pattern_search=c(), 
pattern_target=c(), mode="count"){
row_vector <- df[, which(colnames(df)==col_search)]
count_pattern <- 0
for(x in 1:length(row_vector)){
if(row_vector[x] %in% pattern_search && row_vector[x+1] %in% pattern_target){
count_pattern <- count_pattern + 1
}
}
if(mode=="count"){
return(count_pattern) 
}
else if(mode=="prob"){
return(count_pattern / (length(row_vector) - 1))
}
}

这适用于这样的情况,当您搜索给定的WA元素时,下一个WH元素将出现在下一行,因此您可以使用

row_wise_pattern_count(df, "result", pattern_search=c("WA"), pattern_target=c("WH"))
[1] 0

当你搜索";反之亦然";对于给定的WH元素,下一个WA元素将出现在下一行,因此您可以使用

row_wise_pattern_count(df, "result", pattern_search=c("WH"), pattern_target=c("WA"))
[1] 1

您也可以将模式设置为";prob";返回序列模式的概率,而不是计数

row_wise_pattern_count(df, "result", pattern_search=c("WH"), pattern_target=c("WA"), mode="prob")
[1] 0.1666667

最新更新