R仿真中的参数估计

时间:2018-04-01 22:29:34

标签: r statistics simulation probability

我对R很新,正在探索模拟以估计参数n(整数)

1)Z是从N(0,1)

绘制的n的向量

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

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

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

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

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

答案 1 :(得分:0)

这是另一种(相关的)方式,利用pnorm为你提供N(0,1)的CDF。所以pnorm(4)告诉你从N(0,1) <= 4抽取1 - pnorm(4)的抽签概率告诉我们抽签大于4的概率。如果任何抽奖大于4,那么显然最大值大于4,所以我们只需要专注于某些观察值大于4的概率。

由于平局是独立的,我们可以采用产品,因此在n平局中绘制大于4的概率为1 - (pnorm(4)^n)。基于此,我们可以创建目标函数并求解:

# 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