代码之家  ›  专栏  ›  技术社区  ›  Bryan.R

R仿真中的参数估计

  •  0
  • Bryan.R  · 技术社区  · 8 年前

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

    1) Z是n的向量,从n(0,1)开始绘制

    2) 最大概率(Z)>4等于0.25

    在R中,估计参数n以满足这两个条件的最佳方法是什么?我在试图避免代码中的循环或彻底搜索时陷入了困境。谢谢

    2 回复  |  直到 8 年前
        1
  •  0
  •   gfgm    8 年前

    以下是另一种(相关)方式,利用 pnorm 这就得到了N(0,1)的CDF。所以 pnorm(4) 告诉你从 N(0,1) <= 4 因此 1 - pnorm(4) 将告诉我们平局大于4的概率。如果任何平局大于4,那么很明显最大值大于4,所以我们只需要关注一些观测值大于4的概率。

    由于绘图是独立的,我们可以取乘积,因此绘图大于4 in n的概率为 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

        2
  •  0
  •   Ross    8 年前

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

    我将创建如下函数:

    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 可能是合理的。