У меня возникли проблемы с пониманием правильного способа исключить переменные из вероятностных распределений. Как я понимаю, правильный способ сделать это - суммировать по переменным, которые исключаются, оставляя только переменные для хранения. Для случая нормального распределения результат также является нормальным распределением. Я могу показать эту часть с помощью уравнений и интегралов, но когда я пытаюсь проверить python, я получаю неверные результаты - пик результирующего распределения намного выше.
Вот пример (код из Маргинализируйте поверхностный график и используйте на нем оценку плотности ядра (kde) )
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from scipy.stats import multivariate_normal, gaussian_kde
# Choose mean vector and variance-covariance matrix
mu = np.array([0, 0])
sigma = np.array([[2, 0], [0, 3]])
# Create surface plot data
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
rv = multivariate_normal(mean=mu, cov=sigma)
Z = np.array([rv.pdf(pair) for pair in zip(X.ravel(), Y.ravel())])
Z = Z.reshape(X.shape)
# Plot it
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
pos = ax.plot_surface(X, Y, Z)
plt.show()
Это делает график двух переменных нормальное распределение. Если я возьму сумму переменной x, чтобы получить предельное распределение
Zmarg_y = Z.sum(axis=0)
plt.plot(x, Zmarg_y)
plt.show()
, результат будет не таким, как если бы я просто отбросил переменную вместо marginalize out. Я попробовал это также с гауссовым распределением из 3 переменных, где я выделил 1 переменную, чтобы получить распределение из 2 переменных. Результат был также в более высоком масштабе. Есть ли проблема с нормализацией здесь? Я изучаю вероятность впервые и пытаюсь понять каждую деталь, и я думаю, что неправильно понимаю что-то важное в этом. Спасибо.