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 求解它
我不会为您解决练习,但会为您提供解决方法的线索
你要照着练习做:
- 模拟U[0,1]
- 模拟 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
,即 X
和 0.4
的方差之间的距离
- 然后应用
optimise
最小化 fobj
结果
> pval
[1] 0.6223968
我如何解决这个练习:
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 求解它
我不会为您解决练习,但会为您提供解决方法的线索
你要照着练习做:
- 模拟U[0,1]
- 模拟 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
,即X
和0.4
的方差之间的距离
- 然后应用
optimise
最小化fobj
结果
> pval
[1] 0.6223968