Как выровнять свертку двух гистограмм - PullRequest
0 голосов
/ 10 января 2020

У меня есть две гистограммы, и я хочу найти свертку этих двух. При вычислении свертки и сравнении с отрисовкой выборок из суммы двух случайных переменных два PDF-файла не совпадают.

Я думаю, это потому, что я не выбрал действительный набор. На практике мне придется суммировать несколько сотен гистограмм, как это, поэтому мне понадобится некоторая общая формула для выравнивания гистограмм.

Это то, что я получил до сих пор.

from scipy.stats import norm
from matplotlib import pylab as plt
import numpy as np

mu_x, std_x = 100, 6
mu_y, std_y = 140, 7

x = np.random.normal(mu_x, std_x, 1000)
y = np.random.normal(mu_y, std_y, 1000)

nbins = np.linspace(0, 250, 1000)

pdf_x = np.histogram(x, density=True, bins=nbins)[0]
pdf_y = np.histogram(y, density=True, bins=nbins)[0]

pdf_sum = np.convolve(pdf_x, pdf_y)
pdf_sum = pdf_sum/pdf_sum.sum()

xpy = np.random.normal(mu_x, std_x, size=1000) + np.random.normal(mu_y, std_y, size=1000)

pdf_actual = plt.histogram(xpy, density=True)[0]
pdf_actual = pdf_actual/pdf_actual.sum()

plt.subplot(211)
plt.plot(pdf_sum)
plt.plot(pdf_actual, 'r')
plt.grid(True)

plt.subplot(212)
plt.plot(np.cumsum(pdf_sum))
plt.grid(True)
plt.show()

enter image description here

...