背景:
作为preceding question的后续跟进,我想请求帮助在original paper引用的opinion column in The New York Times yesterday上复制更复杂的结果。在那篇起源于米兰和阿利坎特的论文中,提出了一个有趣的减少头部跟随另一个头部(约40%)的频率。在@Roland解决后,今天早上SO问题的模拟是一致的。
问题"
问题是如何在R中模拟一个模拟来重现硬币投掷中的成功部分("头部"),这些投掷遵循一系列成功(k
成功)的短硬币折腾实验(n
投掷),如下面的情节所示,属于在"背景"中链接的文章。问题的一部分。
答案 0 :(得分:1)
这是一个简单的解决方案:
#' @param n An integer giving the number of trials
#' @param k An integer giving the prior-streak size.
#' @examples
#' repeat_success(10,2)
#' repeat_success(100, 5)
repeat_success <- function(n,k) {
path <- sample(c(1,0), size= n, replace= TRUE)
successes <- which(path == 1)
streaks <- rep(0, length(successes))
for (i in 1:length(successes)) {
j <- successes[i]
if (j > k)
streaks[i] <- ifelse(sum(path[(j-k):(j-1)]) == k, 1, 0)
}
return(list(successes= successes, frac_streaks= sum(streaks) / sum(path)))
}
R> repeat_success(10,2)
$successes
[1] 1 3 5 8 9
$frac_streaks
[1] 0
显然,您可以设置种子以获得可重复性。显然,我没有在参数上包含错误检查。