绘制不同系列的累积值

时间:2019-07-08 13:58:18

标签: r ggplot2

我进行了一个简短的模拟,并希望根据参数k上的“运行总和”来绘制每个模拟的结果。作为参考,我想得出一个与本文相似的图:

https://www.pinnacle.com/en/betting-articles/Betting-Strategy/betting-bankroll-management/VDM2GY6UX3B552BG

以下是模拟代码:

## Simulating returns over k bets.
odds <- 1.5
k <- 100
return <- odds - 1
edge <- 0.04
pw <- 1/(odds/(1-edge))
pl <- 1-pw

nsims <- 10000
set.seed(42)
sims <- replicate(nsims, {
  x <- sample(c(-1,return), k, TRUE, prob=c(pl, pw))
})

rownames(sims) <- c(1:k)
colnames(sims) <- c(1:nsims)

如果我在说明中不清楚,请告诉我。

1 个答案:

答案 0 :(得分:0)

好的,这是您如何获得关于下注的累计值的图的方法(我设置nsims <- 10以便使图易于读取)。

首先,我生成数据:

## Simulating returns over k bets.
odds <- 1.5
k <- 100
return <- odds - 1
edge <- 0.04
pw <- 1/(odds/(1-edge))
pl <- 1-pw

nsims <- 10
set.seed(42)
sims <- replicate(nsims, {
  x <- sample(c(-1,return), k, TRUE, prob=c(pl, pw))
})

rownames(sims) <- c(1:k)
colnames(sims) <- c(1:nsims)

然后我创建一个包含n个模拟结果的数据框(此处为10个):

df <- as.data.frame(sims)

我们要绘制的是累积总和,而不是特定下注的结果,因此我们遍历各列(即模拟)以​​得出该值:

for (i in colnames(df)){
  df[[i]] <- cumsum(df[[i]])
}
df <- mutate(df, bets = rownames(df))


output <- melt(df, id.vars = "bets", variable.name = 'simulation')

现在我们可以绘制数据了:

ggplot(output, aes(bets,value,group=simulation)) + geom_line(aes(colour = simulation))