R 蒙特卡洛停止标准

R Monte-Carlo stopping criteria

能否请您帮助我了解均值 (sem) 值的标准误差:sem 或 semm 中的哪一个更适合估计蒙特卡洛模拟与真实均值的接近程度。

我的意思是我必须使用观察值计算 sem,还是每次观察后使用平均值计算 semm?

#some data
    x <- c(10,9,8,7,6,5,4,3,2,1,10,9,8,7,6,5,4,3,2,1,10,9,8,7,6,5,4,3,2,1,10,9,8,7,6,5,4,3,2,1)
    x_means <- c()
    sem <- c()
    semm <- c()

    for(i in 1:length(x))
    {
      x_means <- c(x_means, mean(x[1:i]))
      sem <- c(sem, sd(x)/sqrt(i))
      semm <- c(semm, sd(x_means)/sqrt(i))
    }

我想使用 sem 值作为蒙特卡洛模拟的停止标准,但了解我应该从样本还是样本均值计算 sem?

代码中的 sem 使用了所有模拟值,因此停止决策甚至不可行。我想你对 sem 的意思是

sd(x[1:i])/sqrt(i)

如果是这样,sem 是正确的选择。

对于 i.i.d 的重复随机观察。 Y_k的,我们对E[Y_k]感兴趣。每个增量的明显估计量是 X_k = (1/k)(Y_1+...+Y_k),我们想要评估每个 k 的 X_k 的精度.一个明显的选择是 X_k 的样本标准偏差,即 sqrt(1/(k-1)*sum(Y_i-X_k)^2)。我们可以按如下方式实现。

y <- NULL
precision <- 1
while (precision > 0.01){
  y <- c(y,rnorm(1)) # your own Monte-Carlo here, for this example, I chose trivial one
  precision <- sd(y)/sqrt(length(y)-1)
  if (is.na(precision)) precision <- 1
}