R蒙特卡洛停止标准

时间:2017-02-01 06:46:45

标签: r montecarlo standard-error

你能帮我理解平均(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值作为Monte-Carlo模拟的停止标准,但是我应该从样本或样本的平均值来计算sem吗?

1 个答案:

答案 0 :(得分:1)

代码中的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
}
相关问题