Оценщик плотности гауссовой смеси отличается от графика плотности
У меня есть набор данных 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()
Плотность и оценка плотности должны быть очень похожими, особенно когда выборок так много, как в моем примере.
Что я тут не так сделал?