You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算Cholesky分解生成的相关正态样本各场景的概率

问题解答

你生成的(X,Y)属于连续型二维联合正态分布,严格来说连续随机变量在任意单点处的取值概率P(X=k,Y=p)为0,你实际需要计算的是每个样本点对应的联合概率密度值,具体计算方案如下:

计算原理

你设定的(X,Y)服从参数为均值向量μ、协方差矩阵Σ的二维正态分布,对应的联合概率密度公式为:

$f(x,y) = \frac{1}{2\pi \sqrt{|\Sigma|}} \exp\left( -\frac{1}{2} \begin{bmatrix}x-\mu_1 \ y-\mu_2\end{bmatrix}^T \Sigma^{-1} \begin{bmatrix}x-\mu_1 \ y-\mu_2\end{bmatrix} \right)$
你可以手动代入每个样本计算,也可以直接调用统计库的内置PDF函数避免手动计算出错。

可运行代码(基于你的原有逻辑修正)

首先你原来的代码存在笔误:未定义的变量nBreadTypes应为2,对应二维变量维度,修正后完整代码如下:

using Distributions, LinearAlgebra

# 1. 生成100组相关场景样本
nScenarios = 100
Σ = [25 0.4; 0.4 4]
μ = [50, 30]
L = cholesky(Σ)
# 生成标准正态随机数矩阵
v = rand(Normal(0, 1), 2, nScenarios)
# 通过Cholesky分解得到相关样本
samples = L.U' * v .+ μ
X = samples[1, :]
Y = samples[2, :]

# 2. 计算每个样本对应的联合概率密度
# 构造二维正态分布对象
mvn_dist = MvNormal(μ, Σ)
# 逐个样本计算PDF值
sample_pdfs = [pdf(mvn_dist, [X[i], Y[i]]) for i in 1:nScenarios]

结果说明

  • 输出的sample_pdfs数组和样本数量一一对应,第i个值就是第i组(X[i],Y[i])样本的联合概率密度
  • 如果你需要将生成的场景作为离散场景做加权计算,直接将sample_pdfs做归一化处理后即可作为各场景的离散概率使用

内容的提问来源于stack exchange,提问作者devCharaf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 04:09:01