繁体   English   中英

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将返回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) 基于此,我们可以创建目标函数并求解:

# 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM