0

我有一个数据集x,它是作为四种不同高斯混合的样本生成的:

mus = [60,150,300,500]
sigmas = [5,10,10,50]
Ns = [380,670,440,810]
Ns_rel = [i/sum(Ns) for i in Ns]
x = []
for mu,sig,N in zip(mus,sigmas,Ns): 
    x = np.append(x,st.norm(mu,sig).rvs(N))

通过seaborn.kdeplot(x)数据集的核密度图x产生:

在此处输入图像描述

高斯混合的“真实”密度图——然而——一个完全不同的图:

x_plot = np.arange(-200,1400)
y_plot = np.zeros(1600)
for mu,sig,N in zip(mus,sigmas,Ns_rel): 
    y_plot += st.norm(mu,sig).pdf(x_plot)*N

将样本的核密度估计与实际密度一起绘制会产生两个完全不同的图:

sns.kdeplot(x, label="Density Estimation of sample of Gaussian Mixture")
plt.plot(x_plot,y_plot, "-", label="Real density of Gaussian Mixture")
plt.legend()

在此处输入图像描述

密度和密度估计应该非常相似,特别是当我的示例中有这么多样本时。

我在这里做错了什么?

4

0 回答 0