我正在尝试生成 100 个场景 (X, Y) 的样本,其中 X 和 Y 均呈正态分布 X=N(50,5^2), Y=N(30,2^2) 并且 X 和 Y 相关Cov(X,Y)=0.4。
我已经能够使用 Cholesky 分解生成 100 个场景:
# We do a Cholesky decomposition to generate correlated scenarios
nScenarios = 10
Σ = [25 0.4; 0.4 4]
μ = [50, 30]
L = cholesky(Σ)
v = [rand(Normal(0, 1), nScenarios), rand(Normal(0, 1), nScenarios)]
X = reshape(zeros(nScenarios),1,nScenarios)
Y = reshape(zeros(nScenarios),1,nScenarios)
for i = 1:nScenarios
X[1, i] = sum(L.U[1, j] *v[j][i] for j = 1:nBreadTypes) + μ[1]
Y[1, i] = sum(L.U[2, j] *v[j][i] for j = 1:nBreadTypes) + μ[2]
end
但是我需要每个场景的概率,即 P(X=k and Y=p)。我的问题是,我们如何获得具有每个场景概率的特定分布的样本?
最佳答案
按照 BatWannaBe 的解释,通常我会这样做:
julia> using Distributions
julia> d = MvNormal([50.0, 30.0], [25.0 0.4; 0.4 4.0])
FullNormal(
dim: 2
μ: [50.0, 30.0]
Σ: [25.0 0.4; 0.4 4.0]
)
julia> point = rand(d)
2-element Vector{Float64}:
52.807189619051485
32.693811008760676
julia> pdf(d, point)
0.0056519503173830515
关于optimization - 分布样本概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69654013/