我有许多已知但可能不同的概率分布(PDF)的随机变量。我需要在特定点 x 计算这些随机变量的和的累积分布函数(CDF)的值。
这包括两个步骤:
计算随机变量PDF的卷积以获得PDF 他们的总和
计算CDF(x),即摘要PDF从 -infinity 到 x
看起来第二步只能用数值方法完成。第一步可以在一些但不是所有情况下以分析方式完成。
例如,如果我有一个随机变量分布式日志 - 通常使用PDF:
PDF_1(x) = e^(-(log(x) -μ)^2/(2 sigma^2))/(sqrt(2 π) x sigma)
和另一个随机变量也正常分布,但使用不同的参数:
PDF_2(x) = e^(-(log(x) -μ)^2/(2 delta^2))/(sqrt(2 π) x delta)
然后无法通过分析计算其总和(Convolution[PDF_1, PDF_2]
)的PDF。
假设分布尾部的任意截止点为1000,并假设参数μ,sigma amd delta是已知的:
PDF_sum(x) = NumericallyIntegrate (PDF_1(y) PDF_2(y - x) dy), y=0 to 1000
现在:
CDF(x) = NumericallyIntegrate (PDF_sum(y) dy), y=0 to x
如何在C ++中写下CDF计算的代码,以及你建议的库?