【问题标题】:Find probability in R在 R 中查找概率
【发布时间】:2020-12-05 03:56:23
【问题描述】:

鉴于他们之前赢过比赛,我必须找出 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 Wins| 上一场比赛赢了)?

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

我想一起计算 WH-WA 和 WA-WH 的实例(WH-Home Win,WA-Away Win),所以在这里我们看到 2 个实例(类似 WA-WA,WH-WH)。

如何找到每个的计数?

【问题讨论】:

  • 所以你的意思是把 WH 和 WA 的概率结合起来计算?如果我理解正确?
  • 您能否编辑您的问题以包含预期结果?
  • @JovanGeraldyCandra 是的
  • 更新了我的答案@Emma Vaze

标签: r function statistics probability


【解决方案1】:
  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”赋予“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

【讨论】:

  • 我希望在基本 R 中解决它。不使用库。
  • 我希望根据条件一起计算 WL 的连续实例。不计个人数。
  • WL 实例加在一起是指输赢概率加在一起吗?
  • 您可能需要更新您的问题以更准确地反映您正在寻找的内容。
  • @JovanGeraldyCandra 这不是我指的,我想要这样的序列计数,如果记录 1 有 WH 下一条记录有 WA,反之亦然。
猜你喜欢
  • 1970-01-01
  • 2021-12-10
  • 2019-08-06
  • 1970-01-01
  • 2021-06-26
  • 2018-10-27
  • 2020-08-17
  • 1970-01-01
  • 2015-06-25
相关资源
最近更新 更多