【问题标题】:Transforming draws in Matlab from Gaussian mixture to uniform将 Matlab 中的绘图从高斯混合转换为均匀
【发布时间】:2017-12-30 00:29:30
【问题描述】:

考虑以下在 Matlab 中绘制的 2x1 向量,其概率分布是两个高斯分量的混合。

P=10^3; %number draws
v=1;

%First component
mu_a = [0,0.5];
sigma_a = [v,0;0,v];

%Second component
mu_b = [0,8.2];
sigma_b = [v,0;0,v];


%Combine    
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
RV_temp = random(obj,P);%Px2

% Transform each component of RV_temp into a uniform in [0,1] by estimating the cdf.
RV1=ksdensity(RV_temp(:,1), RV_temp(:,1),'function', 'cdf');
RV2=ksdensity(RV_temp(:,2), RV_temp(:,2),'function', 'cdf'); 

现在,如果我们通过做检查RV1RV2 是否均匀分布在[0,1]

ecdf(RV1)
ecdf(RV2)

我们可以看到RV1 均匀分布在[0,1] 上(经验cdf 接近45 度线),而RV2 不是。

我不明白为什么。似乎mu_a(2)mu_b(2)之间的距离越远,ksdensity在合理数量的平局中所做的工作就越差。为什么?

【问题讨论】:

    标签: matlab random


    【解决方案1】:

    当您混合了 N(0.5,v) 和 N(8.2,v) 时,生成数据的范围比您预期更接近的情况更大,例如 N(0,v) 和 N( 0,v),就像你在另一个维度中一样。然后你让ksdensity 使用这个范围内的 P 点来逼近一个函数。

    与标准线性插值一样,点越密集,函数的逼近越好(在范围内),这里的情况也是如此。因此,在 N(0.5,v) 和 N(8.2,v) 中,点是“稀疏的”(或者更稀疏,是一个词吗?),近似值比 N(0,v) 和 N(0 ,v) 点更密集的地方。

    作为一个小说明,您是否有任何理由不将ksdensity 直接应用于二元数据?此外,我无法复制您说5e2points 也不错的评论。最后的评论,1e3 通常比10^3 更受欢迎。

    【讨论】:

    • 谢谢。通过将 ksdensity 应用于双变量数据,您的意图是什么?您知道通过改变带宽来强制 ksdensity 做好工作的方法吗?
    • 没什么,特别是我只是好奇你为什么把它分成RV1和RV2。由于您无论如何手动指定点,我认为没有太大区别。关于带宽,那就是平滑窗口的大小,因为你的点太少,你可以尝试增加窗口,但是如果你增加太多它也会降低峰值(平均值)和因此只是引入了一个新的错误来源。我在大约带宽 = 1 时得到了一些不错的结果。
    • 对于带宽有什么“经验法则”可以提供帮助吗?
    • 嗯,作为最终的上界,那么它应该小于峰之间的距离,否则,这些将变成一个峰。从那我可能会把它当作差异的十分之一然后如果方差很小,则分离更清晰,你可以使窗口更大一点,反之亦然。这是平滑的标准问题,看起来更好,但细节丢失。所以问问你自己,“如果我把这个窗口变成 1 个值,这个窗口中是否有我不能失去的细节?”
    • 免责声明:这个问题并不完全正确,因为它不是使用的均值滤波器,但它给出了这个想法。
    【解决方案2】:

    我认为这只是关于您使用的样本数量。对于第一个示例,两个高斯的均值相对接近,因此一千个样本足以获得一个真正接近 U[0,1] cdf 的 cdf。但是,在第二个向量上,您的差异更大,并且需要更多样本。使用 100000 个样本,我得到了以下结果:

    1000 我得到了这个:

    这显然与 Uniform cdf 函数相去甚远。尝试将样本数量增加到一百万,然后检查结果是否再次接近。

    【讨论】:

    • 我不太明白这一点:是混合物特有的东西吗?因为如果我用mu=[0 10.678]sigma=[v 0; 0 v]从二元正态中抽取500个样本,那么即使mu中的两个值相距甚远,ksdensity也会做得很好。
    • 这里没有人可以帮忙?
    猜你喜欢
    • 2015-04-19
    • 1970-01-01
    • 2014-01-14
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    相关资源
    最近更新 更多