我对R很新,正在探索模拟以估计参数n(整数)
1)Z是从N(0,1)
绘制的n的向量2)max(Z)> 4的概率等于0.25
R中估计参数n以满足这两个条件的最佳方法是什么?我试图避免代码中的循环或穷举搜索时遇到困难。谢谢!
答案 0 :(得分:0)
编辑:假设一个完全基于模拟的结果,没有尝试分析,
我会创建一个这样的函数:
prob <- function(n) {
sum(replicate(10000, max(rnorm(n))) > 4)/10000
}
要解释一下,max(rnorm(n))) > 4
将返回TRUE
或FALSE
。对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