问题描述
鉴于他们之前赢得过比赛,我必须找出亚足联队赢得比赛的可能性吗?
我的数据如下:
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-Home Win,WA- Away Win),所以在这里我们看到2个实例(类似地WA-WA,WH-WH)。
如何找到每个的计数?
解决方法
- 我如何基本上找到R中各个元素的计数?
如果要对列结果计数,可以尝试:
table(df$results)
D L W
1 3 2
-
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
- 如果您要计算基本R的组合概率,
我认为操纵表是直接做到这一点的方法:(例如将WA和WH概率结合在一起的示例)
sum(table(df$result)[which(names(table(df$result)) %in% c("WA","WH"))]) /
sum(table(df$result))
0.5714286
- 如果要按行计算计数和概率,请为“ WA”的目标元素指定所需的元素“ WH”
我为此定义了一个自定义函数,因此可以更轻松地应用于更大的上下文
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,pattern_search=c("WH"),pattern_target=c("WA"))
[1] 1
您还可以将模式设置为“ prob”,以返回顺序模式的概率而不是计数
row_wise_pattern_count(df,pattern_target=c("WA"),mode="prob")
[1] 0.1666667