Bootstrapping/Monte R 中的 Carlo 模拟

Bootstrapping/Monte Carlo Simulation in R

我正在努力完成这个测试:

假设我有以下数据:

set.seed(123)

active_MJO   <-c(6L, 2L, 11L, 20L, 62L, 15L, 2L, 51L, 58L, 100L, 45L, 44L, 49L, 
                86L, 28L, 1L, 1L, 40L, 79L, 99L, 86L, 50L, 9L, 78L, 45L, 100L, 
                77L, 44L, 45L, 93L)

inactive_MJO <-c(83L, 170L, 26L, 66L, 156L, 40L, 29L, 72L, 109L, 169L, 153L, 
               136L, 169L, 133L, 153L, 13L, 24L, 148L, 121L, 80L, 125L, 21L, 
               135L, 155L, 161L, 171L, 124L, 177L, 167L, 162L)

我不知道如何在 R 中实现上述测试。

我尝试了以下方法,但我不确定这是否正确。

sig.test <- function (x){
a <- sample(active_MJO)
b <- sample(inactive_MJO)
sum(a > b)
}

runs <- 1000
sim <- sum(replicate(runs,sig.test(dat))+1)/(runs+1)

我认为以上说法不正确。哪里可以放950/1000条件?

抱歉,我是 bootstrapping/Monte Carlo 测试的新手。

我将不胜感激。

真诚的, 林兹

首先,重要的是要注意它们正在对 30 个频率 进行采样。由于它是引导程序,因此这些样本将被替换。

然后他们将平均活跃度与平均不活跃度进行比较。这相当于:

  1. 将 30 对中的活性总和与非活性总和进行比较,或
  2. 将 30 对中每一对的差异之和与零进行比较。

他们重复该过程 1000 次,然后将 1000 次比较的结果与 950 次比较。

以下代码执行#2:

set.seed(123)

active_MJO   <-c(6L, 2L, 11L, 20L, 62L, 15L, 2L, 51L, 58L, 100L, 45L, 44L, 49L, 
                 86L, 28L, 1L, 1L, 40L, 79L, 99L, 86L, 50L, 9L, 78L, 45L, 100L, 
                 77L, 44L, 45L, 93L)
inactive_MJO <-c(83L, 170L, 26L, 66L, 156L, 40L, 29L, 72L, 109L, 169L, 153L, 
                 136L, 169L, 133L, 153L, 13L, 24L, 148L, 121L, 80L, 125L, 21L, 
                 135L, 155L, 161L, 171L, 124L, 177L, 167L, 162L)

diff_MJO <- active_MJO - inactive_MJO
sim <- sum(replicate(1e3, sum(sample(diff_MJO, 30, replace = TRUE)) > 0))

> sim
[1] 0

在这种情况下,1000 次重复中的 none 导致平均值 active_MJO 大于平均值 inactive_MJO。在绘制自举差异总和的直方图后,这并不奇怪:

diff_MJO <- replicate(1e5, sum(sample(diff_MJO, 30, replace = TRUE)))
hist(diff_MJO)