r - 运行模拟结果接近,但在某些区域显着偏离
问题描述
所以我正在模拟棒球队的胜利。我有一个公式可以告诉我客队和主队的赔率。看起来像这样(MLB_3 是 df 的名称)
X2021 Away_Team Home_Team Away_Team_Odds Home_Team_Odds
1 1-Apr Blue.Jays Yankees 46.85205 53.14795
2 3-Apr Blue.Jays Yankees 46.85205 53.14795
3 4-Apr Blue.Jays Yankees 46.85205 53.14795
4 5-Apr Orioles Yankees 33.63985 66.36015
5 6-Apr Orioles Yankees 33.63985 66.36015
6 7-Apr Orioles Yankees 33.63985 66.36015
所以我通过添加来预测获胜者
MLB_3$RN <- runif(2430,0,100)
MLB_3$Winner <- ifelse(MLB_3$RN > MLB_3$Away_Team_Odds, yes = MLB_3$Home_Team, no = MLB_3$Away_Team)
游戏总数为 2430。它们都是不同的,我相信时间表是正确的。
我想模拟 25000 次并获得每支球队的平均获胜次数
所以我跑了这个
set.seed(100)
Sims <- replicate(n = 25000, expr = sample(MLB_3$Winner, 2340))
Sims <- as.data.frame(Sims)
Proj <- Sims %>%
gather("key", "value", V1:V25000) %>%
group_by(value) %>%
summarise(Wins = round(n() / 25000,1)) %>%
arrange(-Wins)
它给了我想要的东西,但根据他们的分数和赔率,数据没有意义。我预计会与我最初的想法有所不同,但就赔率而言,排名第 3 的球队获得第 6 多胜,而排名第 6 的球队获得第 16 多胜。
所以我想把代码放出来看看是否有人知道我为什么会得到这些结果,或者我是否错过了代码中的某些内容。
任何帮助表示赞赏
解决方案
您可以通过创建函数来创建模拟。
sim <- function(MLB_3) {
MLB_3$RN <- runif(nrow(MLB_3),0,100)
transform(MLB_3, Winner = ifelse(RN > Away_Team_Odds, Home_Team, Away_Team))
}
并使用replicate
它重复n
多次并执行计算。
n <- 25000
replicate(n, sim(MLB_3), simplify = FALSE) %>%
dplyr::bind_rows(.id = 'sim_number') -> data
data
推荐阅读
- amazon-web-services - 在 azure 中是否可以跨租户 blob 访问?
- javascript - 在 JBOSS 中发布问题,指向文件(图像、子页面)的链接 HTML 具有绝对路径重定向到 / 而不是 APP
- firebase - unity android 的自定义 FCM 通知声音
- laravel - Doctrine/dbal - 尝试将字符串字段更改为日期时出错
- java - Neo4j OGM @Properties 支持哪些条目类型?
- json - 由于字符周围的值无效,无法解码 json
- postgresql - Postgres 中的多节点集群
- php - 使用 PHP 在 execl 中过滤切片器
- vbscript - 如何直接访问从 VBScript 中的函数返回的数组
- scala - 在 Spark 数据集中添加 ADT 列?