MATLAB:如何绘制 3 维的概率分布? (涉及贝叶斯法则)
MATLAB: How do I plot probability distributions in 3 dimensions? (involving Bayes rule)
为了给你一些背景信息,我正在尝试使用贝叶斯规则找出研究问题的最佳参数,我这里的问题与为这些参数生成先验概率分布有关。
假设我的两个参数是 A 和 B。我知道 A 的先验分布看起来像 Gamma 分布,而我的 B 分布看起来像归一化高斯分布。目标是在 x 和 y 轴上绘制这些分布,然后在 z 轴上绘制联合概率 P(A,B) = P(A)*P(B)。如果我能做到这一点,那么我就可以确定 A 和 B 的哪些值最有可能解决我的问题。
所以我输入 MATLAB
A = linspace(-50,50,1000);
B = A;
gamma = gampdf(A,5,5);
norm = normpdf(B,0,5);
[A B] = meshgrid(A,B);
Z = gamma'*norm;
surf(A,B,Z)
当我这样做时,我得到了这个:
旋转它也许能找到我正在寻找的东西,但由于它全是黑色,我无法确定。
有什么方法可以让它更容易区分并让网格工作? (我猜网格不起作用,因为我的 Z 不是 A 和 B 的函数,而是伽玛和范数的函数)。
任何帮助将不胜感激,因为我完全愿意接受其他方法。
网格线非常密集(每个维度有 1000 条线)以致于它看起来是黑色的。使用set
关闭网格线:
h = surf(A,B,Z);
set(h,'linestyle','none');
为了给你一些背景信息,我正在尝试使用贝叶斯规则找出研究问题的最佳参数,我这里的问题与为这些参数生成先验概率分布有关。
假设我的两个参数是 A 和 B。我知道 A 的先验分布看起来像 Gamma 分布,而我的 B 分布看起来像归一化高斯分布。目标是在 x 和 y 轴上绘制这些分布,然后在 z 轴上绘制联合概率 P(A,B) = P(A)*P(B)。如果我能做到这一点,那么我就可以确定 A 和 B 的哪些值最有可能解决我的问题。
所以我输入 MATLAB
A = linspace(-50,50,1000);
B = A;
gamma = gampdf(A,5,5);
norm = normpdf(B,0,5);
[A B] = meshgrid(A,B);
Z = gamma'*norm;
surf(A,B,Z)
当我这样做时,我得到了这个:
旋转它也许能找到我正在寻找的东西,但由于它全是黑色,我无法确定。
有什么方法可以让它更容易区分并让网格工作? (我猜网格不起作用,因为我的 Z 不是 A 和 B 的函数,而是伽玛和范数的函数)。
任何帮助将不胜感激,因为我完全愿意接受其他方法。
网格线非常密集(每个维度有 1000 条线)以致于它看起来是黑色的。使用set
关闭网格线:
h = surf(A,B,Z);
set(h,'linestyle','none');