【问题标题】:R Monte-Carlo stopping criteriaR蒙特卡洛停止标准
【发布时间】:2017-02-01 06:46:45
【问题描述】:

能否请您帮助我了解平均值 (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?

【问题讨论】:

    标签: r montecarlo standard-error


    【解决方案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
    }
    

    【讨论】:

    • 是的,我的意思是 sd(x[1:i])/sqrt(i)
    • 所以平均值的标准误差使用样本数据,而不是每次观察后的平均值?
    • 没错。您想评估平均值的精度。不是手段流的平均值。
    猜你喜欢
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2018-02-10
    • 2014-03-26
    • 1970-01-01
    相关资源
    最近更新 更多