在Matlab中命令`gmdistribution`?

时间:2017-09-13 16:45:35

标签: matlab

我对Matlab命令gmdistribution有一个问题,即从高斯混合物中生成绘制。

考虑以下代码从两个双变量法线的混合中绘制

clear
rng default

P=10^4; %number draws

%First component (X1,X2)
v=1;
mu_a = [0,2];
sigma_a = [v,0;0,v];

%Second component (Y1,Y2)
mu_b = [0,4];  
sigma_b = [v,0;0,v]; 


MU = [mu_a;mu_b];
SIGMA = cat(3,sigma_a,sigma_b);
w = ones(1,2)/2; %equal weight 0.5
obj = gmdistribution(MU,SIGMA,w);


%Draws of the mixture (R1,R2)
R = random(obj,P);%nx2

我们知道(R1, R2)可能是相关的。的确,我们可以证明

cov(R1, R2)=1/4*cov(X1,Y2)+1/4*cov(X2, Y1)

,因为

cov(W1,W2)=E(W1*W2)-E(W1)E(W2)
=1/4E(X1*X2)+1/4E(X1*Y2)+1/4E(Y1* X2)+1/4E(Y1* Y2)
- [1/2E(X1)+1/2E(Y1)][1/2E(X2)+1/2E(Y2)]
=1/4 cov(X1, Y2)+1/4cov(Y1, X2)

但是,如果我检查它们的相关性

corr(R(:,1), R(:,2))

我几乎为零(0.0024)

我检查了MU, SIGMA的许多其他值,但我找不到任何明显远离0的相关情况。这只是一个案例,还是命令gmdistribution强制(X1,X2)独立于(Y1,Y2)

1 个答案:

答案 0 :(得分:1)

我们可以用图来最好地说明问题。为了使效果更加明显,我将两个组件的方差从1降低到0.2(v = 0.2)。如果我们从混合模型中绘制一些实现,我们得到以下散点图:

enter image description here

每个“blob”对应一个组件,一个组件的中心位于0,2,另一个组件位于0,4。

现在,在此基础上,线性相关系数告诉我们如果W2增加1,W1增加了多少。但正如我们所看到的,在实现中没有这样的趋势;如果W1增加W2没有增加或减少。

这是由于两个分布在W1中具有相同的均值(0)。如果不是这种情况,例如mu_a = [0,2];mu_b = [2,5];,我们会得到以下情节:

enter image description here

在这里可以清楚地看到,如果W1很高,W2也可能非常高。这导致约0.87的高正相关。总结一下,如果mu_a(1) == mu_b(1)mu_a(2) == mu_b(2),则相关性将接近零。