如何从R中的概率密度计算自定义连续分布的平均值(期望值)

vfh0ocws  于 2023-10-13  发布在  其他
关注(0)|答案(2)|浏览(75)

“手工”平均值的概率密度和计算如下:

我将概率密度函数编码为:

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)?
有人能帮帮忙吗

nfg76nw0

nfg76nw01#

以下是integrate的一个解决方案:

integrate(function(x) x*myfunc(x),lower=0,upper=2)

0.866666666666667 with absolute error < 9.6e-15
vh0rcniy

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)下的面积部分

ff <- \(v) v * myfunc(v)
curve(ff, 0, 2)

相关问题