Пусть X, Y - 2 случайные величины с функциями плотности вероятности pdf1 и pdf2.
Z = X + Y
Тогда функция плотности вероятности Z задается сверткой pdf1 и pdf2.Поскольку мы не можем иметь дело с непрерывными распределениями, мы описываем непрерывные распределения и разбираемся с ними.
Чтобы найти свертку равномерного и нормального распределения, я придумал следующий код.
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats
from scipy import signal
uniform_dist = stats.uniform(loc=2, scale=3)
std = 0.25
normal_dist = stats.norm(loc=0, scale=std)
delta = 1e-4
big_grid = np.arange(-10,10,delta)
pdf1 = uniform_dist.pdf(big_grid)
print("Integral over uniform pdf: "+str(np.trapz(pdf1, big_grid)))
pdf2 = normal_dist.pdf(big_grid)
print("Integral over normal pdf: "+str(np.trapz(pdf2, big_grid)))
conv_pdf = signal.fftconvolve(pdf1,pdf2,'same')
print("Integral over convoluted pdf: "+str(np.trapz(conv_pdf, big_grid)))
plt.plot(big_grid,pdf1, label='Tophat')
plt.plot(big_grid,pdf2, label='Gaussian error')
plt.plot(big_grid,conv_pdf, label='Sum')
plt.legend(loc='best'), plt.suptitle('PDFs')
plt.show()
Это вывод, который я получаю.
Интеграл по униформе pdf: 0.9999999999976696
Интеграл по нормальному pdf: 1.0
Интеграл по запутанному pdf: 10000.0
Если свертка была правильной, я должен получить значение, близкое к 1, для «Интегральный над извитым pdf»Так что здесь не так?Есть ли лучший подход для решения этой проблемы?
Спасибо