在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');
现在,如果我们通过
检查RV1
和RV2
是否均匀分布在[0,1]
上
ecdf(RV1)
ecdf(RV2)
我们可以看到RV1
均匀分布在[0,1]
上(经验cdf接近45度线),而RV2
则不然。
我不明白为什么。似乎mu_a(2)
和mu_b(2)
越远,ksdensity
以合理的抽奖次数完成的工作就越差。为什么呢?
答案 0 :(得分:2)
当你有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
?另外,如果您说5e2
分也很好,我也无法重现您的评论。最终评论1e3
通常优先于10^3
。
答案 1 :(得分:0)