热手谬误:再现模拟的R代码

热手谬误:再现模拟的R代码,r,simulation,probability,R,Simulation,Probability,背景: 作为我的后续工作,我想请求帮助复制一个更复杂的结果。在这篇起源于米兰和阿利坎特的论文中,提出了一个有趣的减少频率的方法,即一个头部后面跟着另一个头部(~40%)。今天早上SO问题中的模拟在@Roland解决后是一致的 问题“ 问题是如何在R中对模拟进行编码,以在抛硬币实验(n抛硬币)中,在一系列成功(ksuccessfuls)之后,重现抛硬币的成功率(“头”),如下图所示,这属于问题“背景”部分链接的一篇文章 这里有一个简单的解决方案: #' @param n An integer gi

背景:

作为我的后续工作,我想请求帮助复制一个更复杂的结果。在这篇起源于米兰和阿利坎特的论文中,提出了一个有趣的减少频率的方法,即一个头部后面跟着另一个头部(~40%)。今天早上SO问题中的模拟在@Roland解决后是一致的

问题“

问题是如何在R中对模拟进行编码,以在抛硬币实验(
n
抛硬币)中,在一系列成功(
k
successfuls)之后,重现抛硬币的成功率(“头”),如下图所示,这属于问题“背景”部分链接的一篇文章


这里有一个简单的解决方案:

#' @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
#'@param n一个给出试验次数的整数
#“@param k是一个给出先前条纹大小的整数。
#“@示例
#“重复成功(10,2)
#“重复成功(100,5)

重复\u成功您是否可以更新此问题,以便无需1)阅读以前的堆栈溢出问题和2)阅读《纽约时报》的文章(在付费墙后面)即可回答此问题?特别是,你能描述一下导致你所包括的数字的实验吗?@josilber对付费墙很抱歉-我没有意识到。在思考如何做的时候,我能问一下你是否有问题,你是否需要拿出独立链接的原始研究论文?好吧,我的主要观点是,你问题的读者不需要阅读外部资源以了解您的要求(尤其是整个研究论文!)。请注意,如果SSRN论文被删除,例如,你的问题的未来访问者将无法理解你的问题。@josilber你的观点很好。在我重写之前,我只需要知道你是否可以获得原始论文,即使它是出于作者的知识信用。是的,我可以访问SSRN论文。我正在尝试跟随w函数中的元素…path的设计目的是什么?我还没有找到相关文档。它是成功和失败的实现排列。另外,请注意,计算分数中的分母可能不是您想要的。我不清楚。当我键入
path()时
R抱怨该函数不存在。但它确实接受您的代码。