我进行了一个简短的模拟,并希望根据参数k上的“运行总和”来绘制每个模拟的结果。作为参考,我想得出一个与本文相似的图:
以下是模拟代码:
## 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)
如果我在说明中不清楚,请告诉我。
答案 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))