R 模拟中的参数估计

Parameter Estimation in R Simulation

我对 R 还很陌生,正在探索模拟来估计参数 n(整数)

1) Z是从N(0,1)

中抽取的n个向量

2) max(Z)>4 的概率等于 0.25

R 中估计参数 n 以满足这两个条件的最佳方法是什么?当我试图避免代码中的循环或穷举搜索时,我被卡住了。谢谢!

编辑:假设一个完全基于模拟的结果,没有尝试分析,

我会创建一个这样的函数:

prob <- function(n) {
  sum(replicate(10000, max(rnorm(n))) > 4)/10000
}

稍微解释一下,max(rnorm(n))) > 4将return一个TRUEFALSE。对 replicate 的调用执行该操作 10000 次。然后我平均得到一个概率估计。

然后我会检查 ?optimise 函数,尝试估算 n。您需要创建另一个在 prob(n) = 0.25 时具有最小值的函数,例如:

result <- function(n) abs(prob(n) - 0.25).

请注意,根据您选择参数的方式,这可能需要很长时间 运行。先测试一下,看看 n 的值可能是合理的。

这是另一种(相关)方法,它利用 pnorm 为您提供 N(0,1) 的 CDF。所以 pnorm(4) 告诉你 N(0,1) <= 4 平局的概率,因此 1 - pnorm(4) 会告诉我们平局大于 4 的概率。如果任何平局大于 4,显然比最大值大于4,所以我们只需要关注一些观察值大于4的概率。

由于抽奖是独立的,我们可以拿产品,所以在 n 次抽奖中抽奖大于 4 的概率是 1 - (pnorm(4)^n)。基于此我们可以创建 on objective 函数并求解:

# Minimize squared deviations
fopt <- function(n){(1 - pnorm(4)^n - .25)^2} 
# or .75 - pnorm(4)^n, but this is clearer

# I specify start and end points. We guess really wide
optimise(fopt, interval = c(100, 100000))
#> $minimum
#> [1] 9083.241
#> 
#> $objective
#> [1] 2.262374e-20

# Now check the result
(1 - pnorm(4)^9083.241)
#> [1] 0.25

我们看到我们得到了 9083.241 的结果,其计算结果恰好为 .25。如果我们只取整数结果 (9083),它的计算结果为 .2499943