r - 在 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(亚足联获胜|上一场比赛获胜)?
如何在基本 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
- 如果要按行计算计数和概率,请将所需元素“WH”赋予“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
您还可以将模式设置为“概率”以返回序列模式的概率而不是计数
row_wise_pattern_count(df, "result", pattern_search=c("WH"), pattern_target=c("WA"), mode="prob")
[1] 0.1666667
推荐阅读
- javascript - 使用拦截器和transformResponse时在axios中处理401
- python - Python 正则表达式:OR 语句在正则表达式模块中不起作用
- spring-kafka - spring-kafka-test 来自主题的轮询记录
- hibernate - Spring Boot - 持久化一个 @onetomany 实体
- java - 将 maven 应用程序打包到一个 jar 中 - 有一个例外
- javascript - 基本的 JavaScript 按钮交互
- java - 提供者 org.eclipse.jetty.apache.jsp.JuliLog 不是子类型
- php - 如何创建一个将返回数组或单个项目的类?
- amazon-web-services - AWS IAM - 如何提供对账单的访问权限?
- php - mysqli 多查询不工作