[英]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
将返回TRUE
或FALSE
。 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)
。 基于此,我们可以创建目标函数并求解:
# 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),则结果为0.24993943
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.