“手工”平均值的概率密度和计算如下:
我将概率密度函数编码为:
myfunc <- function(x){ ifelse(x >= 0 & x < 0.5, 1, ifelse (x >= 0.5 & x < 1, 0.2, ifelse(x >= 1 & x < 2, 0.8*(x-1), 0))) }
我知道EV是加权积分,但我正在努力编写计算代码。此外,还有:我如何模拟长期的结果(0.867)?有人能帮帮忙吗
nfg76nw01#
以下是integrate的一个解决方案:
integrate
integrate(function(x) x*myfunc(x),lower=0,upper=2) 0.866666666666667 with absolute error < 9.6e-15
vh0rcniy2#
我认为integrate approach by one绝对是最好的给予你的分析结果。如果您对蒙特卡罗模拟方法感兴趣(您在问题中使用了 “模拟”),您可以尝试以下方法
> n <- 1e7 > x <- runif(n, 0, 2) > y <- runif(n, 0, 2) > 4 * mean(y <= x * myfunc(x)) [1] 0.8666928
关键是你需要有足够大的数字n来接近分析平均值。模拟的思想是计算曲线x*myfunc(x)下的面积部分
n
x*myfunc(x)
ff <- \(v) v * myfunc(v) curve(ff, 0, 2)
2条答案
按热度按时间nfg76nw01#
以下是
integrate
的一个解决方案:vh0rcniy2#
我认为
integrate
approach by one绝对是最好的给予你的分析结果。如果您对蒙特卡罗模拟方法感兴趣(您在问题中使用了 “模拟”),您可以尝试以下方法
关键是你需要有足够大的数字
n
来接近分析平均值。模拟的思想是计算曲线
x*myfunc(x)
下的面积部分