Monte Carlo 模拟的 R 问题

R Proble with Monte Carlo Simulation

我如何解决这个练习:

Let U come from a uniform (0,1) distribution and Z come from a standard normal distribution. Let X = pZ + (1-p)U. Estimate p when X has a variance of 0.4.

也许我应该install.packages('polynom')?

p 等于 0,62,因为我已经用分析法计算了它,但我不知道如何使用随机随机数生成器用 R 求解它

我不会为您解决练习,但会为您提供解决方法的线索

你要照着练习做:

  1. 模拟U[0,1]
  2. 模拟 N(0,1)

使用 p

的值将它们放在一起

对于给定的p,你可以定义一个函数:

set.seed(234)
computeX <- function(p){

  u <- runif(1000)
  z <- rnorm(1000)

  X = p*z + (1-p)*u
  return(X)
}

var(computeX(0.2))
[1] 0.08924463

现在我让你找到锻炼所需的p的例程。

不需要任何外部库

这是一个例子

fobj <- function(p)  abs(var(p*rnorm(1e5) + (1-p)*runif(1e5))-0.4)
pval <- optimise(fobj,c(0,1))$minimum

哪里

  • 首先定义你的 objective 函数 fobj,即 X0.4
  • 的方差之间的距离
  • 然后应用 optimise 最小化 fobj

结果

> pval
[1] 0.6223968