频率/概率分布之和与卷积

问题描述 投票:0回答:1

根据我的理解,独立随机变量的总和将与输入分布的卷积相同。

但是,在进行实验时,我发现变量总和的分布与卷积结果的分布不匹配。

例如:均匀分布的两个独立随机变量的总和应遵循三角形分布。但卷积则不然。我尝试使用

numpy.convolve

我错过了什么吗?

import numpy as np
import matplotlib.pyplot as plt

# Generate two uniform distributions
uniform1 = np.random.uniform(0, 1, 100000)
uniform2 = np.random.uniform(0, 1, 100000)

# Convolution of two uniform distributions
convolution_result = np.convolve(uniform1, uniform2, mode='full')

# Plot the histograms
plt.figure(figsize=(10, 5))

plt.subplot(1, 2, 1)
plt.hist(uniform1 + uniform2, bins=50, density=True, alpha=0.7)
plt.title('Sum of Uniform Distributions')

plt.subplot(1, 2, 2)
plt.hist(convolution_result, bins=50, density=True, alpha=0.7)
plt.title('Convolution of Uniform Distributions')

plt.show()
enter image description here

上下文

我有一个状态转换矩阵(概率),其中每个转换都与奖励/成本相关联,例如延迟、价格等。每个步骤可以与延迟的概率分布相关联,而不是恒定的延迟。

假设有一个起始状态和一个最终状态,我想找到总成本的分布。

在实践中,会存在大量每次转换具有不同概率的转换,并且成本/奖励可能具有任意频率分布,我应该能够找到总成本/奖励的直方图。

注意:我之前在数学社区问过这个问题,但到目前为止我无法理解回应。 https://math.stackexchange.com/questions/4855739/sum-of-Frequency-distributions-vs-convolutions

python numpy scipy probability convolution
1个回答
0
投票

通过生成两个样本、将它们相加并构建直方图来近似变量总和的分布是有效的,因此代码的第一部分是可以的。

第二部分是出了问题的地方。您需要做的不是对样本进行卷积并绘制结果直方图,而是对密度(或至少是其近似值)进行卷积并绘制结果本身,而不是直方图。

我无法让 matplotlib 在这个古老的系统上工作,但我想你可以在这个结果中看到三角密度是如何从卷积生成的。

>>> [1 for k in range(0, 10)]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>> np.convolve ([1 for k in range(0, 10)], [1 for k in range(0, 10)])
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10,  9,  8,  7,  6,  5,  4,  3,
        2,  1])

请注意,

[1 for k in range(0, 10)]
只是常数
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
——这是连续均匀分布的离散近似。

请注意,

convolve
的输出线性上升并线性下降——如果你绘制它,它看起来像一个三角形。

© www.soinside.com 2019 - 2024. All rights reserved.